@tarojs/components
Version:
1 lines • 26.4 kB
JavaScript
import{r as t,c as i,h as s,H as o,g as n}from"./p-d0cabaaa.js";import e from"hammerjs";const a=class{constructor(s){t(this,s),this.onTap=i(this,"tap",7),this.currentRotation=0,this._getCenterLocation=t=>{this.map.getOverlays().forEach((t=>{t instanceof BMapGL.Marker&&t.isCenterMarker&&this.map.removeOverlay(t)})),t.iconPath="https://img0.baidu.com/it/u=2604176863,3349829508&fm=253&fmt=auto&app=138&f=PNG?w=243&h=243";const i=new BMapGL.Icon(t.iconPath,new BMapGL.Size(20,30)),s=[this.longitude,this.latitude],o=new BMapGL.Marker(new BMapGL.Point(this.longitude,this.latitude),{icon:i});return o.isCenterMarker=!0,this.map.addOverlay(o),s},this._setLocMarkerIcon=t=>{const i=new BMapGL.Icon(t.iconPath,new BMapGL.Size(20,30)),s=new BMapGL.Point(116.404,39.915),o=new BMapGL.Marker(s,{icon:i});this.map.addOverlay(o)},this._translateMarker=t=>{let i=t.destination.latitude;const s=t.destination.longitude;i<-80&&i>=-90&&(i=t.destination.latitude+10);const o=new BMapGL.Point(s,i),n={flagId:!0,flagCoordinate:!0},e={errMsg:"animationEnd:ok"},a=this.map.getOverlays().find((i=>i instanceof BMapGL.Marker&&i.id===t.markerId));if(!a)return console.error(`Marker "${t.markerId}" not found.`),n.flagId=!1,n;if(i>90||i<-90||s>180||s<-180||isNaN(i)||isNaN(s))return n.flagCoordinate=!1,n;const h=a.getPosition(),l=(o.lng-h.lng)/(t.duration/16),r=(o.lat-h.lat)/(t.duration/16),d=a.getRotation(),p=t.rotate;this.currentRotation?this.currentRotation+=p:this.currentRotation=p;const c=(this.currentRotation-d)/(t.duration/16);let u=h,v=d;if(!t.moveWithRotate&&t.autoRotate){let i=0;const s=setInterval((()=>{if(u=new BMapGL.Point(u.lng+l,u.lat+r),a.setPosition(u),i++,i>=t.duration/16){clearInterval(s);let i=0;const o=setInterval((()=>{v+=c,a.setRotation(v),i++,i>=t.duration/16&&(clearInterval(o),null==t||t.animationEnd(e))}),16)}}),16)}else if(t.moveWithRotate&&t.autoRotate){let i=0;const s=setInterval((()=>{u=new BMapGL.Point(u.lng+l,u.lat+r),a.setPosition(u),v+=c,a.setRotation(v),i++,i>=t.duration/16&&(clearInterval(s),null==t||t.animationEnd(e))}),16)}else if(t.moveWithRotate&&!t.autoRotate){let i=0;const s=setInterval((()=>{u=new BMapGL.Point(u.lng+l,u.lat+r),a.setPosition(u),i++,i>=t.duration/16&&(clearInterval(s),null==t||t.animationEnd(e))}),16)}return n},this._includePoints=t=>{const i=t.points.map((t=>new BMapGL.Point(t.longitude,t.latitude))),s=this.map.getZoom(),o=this.map.getCenter(),n=this.map.getViewport(i);this.map.centerAndZoom(n.center,n.zoom);const e=this.map.getBounds();let a=!0;for(let t=0;t<i.length;t++)if(!e.containsPoint(i[t])){this.map.centerAndZoom(o,s),a=!1;break}return a},this._getRegion=()=>{const t=this.map.getBounds(),i=t.getSouthWest(),s=t.getNorthEast();return{southwest:{lat:i.lat,lng:i.lng},northeast:{lat:s.lat,lng:s.lng}}},this._getRotate=()=>{let t=this.rotate;return(t<0||t>360)&&(t=0),t},this._getSkew=()=>{let t=this.skew;return(t<0||t>40)&&(t=0),t},this._getScale=()=>this.scale,this._setCenterOffset=t=>{const[i,s]=t.offset,o=this.map.getSize(),n=Math.max(.25*o.width,Math.min(.75*o.width,i*o.width)),e=Math.max(.25*o.height,Math.min(.75*o.height,s*o.height)),a=new BMapGL.Pixel(n,e),h=this.map.pixelToPoint(a);this.map.panTo(h)},this._addMarkers=t=>{t.clear&&this.map.clearOverlays(this.markers),t.markers.forEach((i=>{var s,o,n,a,h,l,r,d,p,c,u,v,M,f;if(i.latitude&&i.longitude&&i.iconPath){const b=new BMapGL.Point(i.longitude,i.latitude),w=new BMapGL.Marker(b,{enableClicking:!0});if(this.map.addOverlay(w),w.id=i.id,w.alpha=i.alpha,i.zIndex&&w.setZIndex(i.zIndex),i.width&&i.height&&i.iconPath){const t=new BMapGL.Icon(i.iconPath,new BMapGL.Size(i.width,i.height));w.setIcon(t)}else{if(!i.iconPath)return void console.error("没有找到iconPath图片路径");{const t=new Image;t.src=i.iconPath,t.style.opacity=String(i.alpha),t.onload=()=>{const s=new BMapGL.Size(t.width,t.height),o=new BMapGL.Icon(t.src,s);o.imageOffset=new BMapGL.Size(0,0,i.alpha||1),w.setIcon(o)}}}const B=i.rotate?i.rotate:0;if(B&&w.setRotation(B),i.anchor){const t=(null!==(o=null===(s=i.anchor)||void 0===s?void 0:s.x)&&void 0!==o?o:0)*(i.width||0),e=(null!==(a=null===(n=i.anchor)||void 0===n?void 0:n.y)&&void 0!==a?a:0)*(i.height||0);w.setOffset(new BMapGL.Size(t,e))}if(!i.callout&&i.title&&new e(this.mapRef).on("tap",(i=>{const s=i.center,o=s.x,n=s.y;t.markers.forEach((t=>{const i=document.getElementsByClassName("bmap-container")[0].getBoundingClientRect(),s=i.left,e=i.top,a=new BMapGL.Point(t.longitude,t.latitude),h=this.map.pointToPixel(a),l=h.y+e;if(Math.sqrt(Math.pow(o-(h.x+s),2)+Math.pow(n-l,2))<15&&t.id===w.id){const i=new BMapGL.InfoWindow(`<div style="text-align:center">${t.title}</div>`);this.map.openInfoWindow(i,b)}}))})),i.callout){const s=(null===(h=i.callout)||void 0===h?void 0:h.anchorX)?null===(l=i.callout)||void 0===l?void 0:l.anchorX:0,o=(null===(r=i.callout)||void 0===r?void 0:r.anchorY)?null===(d=i.callout)||void 0===d?void 0:d.anchorY:0,n=new BMapGL.InfoWindow(`<div style="\n padding: ${null===(p=i.callout)||void 0===p?void 0:p.padding}px;\n color:${null===(c=i.callout)||void 0===c?void 0:c.color};\n text-align:${null===(u=i.callout)||void 0===u?void 0:u.textAlign};"\n >\n <p style="font-size:${null===(v=i.callout)||void 0===v?void 0:v.fontSize}px">${(null===(M=i.callout)||void 0===M?void 0:M.content)||""}</p>\n </div>`,{width:200,height:100,offset:new BMapGL.Size(s-24,o-20)});if(w.callout=n,this.map.addOverlay(w),"ALWAYS"===(null===(f=i.callout)||void 0===f?void 0:f.display)){w.callout.disableCloseOnClick();const t=w.getPosition();w.callout.addEventListener("open",(function(){var s,o,n,e;console.log(w.callout);const a=document.querySelector(".BMap_bubble_pop");if(a){let h=a.querySelector(".triangle");h||(h=document.createElement("div"),h.className="triangle",a.appendChild(h));const l=document.querySelector(".BMap_bubble_pop>img");l&&l.setAttribute("style",`position: absolute;transform: translate(-50%, 0); top: ${t.lat-100}px; left: ${t.lng-20}px;display:none`);const r=null===(s=i.callout)||void 0===s?void 0:s.bgColor;let d=(null===(o=i.callout)||void 0===o?void 0:o.borderWidth)||5;const p=null===(n=i.callout)||void 0===n?void 0:n.borderColor,c=null===(e=i.callout)||void 0===e?void 0:e.borderRadius;d=Math.min(d,15),h.setAttribute("style",`width:0;height:0;border-left:${d}px solid transparent;border-right:${d}px solid transparent;border-top:${d}px solid ${p};position:absolute;left:83px;bottom:-${2*d}px`),a.setAttribute("style",`background-color:${r};top:${t.lat-120}px; left:${t.lng-100}px;position: absolute;border: ${d}px solid ${p};border-radius:${c}px; `)}})),this.map.openInfoWindow(w.callout,b)}else new e(this.mapRef).on("tap",(i=>{const s=i.center,o=s.x,n=s.y;t.markers.forEach((t=>{const i=document.getElementsByClassName("bmap-container")[0].getBoundingClientRect(),s=i.left,e=i.top,a=new BMapGL.Point(t.longitude,t.latitude),h=this.map.pointToPixel(a),l=h.y+e;if(Math.sqrt(Math.pow(o-(h.x+s),2)+Math.pow(n-l,2))<15&&t.id===w.id){const i=w.getPosition();w.callout.addEventListener("open",(function(){var s,o,n,e;console.log(w.callout);const a=document.querySelector(".BMap_bubble_pop");if(a){let h=a.querySelector(".triangle");h||(h=document.createElement("div"),h.className="triangle",a.appendChild(h));const l=document.querySelector(".BMap_bubble_pop>img");l&&l.setAttribute("style",`position: absolute;transform: translate(-50%, 0); top: ${i.lat-100}px; left: ${i.lng-20}px;display:none`);const r=null===(s=t.callout)||void 0===s?void 0:s.bgColor;let d=(null===(o=t.callout)||void 0===o?void 0:o.borderWidth)||5;const p=null===(n=t.callout)||void 0===n?void 0:n.borderColor,c=null===(e=t.callout)||void 0===e?void 0:e.borderRadius;d=Math.min(d,15),h.setAttribute("style",`width:0;height:0;border-left:${d}px solid transparent;border-right:${d}px solid transparent;border-top:${d}px solid ${p};position:absolute;left:83px;bottom:-${2*d}px`),a.setAttribute("style",`background-color:${r};top:${i.lat-120}px; left:${i.lng-100}px;position: absolute;border: ${d}px solid ${p};border-radius:${c}px; `)}})),this.map.openInfoWindow(w.callout,b)}else w.callout.enableCloseOnClick()}))}))}if(i.label){const t=i.label.content||"",s={position:b,offset:new BMapGL.Size(i.label.anchorX||0,i.label.anchorY||0)},o=new BMapGL.Label(t,s);o.setStyle({color:i.label.color,fontSize:i.label.fontSize+"px",borderWidth:i.label.borderWidth+"px",borderColor:i.label.borderColor,borderRadius:i.label.borderRadius+"px",background:i.label.bgColor,padding:i.label.padding+"px"}),w.setLabel(o)}}}))},this._removeMarkers=t=>{const i=this.map.getOverlays();let s={};return t.markerIds.forEach((t=>{const o=i.find((i=>i instanceof BMapGL.Marker&&String(i.id)===t));s=o,this.map.removeOverlay(o)})),s},this._moveAlong=t=>{const i=t.path,s=t.markerId,o=t.duration,n=t.autoRotate,e=this.map.getOverlays().find((t=>t instanceof BMapGL.Marker&&t.id===s)),a=i.map((t=>new BMapGL.Point(t.longitude,t.latitude))),h={flagId:!0,flagCoordinate:!0};if(!e)return console.error(`Marker "${s}" not found.`),h.flagId=!1,h;for(let t=0;t<a.length;t++){const i=a[t];if(i.lat<-80&&i.lat>=-90&&(i.lat+=10),i.lng<-180||i.lng>180||i.lat<-90||i.lat>90||isNaN(i.lng)||isNaN(i.lat))return h.flagCoordinate=!1,h}if(h.flagId&&h.flagCoordinate){const t=performance.now(),i=s=>{const h=Math.min((s-t)/o,1),l=this.getPointOnPath(a,h);if(e.setPosition(l),n&&h<1){const t=this.getPointOnPath(a,Math.min(h+.01,1)),i=this.calculateRotation(l,t);e.setRotation(i)}h<1?requestAnimationFrame(i):(e.setPosition(a[a.length-1]),e.setRotation(0))};requestAnimationFrame(i)}return h},this.getPointOnPath=(t,i)=>{const s=this.calculateTotalLength(t)*i;let o=0;for(let i=0;i<t.length-1;i++){const n=this.map.getDistance(t[i],t[i+1]);if(o+n>=s){const e=(s-o)/n;return new BMapGL.Point(t[i].lng+(t[i+1].lng-t[i].lng)*e,t[i].lat+(t[i+1].lat-t[i].lat)*e)}o+=n}return t[t.length-1]},this.calculateTotalLength=t=>{let i=0;for(let s=0;s<t.length-1;s++)i+=this.map.getDistance(t[s],t[s+1]);return i},this.calculateRotation=(t,i)=>{let s=Math.atan2(i.lat-t.lat,i.lng-t.lng)*(180/Math.PI);return s=90-s,s},this._addGroundOverlay=t=>{const{src:i,opacity:s,bounds:o,visible:n,id:e,zIndex:a}=t;let h=!0;if(o.southwest.longitude>=o.northeast.longitude||o.southwest.latitude>=o.northeast.latitude)return void(h=!1);if(o.southwest.latitude>90||o.southwest.latitude<-90||o.southwest.longitude>180||o.southwest.longitude<-180||isNaN(o.southwest.latitude)||isNaN(o.southwest.longitude))return void(h=!1);if(o.northeast.latitude>90||o.northeast.latitude<-90||o.northeast.longitude>180||o.northeast.longitude<-180||isNaN(o.northeast.latitude)||isNaN(o.northeast.longitude))return void(h=!1);const l=new BMapGL.Bounds(new BMapGL.Point(o.southwest.longitude,o.southwest.latitude),new BMapGL.Point(o.northeast.longitude,o.northeast.latitude));function r(t,i,s,o,n,e,a){this._bounds=t,this._imageUrl=i,this._map=s,this._visible=o,this._opacity=n,this._zIndex=e,this._id=a}(r.prototype=new BMapGL.Overlay).initialize=function(t){if(document.getElementById(this._id)){const t=document.getElementById(this._id);null==t||t.remove()}if(this._map=t,!this._div){const t=document.createElement("div");t.id=this._id,t.style.position="absolute",t.style.border="none",t.style.zIndex=this._zIndex;const i=document.createElement("img");i.src=this._imageUrl,i.style.opacity=this._opacity<0?"1":this._opacity,t.appendChild(i),this._div=t}return t.addEventListener("zoomend",(()=>{const i=t.pointToOverlayPixel(this._bounds.getSouthWest()),s=t.pointToOverlayPixel(this._bounds.getNorthEast()),o=s.x-i.x,n=i.y-s.y;this._div.style.width=o+"px",this._div.style.height=n+"px";const e=this._div.querySelector("img");e.style.width=o+"px",e.style.height=n+"px"})),t.getPanes().labelPane.appendChild(this._div),this._div},r.prototype.draw=function(){const i=this._map.pointToOverlayPixel({lat:t.bounds.northeast.latitude,lng:t.bounds.southwest.longitude});this._div.style.left=i.x+"px",this._div.style.top=i.y+"px";const s=this._map.getBounds(),o=this._map.pointToPixel(s.getSouthWest()),n=this._map.pointToPixel(s.getNorthEast()),e=n.x-o.x,a=n.y-o.y,h=this._map.getZoom(),l=e*Math.pow(2,18-h),r=a*Math.pow(2,18-h);this._div.style.width=l+"px",this._div.style.height=r+"px",this._div.style.display=this._visible?"block":"none";const d=this._opacity<0?"1":this._opacity;this._div.getElementsByTagName("img")[0].style.opacity=d};const d=new r(l,i,this.map,n,s,a,e);this.map.addOverlay(d);const p=this.map.getOverlays().sort(((t,i)=>t._zIndex-i._zIndex));this.groundOverlay=d,p.forEach((t=>t.draw()));const c=this.map.getZoom();return c<20?(this.map.setZoom(c+1),this.map.setZoom(c)):(this.map.setZoom(c-1),this.map.setZoom(c)),h},this._updateGroundOverlay=t=>{const{src:i,opacity:s,bounds:o,visible:n,id:e,zIndex:a}=t;let h,l=!0,r=!0,d={};const p=this.map.getOverlays().find((t=>t._id===e));if(!p)return l=!1,d={flagId:l,flagCoordinate:r},h=Object.assign({},d),h;if((o.southwest.longitude>=o.northeast.longitude||o.southwest.latitude>=o.northeast.latitude)&&(r=!1,d={flagId:l,flagCoordinate:r},h=Object.assign({},d)),(o.southwest.latitude>90||o.southwest.latitude<-90||o.southwest.longitude>180||o.southwest.longitude<-180||isNaN(o.southwest.latitude)||isNaN(o.southwest.longitude))&&(r=!1,d={flagId:l,flagCoordinate:r},h=Object.assign({},d)),(o.northeast.latitude>90||o.northeast.latitude<-90||o.northeast.longitude>180||o.northeast.longitude<-180||isNaN(o.northeast.latitude)||isNaN(o.northeast.longitude))&&(r=!1,d={flagId:l,flagCoordinate:r},h=Object.assign({},d)),l&&r){const t=new BMapGL.Bounds(new BMapGL.Point(o.southwest.longitude,o.southwest.latitude),new BMapGL.Point(o.northeast.longitude,o.northeast.latitude)),c=this.map.getZoom();if(p){const o=document.getElementById(e);if(o){const e=o.querySelector("img");if(e){o.style.opacity=s<0?"1":s,e.style.display=n?"block":"none",o.style.zIndex=a;const h=new Image;h.onload=()=>{e.src=i;const s=t.getNorthEast().lng-t.getSouthWest().lng,o=this.map.getSize().width/Math.pow(2,18-c)*s,n=o*(h.naturalHeight/h.naturalWidth);e.style.width=`${o}px`,e.style.height=`${n}px`,p._bounds=t,p.draw(),this.map.panTo(this.map.getCenter()),p.draw()},h.src=i}}}else console.error(`未找到id为${e}的元素`);return d={flagId:l,flagCoordinate:r},h=Object.assign({},d),h}return h},this._removeGroundOverlay=t=>{let i="";const s=this.map.getOverlays().find((i=>i._id===t.id));return i=s,s&&this.map.removeOverlay(s),i},this._setBoundary=t=>{let i=t.northeast.latitude,s=t.southwest.latitude,o=!0;if(t.northeast.latitude<=-80&&t.northeast.latitude>=-90&&(i=t.northeast.latitude+10),t.southwest.latitude<=-80&&t.southwest.latitude>=-90&&(s=t.southwest.latitude+10),t.northeast.latitude<-90||t.northeast.latitude>90||t.northeast.longitude<-180||t.northeast.longitude>180||isNaN(t.northeast.latitude)||isNaN(t.northeast.longitude)||t.northeast.longitude<t.southwest.longitude||t.northeast.latitude<t.southwest.latitude)return void(o=!1);if(t.southwest.latitude<-90||t.southwest.latitude>90||t.southwest.longitude<-180||t.southwest.longitude>180||isNaN(t.southwest.latitude)||isNaN(t.southwest.longitude))return void(o=!1);const n=new BMapGL.Point(t.northeast.longitude,i),e=new BMapGL.Point(t.southwest.longitude,s),a=new BMapGL.Bounds(e,n),h=this.map.getViewport([n,e]);return this.map.centerAndZoom(new BMapGL.Point(h.center.lng,h.center.lat),h.zoom+2),this.map.addOverlay(new BMapGL.Polygon([new BMapGL.Point(a.sw.lng,a.sw.lat),new BMapGL.Point(a.sw.lng,a.ne.lat),new BMapGL.Point(a.ne.lng,a.ne.lat),new BMapGL.Point(a.ne.lng,a.sw.lat)],{fillOpacity:0})),BMapGLLib.AreaRestriction.setBounds(this.map,a),o},this.latitude=void 0,this.longitude=void 0,this.scale=void 0,this.minScale=void 0,this.maxScale=void 0,this.markers=void 0,this.polyline=void 0,this.circles=void 0,this.polygons=void 0,this.subkey=void 0,this.layerStyle=void 0,this.rotate=void 0,this.skew=void 0,this.showCompass=void 0,this.showScale=void 0,this.enableOverlooking=void 0,this.enableZoom=void 0,this.enableScroll=void 0,this.enableRotate=void 0,this.enableSatellite=void 0,this.enableTraffic=void 0,this.enableBuilding=void 0,this.enableAutoMaxOverlooking=void 0,this.enable3D=void 0,this.width="100%",this.height="100%"}async componentDidLoad(){if(await this.loadMapScript(),await this.LoadBmapLibScript(),this.mapRef){if(this.mapRef.addEventListener("touchmove",(t=>{t.cancelable&&t.preventDefault()})),this.map=new BMapGL.Map(this.mapRef),this.map.removeControl(this.map.getMapType()),this.latitude<-90||this.latitude>90||this.longitude<-180||this.longitude>180||isNaN(this.latitude)||isNaN(this.longitude))return void console.error("请正确设置中心经纬度");let t=isNaN(this.scale)?16:this.scale,i=isNaN(this.minScale)?3:this.minScale,s=isNaN(this.maxScale)?16:this.maxScale;const o=new BMapGL.Point(this.longitude,this.latitude);i<3||i>20?(i=3,this.map.setMinZoom(3)):this.map.setMinZoom(i),s>20||s<3?(s=20,this.map.setMaxZoom(20)):this.map.setMaxZoom(s),i>s&&(i=3,this.map.setMinZoom(3),s=20,this.map.setMaxZoom(20)),i<=16&&s>=16?(t>=i&&t<=s||(t=16),this.map.centerAndZoom(o,t)):t>=i&&t<=s?this.map.centerAndZoom(o,t):t<i?(t=i,this.map.centerAndZoom(o,i)):(t=s,this.map.centerAndZoom(o,s)),Array.isArray(this.markers)&&this.addMarkers(this.markers),Array.isArray(this.polyline)&&this.polyline.forEach((t=>{if(t.points){const i=t.points.map((t=>new BMapGL.Point(t.longitude,t.latitude))),s=new BMapGL.Polyline(i,{strokeColor:t.color,strokeWeight:t.width,strokeStyle:t.dottedLine?"dashed":"solid",strokeOpacity:1});this.map.addOverlay(s)}})),Array.isArray(this.circles)&&this.circles.forEach((t=>{if(t.latitude&&t.longitude&&t.radius){const i=new BMapGL.Point(t.longitude,t.latitude),s=new BMapGL.Circle(i,t.radius,{strokeColor:t.color,fillColor:t.fillColor,strokeWeight:t.strokeWidth});this.map.addOverlay(s)}})),Array.isArray(this.polygons)&&this.polygons.forEach((t=>{const i=t.points.map((t=>new BMapGL.Point(t.longitude,t.latitude))),s=new BMapGL.Polygon(i,{strokeColor:t.strokeColor,fillColor:t.fillColor,strokeWeight:t.strokeWidth});this.map.addOverlay(s)})),0===this.layerStyle?this.layerStyle&&this.map.setMapStyleV2({styleId:this.subkey}):1===(this.layerStyle?this.layerStyle:1)&&this.map.setMapStyleV2({styleId:this.subkey});const n=this.skew?this.skew:0;if(this.map.setTilt(!0===(!0===this.enable3D&&this.enable3D)?!0===(!0===this.enableOverlooking&&this.enableOverlooking)?!0===(!0===this.enableAutoMaxOverlooking&&this.enableAutoMaxOverlooking)?75:45:n>=0&&n<=40?n:0:0),!0===(!0===this.showCompass&&this.showCompass)){const t=new BMapGL.NavigationControl3D({anchor:BMAP_ANCHOR_TOP_RIGHT,type:3});this.map.addControl(t)}if(!0===(!0===this.showScale&&this.showScale)){const t=new BMapGL.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT});this.map.addControl(t)}if(!0===(!1!==this.enableZoom||this.enableZoom)&&this.map.enableScrollWheelZoom(this.enableZoom),!0===this.enableZoom&&this.mapRef?this.map.enablePinchToZoom():this.map.disablePinchToZoom(),!0===(!1!==this.enableScroll||this.enableScroll)?this.map.enableDragging():this.map.disableDragging(),this.map.setHeading((this.rotate?this.rotate:0)>=0&&this.rotate<=360?this.rotate:0),!0===this.enableRotate&&this.map.enableRotateGestures(),!0===(!0===this.enableSatellite&&this.enableSatellite)&&this.mapRef){const t=new BMapGL.MapTypeControl({mapTypes:[BMAP_NORMAL_MAP,BMAP_SATELLITE_MAP]});this.map.addControl(t)}!0===(!0===this.enableTraffic&&this.enableTraffic)&&this.mapRef&&this.map.setTrafficOn(),!1===(!1!==this.enableBuilding||this.enableBuilding)&&this.map.setDisplayOptions({building:!1})}this.map&&new e(this.mapRef).on("tap",(t=>{const i=this.map.pixelToPoint({x:t.center.x,y:t.center.y});this.onTap.emit({longitude:i.lng,latitude:i.lat})}))}disconnectedCallback(){this.map&&this.map.destroy()}addMarkers(t){const i=[];t.forEach((t=>{var s,o,n,a,h,l,r,d,p,c,u,v,M,f;if(i.includes(t.id))console.error("请输入不同的marker的id");else if(i.push(t.id),t.latitude&&t.longitude&&t.iconPath&&t.id){if(t.latitude<-90||t.latitude>90||t.longitude<-180||t.longitude>180)return void console.error("请正确设置marker的经纬度");const i=new BMapGL.Point(t.longitude,t.latitude),b=new BMapGL.Marker(i,{enableClicking:!0});if(b.id=t.id,b.alpha=t.alpha,t.zIndex&&b.setZIndex(t.zIndex),t.width&&t.height){const i=document.createElement("canvas");i.width=2*t.width,i.height=2*t.height;const s=i.getContext("2d"),o=new Image;o.crossOrigin="Anonymous",o.src=t.iconPath,o.onload=function(){s.drawImage(o,0,0,2*t.width,2*t.height);const n=new BMapGL.Icon(i.toDataURL(),new BMapGL.Size(t.width,t.height),{anchor:new BMapGL.Size(0,0)});b.setIcon(n)}}else{const i=new Image;i.src=t.iconPath,i.style.opacity=String(t.alpha),i.onload=()=>{const s=new BMapGL.Size(i.width,i.height),o=new BMapGL.Icon(i.src,s);o.imageOffset=new BMapGL.Size(0,0,t.alpha||1),b.setIcon(o)}}const w=t.rotate?t.rotate:0;w>=0&&w<=360&&b.setRotation(w);const B=null!==(o=null===(s=t.anchor)||void 0===s?void 0:s.x)&&void 0!==o?o:.5,L=null!==(a=null===(n=t.anchor)||void 0===n?void 0:n.y)&&void 0!==a?a:1;if(b.setOffset(B>=0&&B<=1&&L>=0&&L<=1?new BMapGL.Size(-B*(t.width||0),-L*(t.height||0)):new BMapGL.Size(-.5*(t.width||0),-1*(t.height||0))),!t.callout&&t.title&&new e(this.mapRef).on("tap",(t=>{const s=t.center,o=s.x,n=s.y;this.markers.forEach((t=>{const s=document.getElementsByClassName("bmap-container")[0].getBoundingClientRect(),e=s.left,a=s.top,h=new BMapGL.Point(t.longitude,t.latitude),l=this.map.pointToPixel(h),r=l.y+a;if(Math.sqrt(Math.pow(o-(l.x+e),2)+Math.pow(n-r,2))<15&&t.id===b.id){const s=new BMapGL.InfoWindow(`<div style="text-align:center">${t.title}</div>`);this.map.openInfoWindow(s,i)}}))})),t.callout){const s=(null===(h=t.callout)||void 0===h?void 0:h.anchorX)?null===(l=t.callout)||void 0===l?void 0:l.anchorX:0,o=(null===(r=t.callout)||void 0===r?void 0:r.anchorY)?null===(d=t.callout)||void 0===d?void 0:d.anchorY:0,n=new BMapGL.InfoWindow(`<div style="\n padding: ${null===(p=t.callout)||void 0===p?void 0:p.padding}px;\n color:${null===(c=t.callout)||void 0===c?void 0:c.color};\n text-align:${null===(u=t.callout)||void 0===u?void 0:u.textAlign};"\n >\n <p style="font-size:${null===(v=t.callout)||void 0===v?void 0:v.fontSize}px">${(null===(M=t.callout)||void 0===M?void 0:M.content)||""}</p>\n </div>`,{width:200,height:100,offset:new BMapGL.Size(s-24,o-20)});if(b.callout=n,this.map.addOverlay(b),"ALWAYS"===(null===(f=t.callout)||void 0===f?void 0:f.display)){b.callout.disableCloseOnClick();const s=b.getPosition();b.callout.addEventListener("open",(function(){var i,o,n,e;const a=document.querySelector(".BMap_bubble_pop");if(a){let h=a.querySelector(".triangle");h||(h=document.createElement("div"),h.className="triangle",a.appendChild(h));const l=document.querySelector(".BMap_bubble_pop>img");l&&l.setAttribute("style",`position: absolute;transform: translate(-50%, 0); top: ${s.lat-100}px; left: ${s.lng-20}px;display:none`);const r=null===(i=t.callout)||void 0===i?void 0:i.bgColor;let d=(null===(o=t.callout)||void 0===o?void 0:o.borderWidth)||5;const p=null===(n=t.callout)||void 0===n?void 0:n.borderColor,c=null===(e=t.callout)||void 0===e?void 0:e.borderRadius;d=Math.min(d,15),h.setAttribute("style",`width:0;height:0;borderLeft:${d}px solid transparent;borderRight:${d}px solid transparent;borderTop:${d}px solid ${p};position:absolute;left:83px;bottom:-${2*d}px`),a.setAttribute("style",`background-color:${r};top:${s.lat-120}px; left:${s.lng-100}px;position: absolute;border: ${d}px solid ${p};border-radius:${c}px; `)}})),this.map.openInfoWindow(b.callout,i)}else new e(this.mapRef).on("tap",(t=>{const s=t.center,o=s.x,n=s.y;this.markers.forEach((t=>{const s=document.getElementsByClassName("bmap-container")[0].getBoundingClientRect(),e=s.left,a=s.top,h=new BMapGL.Point(t.longitude,t.latitude),l=this.map.pointToPixel(h),r=l.y+a;if(Math.sqrt(Math.pow(o-(l.x+e),2)+Math.pow(n-r,2))<15&&t.id===b.id){const s=b.getPosition();b.callout.addEventListener("open",(function(){var i,o,n,e;const a=document.querySelector(".BMap_bubble_pop");if(a){let h=a.querySelector(".triangle");h||(h=document.createElement("div"),h.className="triangle",a.appendChild(h));const l=document.querySelector(".BMap_bubble_pop>img");l&&l.setAttribute("style",`position: absolute;transform: translate(-50%, 0); top: ${s.lat-100}px; left: ${s.lng-20}px;display:none`);const r=null===(i=t.callout)||void 0===i?void 0:i.bgColor;let d=(null===(o=t.callout)||void 0===o?void 0:o.borderWidth)||5;const p=null===(n=t.callout)||void 0===n?void 0:n.borderColor,c=null===(e=t.callout)||void 0===e?void 0:e.borderRadius;d=Math.min(d,15),h.setAttribute("style",`width:0;height:0;border-left:${d}px solid transparent;border-right:${d}px solid transparent;border-top:${d}px solid ${p};position:absolute;left:83px;bottom:-${2*d}px`),a.setAttribute("style",`background-color:${r};top:${s.lat-120}px; left:${s.lng-100}px;position: absolute;border: ${d}px solid ${p};border-radius:${c}px; `)}})),this.map.openInfoWindow(b.callout,i)}else b.callout.enableCloseOnClick()}))}))}if(t.label){const s=t.label.content||"",o={position:i,offset:new BMapGL.Size(t.label.anchorX||0,t.label.anchorY||0)},n=new BMapGL.Label(s,o);n.setStyle({color:t.label.color,fontSize:t.label.fontSize+"px",borderWidth:t.label.borderWidth+"px",borderColor:t.label.borderColor?t.label.borderColor:"white",borderRadius:t.label.borderRadius+"px",background:t.label.bgColor,padding:t.label.padding+"px"}),b.setLabel(n)}this.map.addOverlay(b)}else console.error("请检查marker经纬度和marker自定义图标路径和id值")}))}loadMapScript(){return new Promise(((t,i)=>{const s=document.createElement("script");s.src="https://api.map.baidu.com/getscript?v=3.0&type=webgl&ak=Mb1FLBD3gfnY6bup4v6zEWh6MXwsZ9eo",s.defer=!0,s.onload=()=>t(),s.onerror=i,s.type="text/javascript",document.head.appendChild(s)}))}async LoadBmapLibScript(){return new Promise(((t,i)=>{const s=document.createElement("script");s.src="//mapopen.bj.bcebos.com/github/BMapGLLib/AreaRestriction/src/AreaRestriction.min.js",s.defer=!0,s.type="text/javascript",s.onload=()=>{t()},s.onerror=i,document.head.appendChild(s)}))}render(){return s(o,null,s("div",{id:"mapContainer",ref:t=>{t&&(this.mapRef=t)},style:{width:this.width,height:this.height}}))}get el(){return n(this)}};a.style=".BMap_cpyCtrl,.anchorBL img,.BMap_bubble_buttons{display:none}";export{a as taro_map_core}