czmap
Version:
- 提供统一的API 实现不同的地图(百度、高德、腾讯)应用 丝滑切换 - 主要实现功能 - 基础地图展示 - 路径 - 围栏 #### 相关API使用
16 lines (13 loc) • 14.1 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).CMap=e()}(this,(function(){"use strict";function t(){var t=window.BMapGL||{},e=window.BMapGLLib||{},o=window.gcoord||{},i=this.$options,n=i.points,a=void 0===n?[116.404,39.915]:n,r=i.areaName,l=i.poiText,s=void 0===l||l,p=i.poiIcon,d=void 0===p||p,c=i.zoom,g=void 0===c?10:c,v=i.drivingPath,h=void 0===v?[]:v,y=i.enableScrollWheel,f=void 0!==y&&y,m=i.isScaleCtrl,u=void 0!==m&&m,w=i.isZoomCtrl,C=void 0!==w&&w,k=i.navi3DCtrl,M=void 0!==k&&k,b=i.enclosure,L=void 0===b?{}:b,A=i.coordType,F=i.drivingType,O=new t.Map(i.id),P=a;function T(t){var e=[];return t.forEach((function(t){var o=x([t.lng,t.lat]);e.push({lng:o[0],lat:o[1]})})),e}function x(t){return o.transform(t,o.GCJ02,o.BD09)}A||(P=x(a),h&&(h=T(h)),L&&L.point&&(L.point=x(L.point)),L&&L.points&&(L.points=T(L.points)));var B=this.$options.points&&2===a.length?new t.Point(P[0],P[1]):null;if(O.centerAndZoom(null!=B?B:r,g),O.enableScrollWheelZoom(f),O.setDisplayOptions({poiText:s,poiIcon:d}),M){var S=new t.NavigationControl3D;O.addControl(S)}if(u){var W=new t.ScaleControl;O.addControl(W)}if(C){var E=new t.ZoomControl;O.addControl(E)}if(h&&h.length>=2){var D=[h[0].lng,h[0].lat],z=[h.at(-1).lng,h.at(-1).lat];if(F&&"path"===F){var I=new t.Point(D[0],D[1]),Z=new t.Point(z[0],z[1]);new t.DrivingRoute(O,{renderOptions:{map:O,autoViewport:!0}}).search(I,Z)}else{O.centerAndZoom(new t.Point(D[0],D[1]));for(var _=[],G=0;h.length>G;G++)_.push(new t.Point(h[G].lng,h[G].lat));var $=new t.Polyline(_,{strokeColor:"#6699FF",strokeWeight:6}),j=new t.Marker(new t.Point(D[0],D[1]),{title:"起点"}),V=new t.Marker(new t.Point(z[0],z[1]),{title:"终点"});setTimeout((function(){new e.TrackAnimation(O,$,{overallView:!0,tilt:30,duration:4e3,delay:300}).start(),O.addOverlay(j),O.addOverlay(V)}),1e3)}}if(L&&"circle"===L.type){var R=L.fillColor,N=void 0===R?"#6699FF":R,q=L.fillOpacity,U=void 0===q?.3:q,H=L.strokeColor,J=void 0===H?"#6699FF":H,K=L.strokeWeight,Q=void 0===K?2:K,Y=L.strokeOpacity,X=void 0===Y?1:Y,tt=L.point,et=L.radius,ot=new t.Circle(new t.Point(tt[0],tt[1]),et,{fillColor:N,fillOpacity:U,strokeColor:J,strokeWeight:Q,strokeOpacity:X});!function(t,e){var o=20,i=20;for(;e>i;)i*=2,o--;O.centerAndZoom(t,o+1)}(new t.Point(tt[0],tt[1]),et),O.addOverlay(ot)}else if(L&&"polygon"===L.type){var it=L.fillColor,nt=(N=void 0===it?"#6699FF":it,L.fillOpacity),at=(U=void 0===nt?.3:nt,L.strokeColor),rt=(J=void 0===at?"#6699FF":at,L.strokeWeight),lt=(Q=void 0===rt?2:rt,L.strokeOpacity),st=(X=void 0===lt?1:lt,L.points),pt=void 0===st?[]:st,dt=[];for(G=0;pt.length>G;G++)dt.push(new t.Point(pt[G].lng,pt[G].lat));var ct=new t.Polygon(dt,{fillColor:N,fillOpacity:U,strokeColor:J,strokeWeight:Q,strokeOpacity:X});St(dt),O.addOverlay(ct)}else if(L&&"district"===L.type){var gt=L.fillColor,vt=void 0===gt?"#6699FF":gt,ht=L.fillOpacity,yt=void 0===ht?.3:ht,ft=L.strokeColor,mt=void 0===ft?"#6699FF":ft,ut=L.strokeWeight,wt=void 0===ut?2:ut,Ct=L.strokeOpacity,kt=(X=void 0===Ct?1:Ct,L.proname),Mt=void 0===kt?"北京市":kt;(new t.Boundary).get(Mt,(function(t){St(t.boundaries[0].split(";").map((function(t){var e=t.split(",");return{lng:e[0],lat:e[1]}})))})),setTimeout((function(){var e=new t.DistrictLayer({name:"(".concat(Mt,")"),fillColor:vt,strokeWeight:wt,strokeColor:mt,fillOpacity:yt});O.addDistrictLayer(e)}),1200)}else if(L&&"polyline"===L.type){var bt=L.strokeColor,Lt=(J=void 0===bt?"#6699FF":bt,L.strokeWeight),At=(Q=void 0===Lt?4:Lt,L.strokeOpacity),Ft=(X=void 0===At?1:At,L.points),Ot=L.offset,Pt=[];for(G=0;Ft.length>G;G++)Pt.push(new t.Point(Ft[G].lng,Ft[G].lat));var Tt={position:new t.Point(Ft[0].lng,Ft[0].lat),offset:new t.Size(30,-30)},xt=new t.Label("线性覆盖辐射范围: ".concat(Ot," 米"),Tt);xt.setStyle({color:"#6699FF",borderRadius:"5px",borderColor:"#ccc",padding:"5px 15px",fontSize:"14px",height:"28px",lineHeight:"30px",fontFamily:"微软雅黑"});var Bt=new t.Polyline(Pt,{strokeColor:J,strokeWeight:Q,strokeOpacity:X});St(Ft),O.addOverlay(xt),O.addOverlay(Bt)}function St(t){var e=O.getViewport(t);O.centerAndZoom(e.center,e.zoom)}}function e(){var t=window.AMap||{},e=window.AMapUI||{},o=this.$options,i=o.points,n=o.zoom,a=o.isScaleCtrl,r=void 0!==a&&a,l=o.isZoomCtrl,s=void 0!==l&&l,p=o.navi3DCtrl,d=void 0!==p&&p,c=o.enclosure,g=void 0===c?{}:c,v=o.drivingType,h=o.drivingPath,y=void 0===h?[]:h,f=new t.Map(o.id,{center:void 0===i?[116.404,39.915]:i,resizeEnable:!0,zoom:void 0===n?10:n});if(r&&f.addControl(new t.Scale({visible:r})),s&&f.addControl(new t.ToolBar({visible:s,position:{bottom:"60px",right:"40px"}})),d&&f.addControl(new t.MapType),"path"===v&&y.length>2&&t.plugin(["AMap.DragRoute"],(function(){for(var e=[],o=0;y.length>o;o++)e.push([y[o].lng,y[o].lat]);new t.DragRoute(f,e,t.DrivingPolicy.LEAST_FEE).search()})),y&&y.length>2){for(var m=[],u=0;y.length>u;u++)m.push(new t.LngLat(y[u].lng,y[u].lat));var w=new t.Polyline({path:m,strokeColor:"#6699FF",strokeWeight:6,strokeOpacity:.9,zIndex:50,bubble:!0}),C=new t.Icon({size:new t.Size(25,34),image:"//a.amap.com/jsapi_demos/static/demo-center/icons/dir-marker.png",imageSize:new t.Size(135,40),imageOffset:new t.Pixel(-9,-3)}),k=new t.Marker({position:new t.LngLat(y[0].lng,y[0].lat),icon:C,offset:new t.Pixel(-13,-30)}),M=new t.Icon({size:new t.Size(25,34),image:"//a.amap.com/jsapi_demos/static/demo-center/icons/dir-marker.png",imageSize:new t.Size(135,40),imageOffset:new t.Pixel(-95,-3)}),b=y.at(-1),L=new t.Marker({position:new t.LngLat(b.lng,b.lat),icon:M,offset:new t.Pixel(-13,-30)});f.add(k),f.add(w),f.add(L),f.setFitView()}if(g&&g.points&&"polygon"===g.type){var A=g.points,F=g.fillColor,O=void 0===F?"#6699FF":F,P=g.fillOpacity,T=void 0===P?.3:P,x=g.strokeColor,B=void 0===x?"#6699FF":x,S=g.borderWeight,W=void 0===S?2:S;for(m=[],u=0;A.length>u;u++)m.push(new t.LngLat(A[u].lng,A[u].lat));var E=new t.Polygon({path:m,fillColor:O,borderWeight:W,strokeColor:B,fillOpacity:T});f.add(E),f.setFitView()}if(g&&g.point&&"circle"===g.type){var D=g.radius,z=g.fillColor,I=(O=void 0===z?"#6699FF":z,g.fillOpacity),Z=(T=void 0===I?.3:I,g.strokeColor),_=(B=void 0===Z?"#6699FF":Z,g.strokeWeight),G=void 0===_?2:_,$=new t.Circle({center:new t.LngLat((it=g.point)[0],it[1]),radius:D,fillColor:O,fillOpacity:T,strokeColor:B,strokeWeight:G});f.add($),f.setFitView()}if(g&&"district"===g.type){var j=g.fillColor,V=void 0===j?"#6699FF":j,R=g.fillOpacity,N=void 0===R?.3:R,q=g.strokeColor,U=void 0===q?"#6699FF":q,H=g.strokeWeight,J=void 0===H?1:H,K=g.strokeOpacity,Q=void 0===K?1:K,Y=g.adcodes;e.loadUI(["geo/DistrictExplorer"],(function(t){var e=new t({map:f});e.loadMultiAreaNodes(Y,(function(t,o){e.clearFeaturePolygons();for(var i=0,n=o.length;n>i;i++)e.renderSubFeatures(o[i],(function(t,e){return{cursor:"default",bubble:!0,strokeColor:U,strokeOpacity:Q,strokeWeight:J,fillColor:V,fillOpacity:N}}));f.setFitView(e.getAllFeaturePolygons())}))}))}if(g&&g.points&&"polyline"===g.type){var X=g.strokeColor,tt=(B=void 0===X?"#6699FF":X,g.strokeWeight),et=(G=void 0===tt?4:tt,g.points),ot=g.offset,it=[];for(u=0;et.length>u;u++)it.push(new t.LngLat(et[u].lng,et[u].lat));var nt=new t.Text({map:f,text:"线性覆盖辐射范围: ".concat(ot," 米"),position:new t.LngLat(et[0].lng,et[0].lat),style:{borderRadius:"5px",borderColor:"#ccc",padding:"0px 15px",fontSize:"14px",height:"28px",lineHeight:"30px",fontFamily:"微软雅黑"}});w=new t.Polyline({path:it,borderWeight:G,strokeColor:B,color:"#6699FF"});f.add(nt),f.add(w),f.setFitView()}}
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */function o(t,e,o){if(o||2===arguments.length)for(var i,n=0,a=e.length;a>n;n++)!i&&n in e||(i||(i=Array.prototype.slice.call(e,0,n)),i[n]=e[n]);return t.concat(i||Array.prototype.slice.call(e))}function i(){var t=window.TMap||{},e=this.$options,i=e.id,n=void 0===i?"map":i,a=e.points,r=void 0===a?[116.307503,39.984104]:a,l=e.zoom,s=void 0===l?10:l,p=e.isScaleCtrl,d=void 0!==p&&p,c=e.isZoomCtrl,g=void 0!==c&&c,v=e.navi3DCtrl,h=void 0!==v&&v,y=e.drivingPath,f=void 0===y?[]:y,m=e.enclosure,u=void 0===m?{}:m,w=new t.LatLng(r[1],r[0]),C=new t.Map(document.getElementById(n),{center:w,zoom:s});if(g||C.removeControl(t.constants.DEFAULT_CONTROL_ID.ZOOM),d||C.removeControl(t.constants.DEFAULT_CONTROL_ID.SCALE),h||C.removeControl(t.constants.DEFAULT_CONTROL_ID.ROTATION),f&&f.length>=2){var k=[];f.forEach((function(e){k.push(new t.LatLng(e.lat,e.lng))}));var M=f.at(-1),b=new t.LatLng(f[0].lat,f[0].lng),L=new t.LatLng(M.lat,M.lng);new t.MultiMarker({id:"marker-layer",map:C,styles:{start:new t.MarkerStyle({width:25,height:35,anchor:{x:16,y:32},src:"https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/start.png"}),end:new t.MarkerStyle({width:25,height:35,anchor:{x:16,y:32},src:"https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/end.png"})},geometries:[{id:"start",styleId:"start",position:b},{id:"end",styleId:"end",position:L}]}),new t.MultiPolyline({id:"polyline-layer",map:C,styles:{style_blue:new t.PolylineStyle({color:"#3777FF",width:6,lineCap:"round"})},geometries:[{id:"pl_1",styleId:"style_blue",paths:k}]}),S(B(k))}if(u&&u.points){var A=u.radius,F=u.strokeColor,O=u.strokeWeight,P=[];u.points.forEach((function(e){P.push(new t.LatLng(e.lat,e.lng))})),new t.MultiPolygon({id:"polygon-layer",map:C,styles:{polygon:new t.PolygonStyle({color:"rgba(0,125,255,0.3)",showBorder:!0,borderColor:F||"#6699FF"})},geometries:[{id:"polygon",styleId:"polygon",paths:P,properties:{title:"polygon"}}]}),S(B(P)),C.setCenter(P[0])}if(u&&u.point){var T=u.point,x=(A=u.radius,F=u.strokeColor,O=u.strokeWeight,new t.LatLng(T[1],T[0]));new t.MultiCircle({map:C,styles:{circle:new t.CircleStyle({color:"rgba(41,91,255,0.3)",showBorder:!0,borderColor:F||"rgba(41,91,255,1)",borderWidth:O})},geometries:[{styleId:"circle",center:x,radius:A}]}),S({distance:2*A,cent:x})}function B(e){var i=[],n=[],a=[],r=[];e.forEach((function(t){(void 0===i[0]||t.lat>i[0])&&(i[0]=t.lat),(void 0===i[1]||i[1]>t.lng)&&(i[1]=t.lng),(void 0===n[0]||n[0]>t.lat)&&(n[0]=t.lat),(void 0===n[1]||t.lng>n[1])&&(n[1]=t.lng),(void 0===a[0]||t.lat>a[0])&&(a[0]=t.lat),(void 0===a[1]||t.lng>a[1])&&(a[1]=t.lng),(void 0===r[0]||r[0]>t.lat)&&(r[0]=t.lat),(void 0===r[1]||r[1]>t.lng)&&(r[1]=t.lng)}));var l=[new t.LatLng(i[0],i[1]),new t.LatLng(n[0],n[1])],s=t.geometry.computeDistance(l),p=o(o([],l,!0),[new t.LatLng(a[0],a[1]),new t.LatLng(r[0],r[1])],!1),d="";try{d=t.geometry.computeCentroid(p)}catch(t){d=void 0}return{distance:s.toFixed(2),cent:d}}function S(t){var e=t.distance,o=t.cent;if(console.log(e,o),o&&(console.log(2,e,o),C.setCenter(o)),e){C.setZoom(80>e?16:e>80&&1e3>e?15:e>1e3&&3e3>e?14:e>3e3&&7e3>e?13:e>7e3&&15e3>e?12:10)}}}return function(){function o(n){this.initBMap=t,this.initAMap=e,this.initTMap=i,this.$options=n,this.mapAk="";var a=n.type;o.wd.$catch&&o.wd.$catch===a?a&&"TMAP"===a?this.initTMap():a&&"AMAP"===a?this.initAMap():a&&"BMAP"===a&&this.initBMap():this.initMap()}return o.prototype.initMap=function(){var t=this.$options.type;this.getMapAK(t),window.$catch=t,t&&"TMAP"===t?this.createTMap():t&&"AMAP"===t?this.createAMap():t&&"BMAP"===t&&this.createBMap()},o.prototype.getMapAK=function(t){var e=this.$options.mapAk;if(e)this.mapAk=e;else switch(t){case"TMAP":this.mapAk="OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77";break;case"AMAP":this.mapAk="c081218aae02057742b9f1a100d6cf66";break;default:this.mapAk="f7HnzEYGLgOyMyDVTh99ZEQqjlEzuhyC"}},o.prototype.createBMap=function(){var t=this,e=window||{},o=this.$options,i=o.drivingPath,n=o.enclosure,a=o.coordType,r=document.createElement("link");if(r.setAttribute("rel","stylesheet"),r.setAttribute("type","text/css"),r.setAttribute("href","http://api.map.baidu.com/res/webgl/10/bmap.css"),document.getElementsByTagName("head")[0].appendChild(r),!a){var l=document.createElement("script");l.src="https://unpkg.com/gcoord/dist/gcoord.js",document.body.appendChild(l)}var s=document.createElement("script");if(s.src="http://api.map.baidu.com/getscript?type=webgl&v=1.0&ak=".concat(t.mapAk,"&services=&t=").concat((new Date).getTime()),document.body.appendChild(s),e.BMapGL_loadScriptTime=(new Date).getTime(),e.BMapGL=e.BMapGL||{},e.BMapGL.apiLoad=function(){delete e.BMapGL.apiLoad,console.log(!n,!n||n&&"district"!=n.type),(!n||n&&"district"!=n.type)&&(console.log(33333,"初始化轨迹"),t.initBMap())},i&&i.length>=2){var p=document.createElement("script");p.src="//mapopen.bj.bcebos.com/github/BMapGLLib/TrackAnimation/src/TrackAnimation.min.js",document.body.appendChild(p)}n&&"district"===n.type&&(s.onload=function(){console.log(33333,"初始化非轨迹"),t.initBMap()})},o.prototype.createAMap=function(){var t=this,e=this.$options.enclosure,o="https://webapi.amap.com/maps?v=2.0&key=".concat(t.mapAk,"&&plugin=AMap.Scale,AMap.HawkEye,AMap.ToolBar,AMap.MapType"),i=document.createElement("script");i.src=o,document.body.appendChild(i),i.onload=function(){if(e&&"district"===e.type){var o=document.createElement("script");o.src="//webapi.amap.com/ui/1.1/main.js?v=1.1.1",document.body.appendChild(o),o.onload=function(){t.initAMap()}}else t.initAMap()}},o.prototype.createTMap=function(){var t=this,e="https://map.qq.com/api/gljs?v=1.exp&key=".concat(t.mapAk),o=document.createElement("script");o.src=e,document.body.appendChild(o),o.onload=function(){t.initTMap()}},o.wd=window||{},o}()}));