Files
jiapu/dist/public/js/lay-module/location/location.js
T

26 lines
19 KiB
JavaScript

layui.define(["layer","locationX"],function(_){var a=layui.jquery,w=layui.layer,P="location",v=layui.locationX,C=`<div class="cur-load0"></div>
<div class="cur-load1"></div>
<div class="ew-map-select-tool" style="position: relative;">
经度:<input id="lng" class="layui-input inline-block" style="width: 190px;" autocomplete="off"/>
&nbsp;&nbsp;&nbsp;纬度:<input id="lat" class="layui-input inline-block" style="width: 190px;" autocomplete="off"/>
<button id="ew-map-select-btn-ok" class="layui-btn icon-btn pull-right" type="button"><i
class="layui-icon">&#xe605;</i>确定
</button>
</div>
<div id="map" style="width: 100%;height: calc(100% - 48px);"></div>`,x=`<div class="cur-load0"></div>
<div class="cur-load1"></div>
<div class="ew-map-select-tool" style="position: relative;">
搜索:<input id="ew-map-select-input-search" class="layui-input icon-search inline-block" style="width: 190px;" placeholder="输入关键字搜索" autocomplete="off" />
<div id="ew-map-select-tips" class="ew-map-select-search-list layui-hide" style="left: 0px;width: 248px;"></div>
&nbsp;&nbsp;经度:<input id="lng" class="layui-input inline-block" style="width: 190px;" autocomplete="off" />
&nbsp;&nbsp;&nbsp;纬度:<input id="lat" class="layui-input inline-block" style="width: 190px;" autocomplete="off" />
<button id="ew-map-select-btn-ok" class="layui-btn icon-btn pull-right" type="button"><i class="layui-icon">&#xe605;</i>确定</button>
</div>
<div class="map-select">
<div id="map" style="width: 600px;height: 505px;float: right;"></div>
<div id="ew-map-select-poi" class="layui-col-sm5 ew-map-select-search-list ew-map-select-poi">
</div>
</div>`,F=function(A){this.config={type:0,longitude:116.404,latitude:39.915,title:"定位",zoom:18,apiType:"baiduMap",coordinate:"baiduMap",mapType:0,searchKey:"村",init:function(){return{longitude:116.404,latitude:39.915}},success:function(){},onClickTip:function(e){console.log(e)}},this.config=a.extend(this.config,A);var k=this.config.init();if(this.config.longitude=k.longitude,this.config.latitude=k.latitude,this.lng=this.config.longitude,this.lat=this.config.latitude,this.initCoordinate=function(e,t){var o=this;if(o.config.apiType==o.config.coordinate)return{lng:e,lat:t};if(o.config.apiType=="baiduMap"&&o.config.coordinate=="tiandiMap"){var i=v.WGS84_bd(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="tiandiMap"&&o.config.coordinate=="baiduMap"){var i=v.bd_WGS84(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="gaodeMap"&&o.config.coordinate=="baiduMap"){var i=v.bd_decrypt(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="baiduMap"&&o.config.coordinate=="gaodeMap"){var i=v.bd_encrypt(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="gaodeMap"&&o.config.coordinate=="tiandiMap"){var i=v.gcj_encrypt(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="tiandiMap"&&o.config.coordinate=="gaodeMap"){var i=v.gcj_decrypt(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}},this.config.longitude&&this.config.latitude&&this.config.mapType!=this.config.coordinate){var b=this.initCoordinate(this.config.longitude,this.config.latitude);this.config.longitude=b.lng,this.config.latitude=b.lat}this.transformCoordinate=function(e,t){var o=this;if(o.config.apiType==o.config.coordinate)return{lng:e,lat:t};if(o.config.apiType=="baiduMap"&&o.config.coordinate=="tiandiMap"){var i=v.bd_WGS84(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="tiandiMap"&&o.config.coordinate=="baiduMap"){var i=v.WGS84_bd(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="gaodeMap"&&o.config.coordinate=="baiduMap"){var i=v.bd_encrypt(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="baiduMap"&&o.config.coordinate=="gaodeMap"){var i=v.bd_decrypt(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="gaodeMap"&&o.config.coordinate=="tiandiMap"){var i=v.gcj_decrypt(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}else if(o.config.apiType=="tiandiMap"&&o.config.coordinate=="gaodeMap"){var i=v.gcj_encrypt(t,e);return{lng:i.lon.toFixed(5),lat:i.lat.toFixed(5)}}},this.openBaiduMap=function(){var e=this,t;e.config.mapType==1?t=new BMap.Map("map",{enableMapClick:!1,mapType:BMAP_SATELLITE_MAP}):e.config.mapType==2?t=new BMap.Map("map",{enableMapClick:!1,mapType:BMAP_HYBRID_MAP}):t=new BMap.Map("map",{enableMapClick:!1,mapType:BMAP_NORMAL_MAP}),t.enableScrollWheelZoom();var o=new BMap.Point(e.config.longitude?e.config.longitude:116.404,e.config.latitude?e.config.latitude:39.915);t.centerAndZoom(o,e.config.zoom),t.setDefaultCursor("url('"+layui.cache.base+"location/img/location.cur') 17 35,auto");var i=new BMap.Marker(t.getCenter());t.addOverlay(i),t.addEventListener("click",function(n){var c=e.transformCoordinate(n.point.lng,n.point.lat);a("#lng").val(c.lng),a("#lat").val(c.lat),e.lng=c.lng,e.lat=c.lat;var r=new BMap.Point(n.point.lng,n.point.lat);t.removeOverlay(i),i=new BMap.Marker(r),t.addOverlay(i),e.config.type==1&&l(n.point.lng,n.point.lat)});var f=function(n,c){var r=e.transformCoordinate(n,c);a("#lng").val(r.lng),a("#lat").val(r.lat),e.lng=r.lng,e.lat=r.lat;var s=new BMap.Point(n,c);t.removeOverlay(i),i=new BMap.Marker(s),t.addOverlay(i),e.config.type==1&&l(n,c)},l=function(n,c){var r=new BMap.Point(n,c),s=new BMap.LocalSearch(r,{pageCapacity:10,onSearchComplete:function(p){var d="";a.each(p,function(u,g){a.each(g.Hr,function(h,m){d+='<div data-lng="'+m.point.lng+'" data-lat="'+m.point.lat+'" data-title="'+m.title+'" data-address="'+m.address+'" class="ew-map-select-search-list-item">',d+=' <div class="ew-map-select-search-list-item-title">'+m.title+"</div>",d+=' <div class="ew-map-select-search-list-item-address">'+m.address+"</div>",d+=' <div class="ew-map-select-search-list-item-icon-ok layui-hide"><i class="layui-icon layui-icon-ok-circle"></i></div>',d+="</div>"})}),a("#ew-map-select-poi").html(d)}});s.searchNearby([e.config.searchKey,"镇","街道","店"],r,1e3)};e.config.type==1&&e.initBaiduSearch(t,l,f)},this.initBaiduSearch=function(e,t,o){var i=this;t(i.config.longitude?i.config.longitude:116.404,i.config.latitude?i.config.latitude:39.915),a("#ew-map-select-poi").off("click").on("click",".ew-map-select-search-list-item",function(){a("#ew-map-select-tips").addClass("layui-hide"),a("#ew-map-select-poi .ew-map-select-search-list-item-icon-ok").addClass("layui-hide"),a(this).find(".ew-map-select-search-list-item-icon-ok").removeClass("layui-hide"),a("#ew-map-select-center-img").removeClass("bounceInDown"),setTimeout(function(){a("#ew-map-select-center-img").addClass("bounceInDown")});var l=a(this).data("lng"),n=a(this).data("lat"),c=new BMap.Point(l,n);e.centerAndZoom(c,e.getZoom()),o(l,n);var r=a(this).data("title"),s=a(this).data("address");i.config.onClickTip({title:r,address:s,lng:l,lat:n})});var f=a("#ew-map-select-input-search");f.off("input").on("input",function(){var l=a(this).val(),n=a("#ew-map-select-tips");l||(n.html(""),n.addClass("layui-hide"));var c=new BMap.LocalSearch("全国",{pageCapacity:10,onSearchComplete:function(r){if(r!=null){var s="";a.each(r.Hr,function(p,d){s+='<div data-lng="'+d.point.lng+'" data-lat="'+d.point.lat+'" data-title="'+d.title+'" data-address="'+d.address+'" class="ew-map-select-search-list-item">',s+=' <div class="ew-map-select-search-list-item-icon-search"><i class="layui-icon layui-icon-search"></i></div>',s+=' <div class="ew-map-select-search-list-item-title">'+d.title+"</div>",s+=' <div class="ew-map-select-search-list-item-address">'+d.address+"</div>",s+="</div>"}),n.html(s),r.Hr.length===0?a("#ew-map-select-tips").addClass("layui-hide"):a("#ew-map-select-tips").removeClass("layui-hide")}}});c.search(l)}),f.off("blur").on("blur",function(){var l=a(this).val(),n=a("#ew-map-select-tips");l||(n.html(""),n.addClass("layui-hide"))}),f.off("focus").on("focus",function(){var l=a(this).val();l&&a("#ew-map-select-tips").removeClass("layui-hide")}),a("#ew-map-select-tips").off("click").on("click",".ew-map-select-search-list-item",function(){a("#ew-map-select-tips").addClass("layui-hide");var l=a(this).data("lng"),n=a(this).data("lat"),c=new BMap.Point(l,n);e.centerAndZoom(c,e.getZoom()),o(l,n);var r=a(this).data("title"),s=a(this).data("address");i.config.onClickTip({title:r,address:s,lng:l,lat:n})})},this.openTiandiMap=function(){var e=this,t=new T.Map("map");e.config.mapType==1?t.setMapType(TMAP_SATELLITE_MAP):e.config.mapType==2?t.setMapType(TMAP_HYBRID_MAP):t.setMapType(TMAP_NORMAL_MAP),t.enableScrollWheelZoom(!0);var o=new T.LngLat(e.config.longitude?e.config.longitude:116.404,e.config.latitude?e.config.latitude:39.915);t.centerAndZoom(o,e.config.zoom);var i=new T.Marker(o);t.addOverLay(i),window.T.MarkTool===void 0?setTimeout(function(){f()},200):f();function f(){var c=new T.MarkTool(t,{follow:!0});c.open();var r=function(s){a.each(t.getOverlays(),function(d,u){u!=s.currentMarker&&t.removeOverLay(u)});var p=e.transformCoordinate(s.currentLnglat.getLng(),s.currentLnglat.getLat());a("#lng").val(p.lng),a("#lat").val(p.lat),e.lng=p.lng,e.lat=p.lat,c=new T.MarkTool(t,{follow:!0}),c.open(),c.addEventListener("mouseup",r),e.config.type==1&&n(s.currentLnglat.getLng(),s.currentLnglat.getLat())};c.addEventListener("mouseup",r)}var l=function(c,r){a.each(t.getOverlays(),function(u,g){t.removeOverLay(g)});var s=e.transformCoordinate(c,r);a("#lng").val(s.lng),a("#lat").val(s.lat),e.lng=s.lng,e.lat=s.lat;var p=new T.LngLat(c,r),d=new T.Marker(p);t.addOverLay(d),e.config.type==1&&n(c,r)},n=function(c,r){var s=new T.LngLat(c,r),p=new T.LocalSearch(t,{pageCapacity:10,onSearchComplete:function(d){var u="";a.each(d.getPois(),function(g,h){var m=h.lonlat.split(" ");u+='<div data-lng="'+m[0]+'" data-lat="'+m[1]+'" data-title="'+h.name+'" data-address="'+h.address+'" class="ew-map-select-search-list-item">',u+=' <div class="ew-map-select-search-list-item-title">'+h.name+"</div>",u+=' <div class="ew-map-select-search-list-item-address">'+h.address+"</div>",u+=' <div class="ew-map-select-search-list-item-icon-ok layui-hide"><i class="layui-icon layui-icon-ok-circle"></i></div>',u+="</div>"}),a("#ew-map-select-poi").html(u)}});p.setQueryType(1),p.searchNearby(e.config.searchKey,s,1e3)};e.config.type==1&&e.initTiandiSearch(t,n,l)},this.initTiandiSearch=function(e,t,o){var i=this;t(i.config.longitude?i.config.longitude:116.404,i.config.latitude?i.config.latitude:39.915),a("#ew-map-select-poi").off("click").on("click",".ew-map-select-search-list-item",function(){a("#ew-map-select-tips").addClass("layui-hide"),a("#ew-map-select-poi .ew-map-select-search-list-item-icon-ok").addClass("layui-hide"),a(this).find(".ew-map-select-search-list-item-icon-ok").removeClass("layui-hide"),a("#ew-map-select-center-img").removeClass("bounceInDown"),setTimeout(function(){a("#ew-map-select-center-img").addClass("bounceInDown")});var l=a(this).data("lng"),n=a(this).data("lat"),c=new T.LngLat(l,n);e.centerAndZoom(c,e.getZoom()),o(l,n);var r=a(this).data("title"),s=a(this).data("address");i.config.onClickTip({title:r,address:s,lng:l,lat:n})});var f=a("#ew-map-select-input-search");f.off("input").on("input",function(){var l=a(this).val(),n=a("#ew-map-select-tips");l||(n.html(""),n.addClass("layui-hide"));var c=new T.LocalSearch(e,{pageCapacity:10,onSearchComplete:function(r){if(r!=null){var s="";a.each(r.getPois(),function(p,d){var u=d.lonlat.split(" ");s+='<div data-lng="'+u[0]+'" data-lat="'+u[1]+'" data-title="'+d.name+'" data-address="'+d.address+'" class="ew-map-select-search-list-item">',s+=' <div class="ew-map-select-search-list-item-title">'+d.name+"</div>",s+=' <div class="ew-map-select-search-list-item-address">'+d.address+"</div>",s+=' <div class="ew-map-select-search-list-item-icon-ok layui-hide"><i class="layui-icon layui-icon-ok-circle"></i></div>',s+="</div>"}),n.html(s),r.getPois().length===0?a("#ew-map-select-tips").addClass("layui-hide"):a("#ew-map-select-tips").removeClass("layui-hide")}}});c.setQueryType(1),c.search(l)}),f.off("blur").on("blur",function(){var l=a(this).val(),n=a("#ew-map-select-tips");l||(n.html(""),n.addClass("layui-hide"))}),f.off("focus").on("focus",function(){var l=a(this).val();l&&a("#ew-map-select-tips").removeClass("layui-hide")}),a("#ew-map-select-tips").off("click").on("click",".ew-map-select-search-list-item",function(){a("#ew-map-select-tips").addClass("layui-hide");var l=a(this).data("lng"),n=a(this).data("lat"),c=new T.LngLat(l,n);e.centerAndZoom(c,e.getZoom()),o(l,n);var r=a(this).data("title"),s=a(this).data("address");i.config.onClickTip({title:r,address:s,lng:l,lat:n})})},this.openGaodeMap=function(){var e=this,t=[];if(e.config.mapType=="1"){var o=new AMap.TileLayer.Satellite;t.push(o)}else if(e.config.mapType=="2"){var o=new AMap.TileLayer.Satellite,i=new AMap.TileLayer.RoadNet;t.push(o),t.push(i)}else{var f=new AMap.TileLayer;t.push(f)}var l=new AMap.Map("map",{resizeEnable:!0,zoom:e.config.zoom,center:[e.config.longitude?e.config.longitude:116.404,e.config.latitude?e.config.latitude:39.915],layers:t});l.setDefaultCursor("url('"+layui.cache.base+"location/img/location_blue.cur') 17 35,auto");var n=new AMap.Marker({icon:"https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",position:[e.config.longitude?e.config.longitude:116.404,e.config.latitude?e.config.latitude:39.915]});l.add(n);var c=function(p){l.clearMap();var d=e.transformCoordinate(p.lng,p.lat);a("#lng").val(d.lng),a("#lat").val(d.lat),e.lng=d.lng,e.lat=d.lat;var u=new AMap.Marker({icon:"https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",position:[p.lng,p.lat]});l.add(u),e.config.type==1&&s(p.lng,p.lat)},r=function(p){c({lng:p.lnglat.getLng(),lat:p.lnglat.getLat()})};l.on("click",r);var s=function(p,d){AMap.service(["AMap.PlaceSearch"],function(){var u=new AMap.PlaceSearch({type:"",pageSize:10,pageIndex:1}),g=[p,d];u.searchNearBy("",g,1e3,function(h,m){if(h==="complete"){for(var B=m.poiList.pois,M="",L=0;L<B.length;L++){var y=B[L];y.location!==void 0&&(M+='<div data-lng="'+y.location.lng+'" data-lat="'+y.location.lat+'" data-title="'+y.name+'" data-address="'+y.address+'" class="ew-map-select-search-list-item">',M+=' <div class="ew-map-select-search-list-item-title">'+y.name+"</div>",M+=' <div class="ew-map-select-search-list-item-address">'+y.address+"</div>",M+=' <div class="ew-map-select-search-list-item-icon-ok layui-hide"><i class="layui-icon layui-icon-ok-circle"></i></div>',M+="</div>")}a("#ew-map-select-poi").html(M)}})})};e.config.type==1&&e.initGaodeSearch(l,c,s)},this.initGaodeSearch=function(e,t,o){var i=this;a("#ew-map-select-poi").off("click").on("click",".ew-map-select-search-list-item",function(){a("#ew-map-select-tips").addClass("layui-hide"),a("#ew-map-select-poi .ew-map-select-search-list-item-icon-ok").addClass("layui-hide"),a(this).find(".ew-map-select-search-list-item-icon-ok").removeClass("layui-hide"),a("#ew-map-select-center-img").removeClass("bounceInDown"),setTimeout(function(){a("#ew-map-select-center-img").addClass("bounceInDown")});var l=a(this).data("lng"),n=a(this).data("lat"),c=a(this).find(".ew-map-select-search-list-item-title").text(),s=a(this).find(".ew-map-select-search-list-item-address").text();e.setZoomAndCenter(e.getZoom(),[l,n]),t({lng:l,lat:n});var r=a(this).data("title"),s=a(this).data("address");i.config.onClickTip({title:r,address:s,lng:l,lat:n})}),o(i.config.longitude?i.config.longitude:116.404,i.config.latitude?i.config.latitude:39.915);var f=a("#ew-map-select-input-search");f.off("input").on("input",function(){var l=a(this).val(),n=a("#ew-map-select-tips");l||(n.html(""),n.addClass("layui-hide")),AMap.plugin("AMap.Autocomplete",function(){var c=new AMap.Autocomplete({city:"全国"});c.search(l,function(r,s){if(s.tips){for(var p=s.tips,d="",u=0;u<p.length;u++){var g=p[u];g.location!==void 0&&(d+='<div data-lng="'+g.location.lng+'" data-lat="'+g.location.lat+'" data-title="'+g.name+'" data-address="'+g.address+'" class="ew-map-select-search-list-item">',d+=' <div class="ew-map-select-search-list-item-icon-search"><i class="layui-icon layui-icon-search"></i></div>',d+=' <div class="ew-map-select-search-list-item-title">'+g.name+"</div>",d+=' <div class="ew-map-select-search-list-item-address">'+g.address+"</div>",d+="</div>")}n.html(d),p.length===0?a("#ew-map-select-tips").addClass("layui-hide"):a("#ew-map-select-tips").removeClass("layui-hide")}else n.html(""),n.addClass("layui-hide")})})}),f.off("blur").on("blur",function(){var l=a(this).val(),n=a("#ew-map-select-tips");l||(n.html(""),n.addClass("layui-hide"))}),f.off("focus").on("focus",function(){var l=a(this).val();l&&a("#ew-map-select-tips").removeClass("layui-hide")}),a("#ew-map-select-tips").off("click").on("click",".ew-map-select-search-list-item",function(){a("#ew-map-select-tips").addClass("layui-hide");var l=a(this).data("lng"),n=a(this).data("lat");e.setZoomAndCenter(e.getZoom(),[l,n]),t({lng:l,lat:n});var c=a(this).data("title"),r=a(this).data("address");i.config.onClickTip({title:c,address:r,lng:l,lat:n})})},this.openMap=function(){var e=this;if(e.config.apiType=="baiduMap")var t=w.open({type:1,area:["850px","600px"],title:e.config.title,content:e.config.type==0?C:x,success:function(){a("#lng").val(e.lng),a("#lat").val(e.lat),window.BMap===void 0?a.getScript("http://api.map.baidu.com/getscript?v=2.0&ak=tCNPmUfNmy4nTR3VYW71a6IgyWMaOSUb&services=&t=20200824135534",function(){e.openBaiduMap()}):e.openBaiduMap(),a("#ew-map-select-btn-ok").on("click",function(){e.config.success({lng:e.lng?e.lng:116.404,lat:e.lat?e.lat:39.915}),w.close(t)})}});else if(e.config.apiType=="tiandiMap")var t=w.open({type:1,area:["850px","600px"],title:e.config.title,content:e.config.type==0?C:x,success:function(){a("#lng").val(e.lng),a("#lat").val(e.lat),window.T===void 0?a.getScript("http://api.tianditu.gov.cn/api?v=4.0&tk=a8718394c98e9ae85b0d7af352653ce2&callback=init",function(){e.openTiandiMap()}):e.openTiandiMap(),a("#ew-map-select-btn-ok").on("click",function(){e.config.success({lng:e.lng?e.lng:116.404,lat:e.lat?e.lat:39.915}),w.close(t)})}});else if(e.config.apiType=="gaodeMap")var t=w.open({type:1,area:["850px","600px"],title:e.config.title,content:e.config.type==0?C:x,success:function(){a("#lng").val(e.lng),a("#lat").val(e.lat),window.AMap===void 0?a.getScript("https://webapi.amap.com/maps?v=1.4.14&key=006d995d433058322319fa797f2876f5",function(){e.openGaodeMap()}):e.openGaodeMap(),a("#ew-map-select-btn-ok").on("click",function(){e.config.success({lng:e.lng?e.lng:116.404,lat:e.lat?e.lat:39.915}),w.close(t)})}})}};layui.link(layui.cache.base+"location/location.css?v="+new Date().getTime());var S=function(){};S.prototype.render=function(A,k){a(A).on("click",function(){var b=new F(k);b.openMap()})};var O=new S;_(P,O)});