@vtx/map 1.1.25 → 1.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Map.js","names":["Set","Immutable","Map","props","GM","graphicManage","initPointIndex","_cluster","clusterIdList","_rangingTool","_bmar","_drawmanager","editGraphicChange","editTimeout","_boundary","moveToTimer","heatmap","morepoints","movePoints","editEvent","rangingTool","isRanging","line","points","distance","mapRangingTool","eventList","isDbclick","rangingTools","state","gis","mapId","mapCreated","pointIds","lineIds","polygonIds","circleIds","editId","editGraphic","boundaryInfo","drawIds","point","polyline","polygon","circle","rectangle","cacheImgRecord","cacheImg","document","getElementById","createElement","id","style","display","body","appendChild","defImg","Image","src","configUrl","mapServerURL","loadMapJs","t","loadMapComplete","Promise","resolve","reject","window","google","omap","maps","$","getScript","PointCollection","OmapCluster","all","then","createMap","mapPoints","mapLines","mapPolygons","mapCircles","mapVisiblePoints","mapCluster","mapZoomLevel","isOpenTrafficInfo","mapPointCollection","areaRestriction","boundaryName","heatMapData","customizedBoundary","Array","addPoint","addLine","addPolygon","addCircle","heatMapOverlay","addPointCollection","setVisiblePoints","cluster","openTrafficInfo","hideTrafficInfo","clickMap","dragMapStart","dragMapEnd","moveStart","zoomStart","moveEndAndZoomEnd","setState","mapCenter","minZoom","maxZoom","showControl","options","zoom","center","oldZoomLevel","VtxMap","isShowControl","controlPosition","matchControlPosition","location","latLngBounds","isArray","sort","a","b","map","toString","lng","lat","disableDoubleClickZoom","draggableCursor","controlSize","rotateControl","scaleControl","streetViewControl","fullscreenControl","mapTypeControl","zoomControl","rotateControlOptions","position","streetViewControlOptions","fullscreenControlOptions","zoomControlOptions","mapTypeControlOptions","ControlPosition","TOP_CENTER","restriction","north","south","west","east","strictBounds","drawing","DrawingManager","drawingControl","setMap","OMapLib","MarkerClusterer","CanvasProjectionOverlay","prototype","OverlayView","constructor","onAdd","draw","onRemove","canvasProjectionOverlay","MyLabel","editable","editParam","sx","sy","isLabel","labelClass","labelContent","labelOffset","x","y","lnglat","_label","funs","innerHTML","className","panes","getPanes","markerLayer","overlayMouseTarget","i","removeListener","addListener","overlayProjection","getProjection","fromLatLngToDivPixel","left","parseFloat","top","setOptions","setPosition","getPosition","setZIndex","index","ZIndex","isMarkerContent","parentNode","removeChild","key","fun","tt","dragendFun","setTimeout","event","stopPropagation","latLng","va","pixel","addEventListener","removeEventListener","setDraggable","boolean","edit","mdown","clientX","clientY","mmEvent","e","replace","mupEvent","latlng","fromDivPixelToLatLng","Point","obj","ls","getLngLats","ids","type","alnglat","lngs","lats","getMoreGraphicParam","item","geometryType","push","geometry","paths","rings","forEach","sw","LatLng","ne","length","fitView","split","fitBounds","LatLngBounds","gt","mgt","c","getCenter","setCenter","z","getZoomLevel","setZoom","clearClusters","clearAllPointCollection","allGraphics","clearAll","psids","apf","isRepetition","console","warn","longitude","latitude","cg","width","height","labelPixelX","labelPixelY","BAnimationType","markerContentX","markerContentY","deg","markerContent","config","marker","canShowLabel","join","label","setGraphic","iconUrl","RotateIcon","url","icon","anchor","size","Size","scaledSize","setRotation","getUrl","labelOrigin","Marker","ishaveLabel","zIndex","setAnimation","Animation","BOUNCE","DROP","mClick","rangingToolFun","clickGraphic","mMouseover","mouseOverGraphic","mMouseout","mouseOutGraphic","setGraphicParam","attributes","other","click","mouseover","mouseout","addPsTimer","upf","gc","getGraphic","gc_label","indexOf","removeMarker","oldPosition","getGraphicParam","remove","removeGraphic","setIcon","isAnimation","moveTo","animationDelay","autoRotation","urlleft","moveAnimation","upPsTimer","lsids","color","pellucidity","lineWidth","lineType","isHidden","icons","lineSymbol","path","strokeOpacity","scale","offset","repeat","linePath","lineOption","strokeColor","strokeWeight","Polyline","setVisible","setPath","pgsids","lineColor","lineOpacity","polygonOption","strokeStyle","fillColor","fillOpacity","polygonPath","Polygon","ccsids","circleOption","centerPoint","Circle","radius","setRadius","d","max","visible","opacity","visualization","HeatmapLayer","option","gradient","sortArray","value","setData","data","ftp","pointCollectionId","divpc","getDiv","offsetHeight","offsetWidth","p","fromLatLngToContainerPixel","shape","VotexpointCollection","GMapLib","addpointCollectionTimer","clearTimeout","ds","ind","reDraw","updatePointCollectionTimer","clear","graphic","removeCluster","splice","gLabel","gtp","endEdit","param","spherical","area","computeArea","mapLayer","getPath","getArray","calculateDistance","Math","pow","PI","editPointLabel","setEditable","drawParam","setDrawingMode","parameter","Date","getTime","len","paramgcr","extData","markerOptions","_drawmanagerEvent","backobj","drawEnd","polylineOptions","lnglatAry","lngX","latX","calculateGraphicDistance","getMaxMin","polygonOptions","calculateArea","_extent","circleOptions","getRadius","rectangleOptions","lnglatJson","getBounds","toJSON","calculatePointsDistance","ps","mapTop","mapLeft","trafficLayer","TrafficLayer","gids","status","fromContainerPixelToLatLng","lnlt","distext","round","random","updateLine","rangkey","end","lnglats","dbclickTimer","rangingToolEndFun","rangingToolMoveFun","rp","rcontent","grwkid","sl","updatePoint","arg","ary","clusterToolFunction","addMarkers","removeMarkers","clearMarkers","filter","vtx_g_rang","Object","apply","allps","getMapExtent","clickLngLat","css","visibility","isZoomming","isMoving","getZoom","moveEnd","zoomEnd","updatePointCollection","hide","gp","gg","pts","nowBounds","southWest","getNorthEast","northEast","getSouthWest","nowCenter","mapSize","ms","xmax","xmin","ymax","ymin","clearInterval","setInterval","waitTime","deleteTime","nowMovePoints","slice","deleteIndex","rx","ry","isAdded","tx","ty","addMarker","delay","urlright","timer","eval","count","s","equals","ddeg","rotateDeg","getIcon","isHave","sp","ep","spLngLat","epLngLat","tan","atan","disy","bias","RIGHT_BOTTOM","LEFT_TOP","LEFT_BOTTOM","RIGHT_TOP","fp","computeDistanceBetween","totalDistance","computeLength","is","fromJS","oldData","newData","onlyOldData","subtract","toJS","onlyNewData","onlyOldIDs","onlyNewIDs","updateDataIDs","intersect","updatedData","replacedData","deletedDataIDs","oldID","addedData","ads","otherupds","upds","otherads","_map","offsetLeft","offsetTop","init","prevProps","prevState","nextProps","setZoomLevel","setCluster","isRangingTool","isRemove","mapRemove","mapDraw","isDraw","isCloseDraw","editGraphicId","isDoEdit","isEndEdit","isclearAllPointCollection","isSetAreaRestriction","isClearAreaRestriction","isClearAll","deepEqual","dataMatch","clearPointCollection","oldMapPoints","newMapPoints","dealAdd","dealUpdate","oldMapPolygons","newMapPolygons","updatePolygon","oldMapCircles","newMapCircles","updateCircle","oldMapLines","newMapLines","doEdit","closeDraw","vtxRangingTool","loadLabel","clearOverlays","React","Component"],"sources":["VtxMap/OMap/Map.js"],"sourcesContent":["import React from 'react';\nimport {graphicManage,RotateIcon,getMaxMin} from '../MapToolFunction';\nimport Immutable from 'immutable';\nconst {Set} = Immutable;\n//公共地址配置\nimport configUrl from '../../default';\nclass Map extends React.Component {\n constructor(props){\n super(props);\n this.GM = new graphicManage();//初始化 图元管理方法\n this.initPointIndex = 0;//初始化地图时记录点当前位置\n this._cluster = null;//点聚合对象\n this.clusterIdList = [];//点聚合id集合\n this._rangingTool = null;//测距对象\n this._bmar = null;//区域限制对象\n this._drawmanager = null;//图元绘制对象\n this.editGraphicChange = null;//编辑方法回调\n this.editTimeout = null;//圆编辑回调延迟时间对象\n this._boundary = null;//获取行政区域数据的对象\n this.moveToTimer = null;//moveTo时间对象\n this.heatmap = null;//热力图对象\n this.morepoints = [];//海量点数组\n this.movePoints = [];//移动点的动画集合\n this.editEvent = {};//编辑监听的事件\n //是否绘制测距\n this.rangingTool = {\n isRanging: false,//是否开启状态\n line: {},//线\n points: [],//点\n distance: 0,//测距长度\n mapRangingTool: null,//测距回调\n eventList: {},\n isDbclick: false\n };\n this.rangingTools = {};//测距点线缓存\n this.state = {\n gis: null,//地图对象\n mapId: props.mapId,\n mapCreated: false,\n pointIds:[], //地图上点的ids\n lineIds:[], //地图上线的ids\n polygonIds:[], //地图上面的ids\n circleIds:[], //地图上圆的ids\n editId: '',//当前编辑的图元id\n editGraphic: '',//当前编辑完后图元所有数据\n boundaryInfo: [],//当前画出的边界线的id和区域名\n drawIds: {//绘制工具id集合\n point: [],\n polyline: [],\n polygon: [],\n circle: [],\n rectangle: []\n }\n };\n this.cacheImgRecord = {};//缓存图片记录,避免多次加载缓存\n // 图片缓存dom位置\n let cacheImg = document.getElementById('vtxomapdefaultimg');\n if(!cacheImg){\n cacheImg = this.cacheImg = document.createElement('div');\n cacheImg.id = 'vtxomapcacheImg';\n cacheImg.style.display = 'none';\n document.body.appendChild(cacheImg);\n }\n this.cacheImg = cacheImg;\n //缓存默认点位地址\n if(!document.getElementById('vtxomapdefaultimg')){\n let defImg = new Image();\n defImg.src = `${configUrl.mapServerURL}/images/defaultMarker.png`;\n defImg.id = 'vtxomapdefaultimg';\n cacheImg.appendChild(defImg);\n }\n //加载地图\n this.loadMapJs();\n }\n loadMapJs(){\n let t = this;\n this.loadMapComplete = new Promise((resolve,reject)=>{\n if(window.google){\n resolve(t.omap = window.google.maps);\n }\n else{\n //&language=zh-CN\n //测试用地址,暂时只支持 10.10.11.227的ip\n $.getScript('http://ditu.google.cn/maps/api/js?key=AIzaSyAelEHQosKi09YLhXwmw3OR5ggScxOda2A&libraries=geometry,visualization,drawing',()=>{\n let PointCollection = new Promise((resolve,reject)=>{\n $.getScript(`${configUrl.mapServerURL}/GPointCollection.js`,()=>{\n resolve();\n });\n });\n let OmapCluster = new Promise((resolve,reject)=>{\n $.getScript(`${configUrl.mapServerURL}/omapCluster.js`,()=>{\n resolve();\n });\n });\n Promise.all([PointCollection,OmapCluster]).then(()=>{\n resolve(t.omap = window.google.maps);\n })\n });\n }\n });\n }\n //初始化地图数据\n init(){\n let t = this;\n //创建地图\n t.createMap();\n const {\n mapPoints,mapLines,mapPolygons,mapCircles,\n mapVisiblePoints,mapCluster,mapZoomLevel,\n isOpenTrafficInfo,mapPointCollection,areaRestriction\n } = this.props;\n let {boundaryName,heatMapData,customizedBoundary} = this.props;\n let {boundaryInfo,pointIds,lineIds,polygonIds,circleIds} = this.state;\n // //添加点\n if(mapPoints instanceof Array){\n t.addPoint(mapPoints);\n }\n //添加线\n if(mapLines instanceof Array){\n t.addLine(mapLines);\n }\n //添加面\n if(mapPolygons instanceof Array){\n t.addPolygon(mapPolygons);\n }\n //添加圆\n if(mapCircles instanceof Array){\n t.addCircle(mapCircles);\n }\n // 画热力图\n if(heatMapData){\n t.heatMapOverlay(heatMapData);\n }\n if(mapPointCollection instanceof Array){\n t.addPointCollection(mapPointCollection);\n }\n /*设置指定图元展示*/\n if(mapVisiblePoints){\n t.setVisiblePoints(mapVisiblePoints);\n }\n //设置点聚合\n if(mapCluster instanceof Array){\n t.cluster(mapCluster);\n }\n //开关路况\n if(isOpenTrafficInfo){\n t.openTrafficInfo();\n }else{\n t.hideTrafficInfo();\n }\n /*地图事件*/\n //初始化地图点击事件\n t.clickMap();\n //地图拖动之前事件\n t.dragMapStart();\n // //地图拖动结束后事件\n t.dragMapEnd();\n // //地图移动之前事件\n t.moveStart();\n // //地图缩放开始前事件\n t.zoomStart();\n // //地图移动结束后事件/地图缩放结束后事件\n t.moveEndAndZoomEnd();\n\n t.setState({\n mapCreated:true\n })\n }\n //创建地图\n createMap () {\n let t = this;\n const {mapCenter,mapId,mapZoomLevel,minZoom,maxZoom,showControl,areaRestriction} = t.props;\n let options ={\n zoom: mapZoomLevel || 10,\n center: mapCenter || [626.3002300508477,37.90942995363547],\n minZoom: minZoom || 0,\n maxZoom: maxZoom || 22\n };\n //缓存 zoom等级,用于事件判断\n t.oldZoomLevel = options.zoom;\n if(window.VtxMap){\n window.VtxMap[mapId]= null;\n }else{\n window.VtxMap = {};\n }\n // 地图控件处理\n let isShowControl = false,\n controlPosition = t.matchControlPosition();\n if(showControl){\n controlPosition = t.matchControlPosition(showControl.location);\n isShowControl = !!showControl;\n }\n let latLngBounds = [];\n if(areaRestriction && Array.isArray(areaRestriction) && Array.isArray(areaRestriction[0])){\n //处理 区域限制数据\n latLngBounds = [\n areaRestriction[0][0],\n areaRestriction[0][1],\n areaRestriction[1][0],\n areaRestriction[1][1]\n ];\n latLngBounds.sort((a,b)=>a-b);\n }\n //创建地图 缓存地图对象\n let map = window.VtxMap[mapId] = t.state.gis = new t.omap.Map(document.getElementById(mapId.toString()),{\n center: {lng: options.center[0],lat: options.center[1]},\n disableDoubleClickZoom: false,\n draggableCursor: 'url(\"http://maps.gstatic.cn/mapfiles/openhand_8_8.cur\"), default', \n zoom: options.zoom,\n minZoom: options.minZoom,\n maxZoom: options.maxZoom,\n controlSize: 24,\n //全屏控件-禁用\n rotateControl: isShowControl,\n scaleControl: isShowControl,\n streetViewControl: isShowControl,\n fullscreenControl: isShowControl,\n mapTypeControl: isShowControl,\n zoomControl: isShowControl,\n rotateControlOptions: {position: controlPosition},\n streetViewControlOptions: {position: controlPosition},\n fullscreenControlOptions: {position: controlPosition},\n zoomControlOptions: {position: controlPosition},\n mapTypeControlOptions: {position: google.maps.ControlPosition.TOP_CENTER},\n //区域限制\n restriction: {\n latLngBounds: {\n north: latLngBounds[1] || 90,\n south: latLngBounds[0] || -90,\n west: latLngBounds[2] || -180,\n east: latLngBounds[3] || 180\n },\n strictBounds: false,\n }\n });\n /*=================================start========================================*/\n /*\n draw对象声明, 绘制返回方法实现\n */\n if(!t._drawmanager){\n t._drawmanager = new google.maps.drawing.DrawingManager({\n drawingControl: false\n });\n t._drawmanager.setMap(t.state.gis);\n }\n /*=================================start========================================*/\n //初始化点聚合对象\n if(!t._cluster){\n t._cluster = new OMapLib.MarkerClusterer(map,[],{maxZoom: options.maxZoom}); \n }\n /*=================================start========================================*/\n /*\n 声明OverlayView 类\n 用于切换lnglat和 pixel\n */\n function CanvasProjectionOverlay() {}\n CanvasProjectionOverlay.prototype = new google.maps.OverlayView();\n CanvasProjectionOverlay.prototype.constructor = CanvasProjectionOverlay;\n CanvasProjectionOverlay.prototype.onAdd = function(){};\n CanvasProjectionOverlay.prototype.draw = function(){};\n CanvasProjectionOverlay.prototype.onRemove = function(){};\n this.canvasProjectionOverlay = new CanvasProjectionOverlay();\n this.canvasProjectionOverlay.setMap(map);\n /*=================================start========================================*/\n /*\n 重写marker对象,支持html\n 要使用google对象,所以在creatMap中声明\n */\n let MyLabel = t.MyLabel = function(map,options = {}){\n //编辑\n this.editable = options.editable || false;\n this.editParam = {\n sx: 0,\n sy: 0\n };\n //地图\n this.map = map;\n this.isLabel = options.isLabel;\n //基本参数\n this.labelClass = options.labelClass;\n this.labelContent = options.labelContent;\n this.labelOffset = options.labelOffset || {x:0,y:0};\n this.lnglat = options.lnglat;\n\n this._label = null;\n\n this.funs = {};\n }\n //继承OverlayView类\n MyLabel.prototype = new google.maps.OverlayView();\n //添加地图时被调用(setMap时被调用)\n MyLabel.prototype.onAdd = function(){\n //创建文字标签\n if(!this._label){\n this._label = document.createElement('div');\n this._label.innerHTML = this.labelContent;\n this._label.style.position = 'absolute';\n this._label.className = this.labelClass;\n //获取承载点位的框\n let panes = this.getPanes();\n if(this.isLabel){\n panes.markerLayer.appendChild(this._label);\n }else{\n panes.overlayMouseTarget.appendChild(this._label);\n }\n }else{\n this._label.innerHTML = this.labelContent;\n this._label.className = this.labelClass;\n }\n for(var i in this.funs){\n this.removeListener(i);\n this.addListener(i,this.funs[i])\n }\n }\n //计算位置, onAdd和缩放和平移之后调用\n MyLabel.prototype.draw = function(){\n //返回MapCanvasProjection对象,拥有计算pixel和lnglat的方法\n let overlayProjection = this.getProjection();\n //将地理坐标转换成屏幕坐标\n let position = overlayProjection.fromLatLngToDivPixel(this.lnglat);\n if(position){\n this._label.style.left = position.x + parseFloat(this.labelOffset.x) + 'px';\n this._label.style.top = position.y + parseFloat(this.labelOffset.y) + 'px';\n }\n }\n //更新点位信息\n MyLabel.prototype.setOptions = function(options){\n this.labelClass = options.labelClass;\n this.labelContent = options.labelContent;\n this.labelOffset = options.labelOffset || {x:0,y:0};\n this.lnglat = options.lnglat || this.lnglat;\n if(this._label){\n this.onAdd();\n }\n }\n //更新点位信息\n MyLabel.prototype.setPosition = function(lnglat){\n this.lnglat = lnglat;\n if(this._label){\n this.draw();\n }else{\n //触发onAdd draw\n this.setMap(map);\n }\n }\n //更新点位信息\n MyLabel.prototype.getPosition = function(){\n return this.lnglat;\n }\n //更新点位信息\n MyLabel.prototype.setZIndex = function(index){\n if(this._label){\n this._label.style.ZIndex = index;\n }\n }\n //用于updatePoint时 判断原来的点图元类型\n MyLabel.prototype.isMarkerContent = function(){\n return true;\n }\n //被删除时会调用\n MyLabel.prototype.onRemove = function(){\n this._label.parentNode.removeChild(this._label); \n this._label = null;\n }\n MyLabel.prototype.addListener = function(key,fun){\n let tt = this;\n if(key == 'dragend'){\n //编辑返回函数\n this.dragendFun = fun;\n return false;\n }\n setTimeout(()=>{\n if(tt._label){\n tt.funs[key] = function(event){\n if(event.stopPropagation){\n event.stopPropagation();\n }\n if(!tt.editable){\n fun({\n latLng: tt.lnglat,\n va: event,\n pixel: tt.getProjection().fromLatLngToDivPixel(tt.lnglat)\n });\n }\n }\n tt._label.addEventListener(key,tt.funs[key]);\n }else{\n tt.addListener(key,fun);\n }\n },50)\n }\n MyLabel.prototype.removeListener = function(key){\n if(key == 'dragend'){\n this.dragendFun = ()=>{};\n return false;\n }\n if(this._label){\n this._label.removeEventListener(key,this.funs[key]);\n }\n }\n //设置是否可以编辑\n MyLabel.prototype.setDraggable = function(boolean){\n this.editable = boolean;\n if(boolean){\n this.edit();\n }else{\n this._label.removeEventListener('mousedown',this.mdown);\n }\n }\n //编辑时 事件和逻辑\n MyLabel.prototype.edit = function(){\n let tt = this;\n tt.mdown = function(event){\n event.stopPropagation();\n //禁止文本选中\n tt._label.className = 'noselect';\n // 记录原始位置\n tt.editParam.sx = event.clientX;\n tt.editParam.sy = event.clientY;\n\n let mmEvent = function(e){\n e.stopPropagation();\n //计算与上一次的差值 累加到label dom上\n tt._label.style.left = parseFloat(tt._label.style.left.replace('px','')) + e.clientX - tt.editParam.sx + 'px';\n tt._label.style.top = parseFloat(tt._label.style.top.replace('px','')) + e.clientY - tt.editParam.sy + 'px';\n //更新原始位置\n tt.editParam.sx = e.clientX;\n tt.editParam.sy = e.clientY;\n }\n let mupEvent = function(e){\n e.stopPropagation();\n //计算与上一次的差值 累加到label dom上\n let x = parseFloat(tt._label.style.left.replace('px','')) + e.clientX - tt.editParam.sx,\n y = parseFloat(tt._label.style.top.replace('px','')) + e.clientY - tt.editParam.sy;\n //计算经纬度,固定label的位置\n tt._label.style.left = x + 'px';\n tt._label.style.top = y + 'px';\n let overlayProjection = tt.getProjection(),\n latlng = overlayProjection.fromDivPixelToLatLng(new google.maps.Point(x,y));\n tt.setPosition(latlng);\n // 清空 文本禁选\n tt._label.className = '';\n tt.dragendFun(e);\n //关闭全局监听\n document.removeEventListener('mousemove',mmEvent);\n document.removeEventListener('mouseup',mupEvent);\n }\n document.addEventListener('mousemove',mmEvent)\n document.addEventListener('mouseup',mupEvent)\n }\n tt._label.addEventListener('mousedown',tt.mdown);\n }\n /*=================================end========================================*/\n }\n //设置指定图元展示 google只有zoom和center全适应,单适应暂时无法实现\n setVisiblePoints(obj){\n let t = this;\n let ls = [];\n let {pointIds,lineIds,polygonIds,circleIds} = t.state;\n let getLngLats = (ids,type)=>{\n let alnglat = [],lngs = [],lats = [];\n if(!type){\n t.GM.getMoreGraphicParam(ids).map((item,index)=>{\n //根据天地图 覆盖物类型获取lnglat\n switch(item.geometryType){\n case 'point':\n alnglat.push([item.geometry.x,item.geometry.y]);\n break;\n case 'polyline':\n alnglat.push(...item.geometry.paths);\n break;\n case 'polygon':\n alnglat.push(...item.geometry.rings);\n break;\n case 'circle':\n alnglat.push([item.geometry.x,item.geometry.y]);\n break;\n }\n });\n }else{\n alnglat = ids;\n }\n alnglat.forEach((item,index)=>{\n lngs.push(item[0]);\n lats.push(item[1]);\n });\n lngs.sort();lats.sort();\n return {\n sw: new google.maps.LatLng({lng:lngs[0],lat:lats[0]}),\n ne: new google.maps.LatLng({lng:lngs[lngs.length-1],lat:lats[lats.length-1]})\n };\n }\n //算出 要展示的图元点位\n switch(obj.fitView){\n case 'point':\n ls = getLngLats(pointIds);\n break;\n case 'line':\n ls = getLngLats(lineIds);\n break;\n case 'polygon':\n ls = getLngLats(polygonIds);\n break;\n case 'circle':\n ls = getLngLats(circleIds);\n break;\n case 'all':\n ls = getLngLats([...pointIds,...lineIds,...polygonIds,...circleIds]);\n break;\n default:\n let ids = [];\n if(obj.fitView instanceof Array){\n ids = obj.fitView;\n }else if(typeof(obj.fitView) === 'string'){\n ids = obj.fitView.split(',');\n }\n //支持传经纬度\n if(ids[0] instanceof Array){\n ls = getLngLats(ids,'lnglat');\n }else{\n ls = getLngLats(ids);\n }\n break;\n }\n t.state.gis.fitBounds(new google.maps.LatLngBounds(ls.sw,ls.ne));\n }\n //设置地图中心位置 lng/经度 lat/纬度\n setCenter (gt) {\n let t = this;\n let mgt = [626.3002300508477,37.90942995363547];\n if(gt){\n //经纬度 必须存在 否则不操作\n if (!gt[0] || !gt[1]) {\n return false;\n }\n //如果设置的经纬度 与当前中心点一样 不操作\n let c = t.state.gis.getCenter();\n if(c.lng == gt[0] && c.lat == gt[1]){\n return false;\n }\n mgt = gt;\n }\n t.state.gis.setCenter(new google.maps.LatLng({lng:mgt[0],lat:mgt[1]}));\n t.setState({center: mgt});\n }\n //设置地图比例尺\n setZoomLevel (zoom) {\n let t =this;\n let z = t.getZoomLevel();\n if(z == zoom){\n return false;\n }\n t.state.gis.setZoom(zoom);\n }\n //清空地图所有图元\n clearAll (){\n let t = this;\n //清空热力图\n if(t.heatmap){\n t.heatmap.setMap(null);\n }\n t.heatmap = null;\n //先清除所有标记\n if(t.clusterIdList.length){\n t.clearClusters();\n }\n t.clearAllPointCollection();\n //清空点\n for(let i in t.GM.allGraphics){\n if(t.GM.allGraphics[i]){\n t.GM.allGraphics[i].setMap(null)\n }\n }\n //清空缓存数据\n t.GM.clearAll();\n //清空历史数据记录\n t.setState({\n pointIds: [],\n lineIds: [],\n polygonIds: [],\n circleIds: [],\n boundaryInfo: [],\n drawIds: {\n point: [],\n polyline: [],\n polygon: [],\n circle: [],\n rectangle: []\n }\n });\n }\n //图元功能处理方法\n //新增点位\n addPoint(mapPoints,type){\n let t = this;\n let psids = [...t.state.pointIds];\n let apf = ()=>{\n mapPoints.map((item,index)=>{\n //如果id重复,直接跳过不执行.\n if (this.GM.isRepetition(item.id)) {\n console.warn(`加点id: ${item.id} 重复`);\n return false;\n }\n //点位数据不符合,直接跳过\n if(!item.longitude || !item.latitude){\n console.warn(`点 经纬度 数据错误`);\n return false;\n }\n\n let cg = {\n width : 30,\n height : 30,\n labelContent: '',\n labelPixelX: 0,\n labelPixelY: 34,\n BAnimationType: 3,\n //高德以左上定位,百度以中心为定位\n //默认点的偏移值就不同\n markerContentX: -15,\n markerContentY: -30,\n deg: 0\n }\n if(item.markerContent){\n cg = {...cg,markerContentX: 0,markerContentY: 0,width:100,height:30};\n }\n //初始化默认数据\n if(item.config){\n cg = {...cg,...item.config};\n }\n let position = new t.omap.LatLng({lng:item.longitude,lat:item.latitude});\n let marker = null;\n if(item.markerContent){\n /*自定义html加点\n 用Label来实现,无法再添加label(高德有判断,实现不同)*/\n //覆盖物参数\n marker = new t.MyLabel(t.state.gis,{\n labelContent: item.markerContent,\n labelOffset: {x: cg.markerContentX,y: cg.markerContentY},\n });\n marker.setPosition(position);\n }else{\n /*添加非html点位*/\n // //添加label\n if(item.canShowLabel && cg.labelContent){\n //label默认样式\n let labelClass = 'label-content';\n //接受label自定义样式\n if(item.labelClass){\n labelClass = item.labelClass.split(',').join(' ');\n }\n let label = new t.MyLabel(t.state.gis,{\n isLabel: true,\n labelClass,\n labelContent: cg.labelContent,\n /*\n 为和百度等地图相同的参数 加上g.markerContentY值\n label是使用OverlayView手动实现,与marker没有关联的原因\n */\n labelOffset: {x: cg.labelPixelX,y: cg.labelPixelY+cg.markerContentY}\n });\n label.setPosition(position);\n //缓存\n t.GM.setGraphic(`${item.id}_vtxoMap_label`,label);\n }\n let iconUrl = '';\n // 360deg 不需要旋转\n if(parseFloat(cg.deg)%360 != 0){\n iconUrl = new RotateIcon({\n url:item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\n width: cg.width,\n height: cg.height\n });\n }\n let icon = {\n anchor: {x: -cg.markerContentX,y: -cg.markerContentY},\n size: new t.omap.Size(cg.width,cg.height),\n scaledSize: new t.omap.Size(cg.width,cg.height),\n url: parseFloat(cg.deg)%360 != 0 ?\n iconUrl.setRotation(cg.deg).getUrl()\n :item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\n labelOrigin: {x: cg.labelPixelX,y: cg.labelPixelY}\n };\n //添加点到地图\n marker = new t.omap.Marker({\n icon,\n position,\n map: t.state.gis\n });\n if(item.canShowLabel && cg.labelContent){\n marker.ishaveLabel = true;\n }\n }\n if(cg.zIndex || cg.zIndex === 0){\n marker.setZIndex(cg.zIndex);\n }\n if(!item.markerContent && cg.BAnimationType == 0){\n marker.setAnimation(google.maps.Animation.BOUNCE);\n }else if(!item.markerContent && cg.BAnimationType == 1){\n marker.setAnimation(google.maps.Animation.DROP);\n }\n //点击事件\n let mClick = marker.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(item.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = marker.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(item.id,e);\n });\n //鼠标移出事件\n let mMouseout = marker.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(item.id,e);\n });\n //缓存所有点的id\n psids.push(item.id);\n //缓存当前点的图元对象和基本数据\n t.GM.setGraphic(item.id,marker)\n .setGraphicParam(item.id,{\n attributes: {...item,other: item},\n geometryType: 'point',\n geometry: {\n type: 'point',\n x: item.longitude,\n y: item.latitude\n }\n }).setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n });\n if(type !== 'defined'){\n //所有点缓存在state中\n t.state.pointIds = psids;\n // t.setState({\n // pointIds: psids\n // });\n }\n }\n //内部 不需要旋转图标的处理方式\n if(type == 'nodeg'){\n apf();\n }else{\n //缓存图片 旋转功能使用\n mapPoints.map((item,index)=>{\n //避免多次缓存\n if(item.url && !t.cacheImgRecord[item.url]){\n let i = new Image();\n i.src = item.url;\n t.cacheImg.appendChild(i);\n t.cacheImgRecord[item.url] = true;\n }\n });\n //定时等待 图片缓存,点位旋转功能需要\n t.addPsTimer = setTimeout(()=>{\n apf();\n },200)\n }\n }\n //更新点位\n updatePoint(mapPoints,type){\n let t = this;\n let upf = ()=>{\n mapPoints.map((item,index)=>{\n //判断图元是否存在.\n if (this.GM.isRepetition(item.id)) {\n //点位数据不符合,直接跳过\n if(!item.longitude || !item.latitude){\n console.warn(`点 经纬度 数据错误`);\n return false;\n }\n //获取原有的图元 和 对应的label\n let gc = t.GM.getGraphic(item.id),\n gc_label = t.GM.getGraphic(`${item.id}_vtxoMap_label`);\n //更新前删除聚合\n if(t.clusterIdList.indexOf(item.id) > -1){\n t._cluster.removeMarker(gc);\n if(gc_label){\n t._cluster.removeMarker(gc_label);\n }\n }\n let cg = {\n width : 30,\n height : 30,\n labelContent: '',\n labelPixelX: 0,\n labelPixelY: 34,\n BAnimationType: 3,\n //高德以左上定位,百度以中心为定位\n //默认点的偏移值就不同\n markerContentX: -15,\n markerContentY: -30,\n deg: 0\n }\n if(item.markerContent){\n cg = {...cg,markerContentX: 0,markerContentY: 0,width:100,height:30};\n }\n if(item.config){\n cg = {...cg,...item.config};\n }\n //新旧经纬度 旧经纬度配合moveTo使用\n let position = new t.omap.LatLng({lng:item.longitude,lat:item.latitude});\n let oldPosition = gc.getPosition();\n //前后点位类型都是markerContent\n if(gc.isMarkerContent && gc.isMarkerContent() && item.markerContent){\n /*\n 自定义html加点\n 用Label来实现,无法再添加label(高德有判断,实现不同)\n */\n //覆盖物参数\n gc.setOptions({\n labelContent: item.markerContent,\n labelOffset: {x: cg.markerContentX,y: cg.markerContentY},\n lnglat: oldPosition\n })\n }else if(gc.isMarkerContent && gc.isMarkerContent() && !item.markerContent){\n //markerContent类型转 marker-url类型\n //清除事件\n gc.removeListener('click');\n gc.removeListener('mouseover');\n gc.removeListener('mouseout');\n //删除原点位\n gc.setMap(null);\n let iconUrl = '';\n // 360deg 不需要旋转\n if(parseFloat(cg.deg)%360 != 0){\n iconUrl = new RotateIcon({\n url:item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\n width: cg.width,\n height: cg.height\n });\n }\n let icon = {\n anchor: {x: -cg.markerContentX,y: -cg.markerContentY},\n size: new t.omap.Size(cg.width,cg.height),\n scaledSize: new t.omap.Size(cg.width,cg.height),\n url: parseFloat(cg.deg)%360 != 0 ?\n iconUrl.setRotation(cg.deg).getUrl()\n :item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\n labelOrigin: {x: cg.labelPixelX,y: cg.labelPixelY}\n };\n //重新加载点位\n gc = new t.omap.Marker({\n icon,\n position:oldPosition,\n map: t.state.gis\n });\n //切换 图元对象缓存\n t.GM.setGraphic(item.id,gc);\n if(item.canShowLabel && cg.labelContent){\n //label默认样式\n let labelClass = 'label-content';\n //接受label自定义样式\n if(item.labelClass){\n labelClass = item.labelClass.split(',').join(' ');\n }\n if(!gc_label){\n gc_label = new t.MyLabel();\n t.GM.setGraphic(`${item.id}_vtxoMap_label`,gc_label);\n }\n gc_label.setOptions({\n labelClass,\n labelContent: cg.labelContent,\n /*\n 为和百度等地图相同的参数 加上g.markerContentY值\n label是使用OverlayView手动实现,与marker没有关联的原因\n */\n labelOffset: {x: cg.labelPixelX,y: cg.labelPixelY+cg.markerContentY}\n })\n gc.ishaveLabel = true;\n }\n //点击事件\n let mClick = gc.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(item.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = gc.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(item.id,e);\n });\n //鼠标移出事件\n let mMouseout = gc.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(item.id,e);\n });\n t.GM.setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n }else if(!gc.isMarkerContent && item.markerContent){\n //marker-url类型转markerContent类型\n //清除事件\n if(t.GM.getGraphicParam(`${item.id}_omap_event`).click){\n t.GM.getGraphicParam(`${item.id}_omap_event`).click.remove();\n }\n if(t.GM.getGraphicParam(`${item.id}_omap_event`).mouseover){\n t.GM.getGraphicParam(`${item.id}_omap_event`).mouseover.remove();\n }\n if(t.GM.getGraphicParam(`${item.id}_omap_event`).mouseout){\n t.GM.getGraphicParam(`${item.id}_omap_event`).mouseout.remove();\n }\n //删除原点位\n gc.setMap(null);\n //存在 label点位 直接删除\n if(gc_label){\n gc_label.setMap(null);\n t.GM.removeGraphic(`${item.id}_vtxoMap_label`);\n }\n //重新加载点位 (原有位置加载,配合moveTo方法使用)\n gc = new t.MyLabel(t.state.gis,{\n labelContent: item.markerContent,\n labelOffset: {x: cg.markerContentX,y: cg.markerContentY},\n });\n gc.setPosition(oldPosition);\n //切换 图元对象缓存\n t.GM.setGraphic(item.id,gc);\n //点击事件\n let mClick = gc.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(item.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = gc.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(item.id,e);\n });\n //鼠标移出事件\n let mMouseout = gc.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(item.id,e);\n });\n t.GM.setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n })\n }else{\n let iconUrl = '';\n // 360deg 不需要旋转\n if(parseFloat(cg.deg)%360 != 0){\n iconUrl = new RotateIcon({\n url:item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\n width: cg.width,\n height: cg.height\n });\n }\n //前后点位类型都是marker-url\n let icon = {\n anchor: {x: -cg.markerContentX,y: -cg.markerContentY},\n size: new t.omap.Size(cg.width,cg.height),\n scaledSize: new t.omap.Size(cg.width,cg.height),\n url: parseFloat(cg.deg)%360 != 0 ?\n iconUrl.setRotation(cg.deg).getUrl()\n :item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\n labelOrigin: {x: cg.labelPixelX,y: cg.labelPixelY}\n };\n gc.setIcon(icon);\n if(item.canShowLabel && cg.labelContent){\n //label默认样式\n let labelClass = 'label-content';\n //接受label自定义样式\n if(item.labelClass){\n labelClass = item.labelClass.split(',').join(' ');\n }\n if(!gc_label){\n gc_label = new t.MyLabel();\n t.GM.setGraphic(`${item.id}_vtxoMap_label`,gc_label);\n }\n gc_label.setOptions({\n labelClass,\n labelContent: cg.labelContent,\n /*\n 为和百度等地图相同的参数 加上g.markerContentY值\n label是使用OverlayView手动实现,与marker没有关联的原因\n */\n labelOffset: {x: cg.labelPixelX,y: cg.labelPixelY+cg.markerContentY}\n })\n gc.ishaveLabel = true;\n }\n }\n if(!item.markerContent && cg.BAnimationType == 0){\n gc.setAnimation(google.maps.Animation.BOUNCE);\n }else if(!item.markerContent && cg.BAnimationType == 1){\n gc.setAnimation(google.maps.Animation.DROP);\n }\n /*moveTo*/\n //动画效果会延迟执行经纬度的切换\n if(cg.isAnimation){\n t.moveTo(item.id,[item.longitude,item.latitude],cg.animationDelay,cg.autoRotation,item.url,item.urlleft);\n }else{\n if(gc_label){\n gc_label.setPosition(position)\n }\n //修改经纬度\n gc.setPosition(position);\n }\n if(cg.zIndex || cg.zIndex === 0){\n gc.setZIndex(cg.zIndex);\n }\n t.GM.setGraphicParam(\n item.id,\n {\n attributes: {...item,other: item},\n geometryType: 'point',\n geometry: {\n type: 'point',\n x: item.longitude,\n y: item.latitude\n }\n }\n );\n }else{\n console.warn(`更新的点位id不存在!`);\n return false;\n }\n });\n t.moveAnimation();\n }\n //内部 不需要旋转图标的处理方式\n if(type == 'nodeg'){\n upf();\n }else{\n //缓存图片 旋转功能使用\n mapPoints.map((item,index)=>{\n //排除已经缓存的\n if(item.url && !t.cacheImgRecord[item.url]){\n let i = new Image();\n i.src = item.url;\n t.cacheImg.appendChild(i);\n t.cacheImgRecord[item.url] = true;\n }\n if(item.urlleft && !t.cacheImgRecord[item.urlleft]){\n let i = new Image();\n i.src = item.urlleft;\n t.cacheImg.appendChild(i);\n t.cacheImgRecord[item.urlleft] = true;\n }\n });\n // 定时等待 图片缓存,点位旋转功能需要\n t.upPsTimer = setTimeout(()=>{\n upf();\n },200)\n }\n }\n //添加线\n addLine(mapLines,type){\n let t = this;\n let lsids = [...t.state.lineIds];\n //遍历添加线(图元)\n mapLines.map((item,index)=>{\n //如果id重复,直接跳过不执行.\n if (t.GM.isRepetition(item.id)) {\n console.warn(`多折线id: ${item.id} 重复`);\n return false;\n }\n //多折线点位数据不符合,直接跳过\n if(!(item.paths && item.paths.length >= 2)){\n console.warn(`多折线paths数据错误`);\n return false;\n }\n //初始化默认参数\n let cg = {\n color: '#277ffa',\n pellucidity: 0.9,\n lineWidth: 5,\n lineType: 'solid',\n isHidden: false\n }\n //合并参数\n if(item.config){\n cg = {...cg,...item.config};\n }\n // 线样式\n let icons = [];\n if(cg.lineType == 'dashed'){\n let lineSymbol = {\n path: 'M 0,-1 0,1',\n strokeOpacity: 1,\n scale: cg.lineWidth > 5?5:cg.lineWidth <2.5?2.5:cg.lineWidth\n };\n icons = [{icon:lineSymbol,offset: '0',repeat: '20px'}]\n }\n //处理线的点数组\n let linePath = item.paths.map((item,index)=>{\n return new google.maps.LatLng({lng: item[0],lat: item[1]});\n }),\n //处理线的参数\n lineOption = {\n strokeColor : cg.color, // 线颜色\n strokeWeight : cg.lineWidth, // 线宽\n strokeOpacity : cg.lineType == 'dashed'?0:cg.pellucidity, // 线透明度\n icons\n };\n //创建线对象\n let line = new google.maps.Polyline({...lineOption,path:linePath});\n //判断线显示和隐藏\n if(cg.isHidden){\n line.setVisible(false);\n }else{\n line.setVisible(true);\n }\n lsids.push(item.id);\n //添加线至地图\n line.setMap(t.state.gis);\n //点击事件\n let mClick = line.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(item.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = line.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(item.id,e);\n });\n //鼠标移出事件\n let mMouseout = line.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(item.id,e);\n });\n t.GM.setGraphic(item.id,line)\n .setGraphicParam(item.id,{\n attributes: {\n ...item,\n paths: item.paths,\n other: item\n },\n geometryType: 'polyline',\n geometry: {\n type: 'polyline',\n paths: item.paths\n }\n }).setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n });\n if(type !== 'defined'){\n t.state.lineIds = lsids;\n // t.setState({\n // lineIds: lsids\n // });\n }\n }\n //更新线\n updateLine(mapLines){\n let t = this;\n //遍历添加线(图元)\n mapLines.map((item,index)=>{\n //判断图元是否存在.\n if (t.GM.isRepetition(item.id)) {\n //多折线点位数据不符合,直接跳过\n if(!(item.paths && item.paths.length >= 2)){\n console.warn(`多折线paths数据错误`);\n return false;\n }\n }else{\n console.warn(`更新的多折线id不存在!`);\n return false;\n }\n let gc = t.GM.getGraphic(item.id);\n //初始化默认参数\n let cg = {\n color: '#277ffa',\n pellucidity: 0.9,\n lineWidth: 5,\n lineType: 'solid',//'solid' 'dashed'\n isHidden: false\n }\n //合并参数\n if(item.config){\n cg = {...cg,...item.config};\n }\n // 线样式\n let icons = [];\n if(cg.lineType == 'dashed'){\n let lineSymbol = {\n path: 'M 0,-1 0,1',\n strokeOpacity: 1,\n scale: cg.lineWidth > 5?5:cg.lineWidth <2.5?2.5:cg.lineWidth\n };\n icons = [{icon:lineSymbol,offset: '0',repeat: '20px'}]\n }\n //处理线的点数组\n let linePath = item.paths.map((item,index)=>{\n return new google.maps.LatLng({lng: item[0],lat: item[1]});\n }),\n //处理线的参数\n lineOption = {\n strokeColor : cg.color, // 线颜色\n strokeWeight : cg.lineWidth, // 线宽\n strokeOpacity : cg.lineType == 'dashed'?0:cg.pellucidity, // 线透明度\n icons\n };\n //修改线点位数据\n gc.setPath(linePath);\n //修改线配置\n gc.setOptions(lineOption);\n //判断线显示和隐藏\n if(cg.isHidden){\n gc.setVisible(false);\n }else{\n gc.setVisible(true);\n }\n t.GM.setGraphicParam(item.id,{\n attributes: {\n ...item,\n paths: item.paths,\n other: item\n },\n geometryType: 'polyline',\n geometry: {\n type: 'polyline',\n paths: item.paths\n }\n });\n });\n }\n //添加面\n addPolygon(mapPolygons){\n let t = this;\n let pgsids = [...t.state.polygonIds];\n //遍历添加面(图元)\n mapPolygons.map((item,index)=>{\n //如果id重复,直接跳过不执行.\n if (t.GM.isRepetition(item.id)) {\n console.warn(`多边形id: ${item.id} 重复`);\n return false;\n }\n //多边形点位数据不符合,直接跳过\n if(!(item.rings && item.rings.length >= 3)){\n console.warn(`多边形rings数据错误`);\n return false;\n }\n //初始化参数\n let cg = {\n lineType: 'solid',\n lineWidth: 5,\n lineColor: '#277ffa',\n lineOpacity: 1,\n color: '#fff',\n pellucidity: 0.5\n // isHidden: false //后期需要再加\n }\n if(item.config){\n cg = {...cg,...item.config};\n }\n //面的参数\n let polygonOption = {\n strokeColor: cg.lineColor,\n strokeOpacity: cg.lineOpacity,\n strokeWeight: cg.lineWidth,\n strokeStyle: cg.lineType,\n fillColor: cg.color,\n fillOpacity: cg.pellucidity\n },\n polygonPath = item.rings.map((item,index)=>{\n return new google.maps.LatLng({lng: item[0],lat: item[1]});\n });\n //创建面对象\n let polygon = new google.maps.Polygon({...polygonOption,paths: polygonPath});\n //添加面至地图\n polygon.setMap(t.state.gis);\n //点击事件\n let mClick = polygon.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(item.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = polygon.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(item.id,e);\n });\n //鼠标移出事件\n let mMouseout = polygon.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(item.id,e);\n });\n //缓存面id\n pgsids.push(item.id);\n //缓存面图元对象和对于传入数据\n t.GM.setGraphic(item.id,polygon)\n .setGraphicParam(item.id,{\n attributes: {\n ...item,\n rings: item.rings,\n other: item\n },\n geometryType: 'polygon',\n geometry: {\n type: 'polygon',\n rings: item.rings\n },\n }).setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n });\n t.state.polygonIds = pgsids;\n // t.setState({\n // polygonIds: pgsids\n // });\n }\n //更新面\n updatePolygon(mapPolygons){\n let t = this;\n mapPolygons.map((item,index)=>{\n //判断图元是否存在.\n if (t.GM.isRepetition(item.id)) {\n //多边形点位数据不符合,直接跳过\n if(!(item.rings && item.rings.length >= 3)){\n console.warn(`多边形rings数据错误`);\n return false;\n }\n //获取原有的图元\n let gc = t.GM.getGraphic(item.id);\n //初始化参数\n let cg = {\n lineType: 'solid',\n lineWidth: 5,\n lineColor: '#277ffa',\n lineOpacity: 1,\n color: '#fff',\n pellucidity: 0.5\n // isHidden: false //后期需要再加\n }\n if(item.config){\n cg = {...cg,...item.config};\n }\n //面的参数\n let polygonOption = {\n strokeColor: cg.lineColor,\n strokeOpacity: cg.lineOpacity,\n strokeWeight: cg.lineWidth,\n strokeStyle: cg.lineType,\n fillColor: cg.color,\n fillOpacity: cg.pellucidity\n },\n polygonPath = item.rings.map((item,index)=>{\n return new google.maps.LatLng({lng: item[0],lat: item[1]});\n });\n //更新经纬度\n gc.setPath(polygonPath);\n //更新 多边形 参数\n gc.setOptions(polygonOption);\n t.GM.setGraphicParam(\n item.id,\n {\n attributes: {\n ...item,\n rings: item.rings,\n other: item\n },\n geometryType: 'polygon',\n geometry: {\n type: 'polygon',\n rings: item.rings\n }\n }\n );\n }else{\n console.warn(`更新的多边形id不存在!`);\n return false;\n }\n });\n }\n //添加圆 circle\n addCircle(mapCircles){\n let t = this;\n let ccsids = [...t.state.circleIds];\n mapCircles.map((item,index)=>{\n //如果id重复,直接跳过不执行.\n if (t.GM.isRepetition(item.id)) {\n console.warn(`圆id: ${item.id} 重复`);\n return false;\n }\n //圆 点位数据不符合,直接跳过\n if(!item.longitude || !item.latitude){\n console.warn(`圆 经纬度 数据错误`);\n return false;\n }\n let cg = {\n lineType: 'solid',\n lineWidth: 5,\n lineColor: '#277ffa',\n lineOpacity: 1,\n color: '#fff',\n pellucidity: 0.5\n // isHidden: false //后期需要在加\n }\n if(item.config){\n cg = {...cg,...item.config};\n }\n //初始化配置数据\n let circleOption = {\n strokeColor: cg.lineColor,\n strokeOpacity: cg.lineOpacity,\n strokeWeight: cg.lineWidth,\n strokeStyle: cg.lineType,\n fillColor: cg.color,\n fillOpacity: cg.pellucidity\n },\n centerPoint = new google.maps.LatLng({lng: item.longitude,lat: item.latitude});\n //创建圆图元实例\n let circle = new google.maps.Circle({\n ...circleOption,\n radius: item.radius,\n center: centerPoint\n });\n //添加圆至地图\n circle.setMap(t.state.gis);\n //点击事件\n let mClick = circle.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(item.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = circle.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(item.id,e);\n });\n //鼠标移出事件\n let mMouseout = circle.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(item.id,e);\n });\n ccsids.push(item.id);\n //缓存数据\n t.GM.setGraphic(item.id,circle)\n .setGraphicParam(item.id,{\n attributes: {...item,other: item},\n geometryType: 'circle',\n geometry: {\n type: 'circle',\n x: item.longitude,\n y: item.latitude,\n radius: item.radius\n }\n }).setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n });\n t.state.circleIds = ccsids;\n // t.setState({\n // circleIds: ccsids\n // });\n }\n //更新圆\n updateCircle(mapCircles){\n let t = this;\n mapCircles.map((item,index)=>{\n //判断图元是否存在.\n if (t.GM.isRepetition(item.id)) {\n //圆 点位数据不符合,直接跳过\n if(!item.longitude || !item.latitude){\n console.warn(`圆 经纬度 数据错误`);\n return false;\n }\n //获取原有的图元\n let gc = t.GM.getGraphic(item.id);\n //获取原有的面属性,转换key值\n let cg = {\n lineType: 'solid',\n lineWidth: 5,\n lineColor: '#277ffa',\n lineOpacity: 1,\n color: '#fff',\n pellucidity: 0.5\n // isHidden: false //后期需要在加\n }\n if(item.config){\n cg = {...cg,...item.config};\n }\n //初始化配置数据\n let circleOption = {\n strokeColor: cg.lineColor,\n strokeOpacity: cg.lineOpacity,\n strokeWeight: cg.lineWidth,\n strokeStyle: cg.lineType,\n fillColor: cg.color,\n fillOpacity: cg.pellucidity\n },\n centerPoint = new google.maps.LatLng({lng: item.longitude,lat: item.latitude});\n //修改中心点\n gc.setCenter(centerPoint);\n //修改半径\n gc.setRadius(item.radius);\n //修改圆 参数\n gc.setOptions(circleOption);\n //缓存图元的数据,便于后期操作\n t.GM.setGraphicParam(item.id,{\n attributes: {...item,other: item},\n geometryType: 'circle',\n geometry: {\n type: 'circle',\n x: item.longitude,\n y: item.latitude,\n radius: item.radius\n }\n });\n }else{\n console.warn(`更新的圆id不存在!`);\n return false;\n }\n });\n }\n //热力图\n heatMapOverlay(d = {}){\n let t = this;\n let cg = {\n radius: 20,\n max: 100,\n visible: true,\n opacity: 0.7\n };\n if(d.config){\n cg = {...cg,...d.config};\n }\n if(!t.heatmap){\n t.heatmap = new google.maps.visualization.HeatmapLayer({\n map: t.state.gis\n });\n }\n let option = {\n radius: cg.radius,\n //百度是1-100,高德是0-1\n opacity: cg.visible?cg.opacity:0,\n // maxIntensity: cg.max\n }\n if(cg.gradient){\n option.gradient = ['rgba(102,255, 0,0)'];\n //将gradient排序,与其他地图的热力图数据一致\n let sortArray = [];\n for (let i in cg.gradient) {\n sortArray.push({key: i,value: cg.gradient[i]});\n }\n option.gradient = [\n ...option.gradient,\n ...sortArray.sort((a,b)=>{\n return a.key > b.key;\n }).map((item)=>{\n return item.value;\n })\n ]\n }\n t.heatmap.setOptions(option);\n t.heatmap.setData(\n (d.data || []).map((item,index)=>{\n return new google.maps.LatLng({lng: item.lng,lat: item.lat})\n })\n );\n }\n //添加海量点\n addPointCollection(data = []){\n let t = this;\n //处理海量点\n let panes = t.canvasProjectionOverlay.getPanes(),\n ftp = t.canvasProjectionOverlay.getProjection();\n if(panes){\n if(!t.pointCollectionId){\n t.pointCollectionId = `${t.props.mapId}_vtx_gmap_html_pointCollection`;\n let divpc = document.createElement('div');\n divpc.className = 'vtx_gmap_html_pointCollection_a';\n divpc.style.top = `-${t.state.gis.getDiv().offsetHeight/2}px`;\n divpc.style.left = `-${t.state.gis.getDiv().offsetWidth/2}px`;\n divpc.id = t.pointCollectionId;\n panes.markerLayer.appendChild(divpc);\n }\n data.map((item,index)=>{\n let d = item || {};\n let points = (d.points || []).map((d,i)=>{\n let p = new google.maps.LatLng(d);\n p = ftp.fromLatLngToContainerPixel(p);\n return [p.x,p.y];\n });\n let options = {\n size: d.size,\n shape: d.shape,\n color: d.color,\n width: t.state.gis.getDiv().offsetWidth,\n height: t.state.gis.getDiv().offsetHeight,\n mapId: t.props.mapId\n };\n let VotexpointCollection = new GMapLib.PointCollection(points,options);\n t.morepoints.push({\n id: d.id,\n value: VotexpointCollection\n });\n VotexpointCollection.draw();\n })\n }else{\n if(t.addpointCollectionTimer){\n clearTimeout(t.addpointCollectionTimer);\n }\n t.addpointCollectionTimer = setTimeout(()=>{\n t.addPointCollection(data);\n },50);\n }\n }\n //更新海量点\n updatePointCollection(data = []){\n let t = this;\n let ftp = t.canvasProjectionOverlay.getProjection();\n if(ftp){\n data.map((ds,ind)=>{\n t.morepoints.map((item,index)=>{\n if(item.id == ds.id){\n let points = (ds.points || []).map((d,i)=>{\n let p = new google.maps.LatLng(d);\n p = ftp.fromLatLngToContainerPixel(p);\n return [p.x,p.y];\n });\n let options = {\n size: ds.size,\n shape: ds.shape,\n color: ds.color,\n width: t.state.gis.getDiv().offsetWidth,\n height: t.state.gis.getDiv().offsetHeight,\n };\n item.value.reDraw(points,options);\n }\n })\n })\n }else{\n if(t.updatePointCollectionTimer){\n clearTimeout(t.updatePointCollectionTimer);\n }\n t.updatePointCollectionTimer = setTimeout(()=>{\n t.addPointCollection(data);\n },50);\n }\n }\n //删除海量点\n clearPointCollection(ids = []){\n let t = this;\n ids.map((id,ind)=>{\n t.morepoints.map(function (item,index) {\n if(id == item.id){\n item.value.clear();\n }\n });\n });\n }\n //删除全部海量点\n clearAllPointCollection(){\n let t = this;\n t.morepoints.map(function (item,index) {\n item.value.clear();\n });\n }\n //删除图元\n removeGraphic(id,type){\n let t = this;\n let graphic = t.GM.getGraphic(id),\n gc_label = t.GM.getGraphic(`${id}_vtxoMap_label`);\n //删除点聚合效果\n if(t.clusterIdList.indexOf(id) > -1){\n t.removeCluster(id);\n }\n if(graphic){\n //清除地图中图元\n graphic.setMap(null);\n //清除对应id的图元数据缓存\n t.GM.removeGraphic(id);\n }else{\n return false;\n }\n //删除点位label\n if(gc_label){\n gc_label.setMap(null);\n t.GM.removeGraphic(`${id}_vtxoMap_label`);\n }\n for(let i = 0 ; i < t.movePoints.length ; i++){\n if(t.movePoints[i].id == id){\n t.movePoints.splice(i,1);\n continue;\n }\n }\n let ids = [];\n switch(type){\n case 'point':\n ids = t.state.pointIds;\n break;\n case 'line':\n ids = t.state.lineIds;\n break;\n case 'polygon':\n ids = t.state.polygonIds;\n break;\n case 'circle':\n ids = t.state.circleIds;\n break;\n case 'draw':\n if(t.state.drawIds.point.indexOf(id) > -1){\n t.state.drawIds.point.splice(t.state.drawIds.point.indexOf(id),1);\n }\n if(t.state.drawIds.polyline.indexOf(id) > -1){\n t.state.drawIds.polyline.splice(t.state.drawIds.polyline.indexOf(id),1);\n }\n if(t.state.drawIds.polygon.indexOf(id) > -1){\n t.state.drawIds.polygon.splice(t.state.drawIds.polygon.indexOf(id),1);\n }\n if(t.state.drawIds.circle.indexOf(id) > -1){\n t.state.drawIds.circle.splice(t.state.drawIds.circle.indexOf(id),1);\n }\n if(t.state.drawIds.rectangle.indexOf(id) > -1){\n t.state.drawIds.rectangle.splice(t.state.drawIds.rectangle.indexOf(id),1);\n }\n break;\n default:\n if(t.state.pointIds.indexOf(id) > -1){\n t.state.pointIds.splice(t.state.pointIds.indexOf(id),1);\n }\n if(t.state.lineIds.indexOf(id) > -1){\n t.state.lineIds.splice(t.state.lineIds.indexOf(id),1);\n }\n if(t.state.polygonIds.indexOf(id) > -1){\n t.state.polygonIds.splice(t.state.polygonIds.indexOf(id),1);\n }\n if(t.state.circleIds.indexOf(id) > -1){\n t.state.circleIds.splice(t.state.circleIds.indexOf(id),1);\n }\n break;\n }\n if(id == t.state.editId){\n t.state.editId = '';\n }\n if(ids.indexOf(id) != -1){\n ids.splice(ids.indexOf(id),1);\n }\n }\n /*根据图元id,使图元变成可编辑状态*/\n doEdit (id){\n let t = this;\n //获取编辑点的图元和参数\n let graphic = t.GM.getGraphic(id),\n gLabel = t.GM.getGraphic(`${id}_vtxoMap_label`),\n gtp = t.GM.getGraphicParam(id);\n if(!graphic)return false;\n //关闭先前编辑的图元\n if(!!t.state.editId){\n t.endEdit();\n }\n if(!t.editGraphicChange){\n //编辑变动后\n t.editGraphicChange = (e)=>{\n let id = t.state.editId,\n param = t.getGraphic(id),\n obj = {\n param,e,id,\n geometry: param.geometry\n };\n if(param.geometry.type == 'polygon'){\n if(google.maps.geometry && google.maps.geometry.spherical){\n obj.area = google.maps.geometry.spherical.computeArea(param.mapLayer.getPath().getArray());\n }else{\n obj.area = 0;\n }\n }\n if(param.geometry.type == 'polyline'){\n obj.distance = t.calculateDistance(param.geometry.paths);\n }\n if(param.geometry.type == 'circle'){\n obj.area = Math.pow(param.geometry.radius,2)*Math.PI;\n if(t.editTimeout){\n clearTimeout(t.editTimeout);\n }\n t.editTimeout = setTimeout(()=>{\n t.setState({editGraphic:obj},()=>{\n t.props.editGraphicChange(obj);\n });\n },300);\n }else{\n t.setState({editGraphic:obj},()=>{\n t.props.editGraphicChange(obj);\n });\n }\n }\n }\n switch(gtp.geometryType){\n case 'point':\n graphic.setDraggable(true);\n t.editEvent['dragend'] = graphic.addListener(\"dragend\",t.editGraphicChange);\n //判断是否是 markerContent 再判断是否有label\n if(!gtp.attributes.markerContent && gLabel){\n //label事件对象 便于删除\n t.editPointLabel = graphic.addListener(\"drag\",(event)=>{\n gLabel.setPosition(event.latLng);\n });\n }\n break;\n case 'polyline':\n case 'polygon':\n case 'rectangle':\n graphic.setEditable(true);\n t.editEvent['mouseup'] = graphic.addListener(\"mouseup\",t.editGraphicChange);\n break;\n case 'circle':\n graphic.setEditable(true);\n t.editEvent['center_changed'] = graphic.addListener(\"center_changed\",t.editGraphicChange);\n t.editEvent['radius_changed'] = graphic.addListener(\"radius_changed\",t.editGraphicChange);\n break;\n }\n t.setState({editId:id});\n }\n //关闭编辑\n endEdit (){\n let t = this;\n //获取编辑点的图元和参数\n let graphic = t.GM.getGraphic(t.state.editId);\n let gtp = t.GM.getGraphicParam(t.state.editId);\n if(!graphic)return false;\n switch(gtp.geometryType){\n case 'point':\n graphic.setDraggable(false);\n if(graphic.removeListener){\n graphic.removeListener(\"dragend\",t.editGraphicChange);\n }else{\n for(let i in t.editEvent){\n if(t.editEvent[i]){\n t.editEvent[i].remove();\n }\n }\n if(t.editPointLabel){\n t.editPointLabel.remove();\n t.editPointLabel = null;\n }\n }\n break;\n case 'polyline':\n case 'polygon':\n case 'rectangle':\n case 'circle':\n graphic.setEditable(false);\n for(let i in t.editEvent){\n if(t.editEvent[i]){\n t.editEvent[i].remove();\n }\n }\n break;\n }\n //事件缓存制空,避免异常\n t.editEvent = {};\n let editGraphic = t.state.editGraphic;\n if(editGraphic){\n t.setState({\n editId: '',\n editGraphic: ''\n },()=>{\n t.props.editGraphicChange(editGraphic);\n })\n }\n }\n //绘制图元\n draw(obj){\n let t = this,drawParam = {};\n //先关闭(防止连点)\n t._drawmanager.setDrawingMode(null);\n //初始化参数\n drawParam.geometryType = obj.geometryType || 'point';\n drawParam.parameter = obj.parameter?{...obj.parameter}:{};\n drawParam.data = obj.data?{...obj.data}:{};\n drawParam.data.id = (obj.data || {}).id || `draw${new Date().getTime()}`;\n //判断id是否存在\n let len = t.state.drawIds[drawParam.geometryType].indexOf(drawParam.data.id);\n if(len > -1){\n //如果id存在 删除存在的图元,清除drawId中的id数据\n t.removeGraphic(drawParam.data.id);\n t.state.drawIds[drawParam.geometryType].splice(len,1);\n }\n let param = {};\n let paramgcr = {};\n if(drawParam.geometryType == 'polygon' || drawParam.geometryType == 'circle' || drawParam.geometryType == 'rectangle'){\n paramgcr.fillColor = drawParam.parameter.color;\n paramgcr.strokeColor = drawParam.parameter.lineColor;\n paramgcr.strokeOpacity = drawParam.parameter.lineOpacity;\n paramgcr.strokeWeight = drawParam.parameter.lineWidth;\n paramgcr.fillOpacity = drawParam.parameter.pellucidity;\n paramgcr.strokeStyle = drawParam.parameter.lineType;\n paramgcr.extData = {\n id: drawParam.data.id,\n attributes: {\n id: drawParam.data.id,\n config: {\n color: drawParam.parameter.color,\n lineColor: drawParam.parameter.lineColor,\n lineOpacity: drawParam.parameter.lineOpacity,\n pellucidity: drawParam.parameter.pellucidity,\n lineWidth: drawParam.parameter.lineWidth\n }\n },\n type: drawParam.geometryType\n };\n }\n switch(drawParam.geometryType){\n case 'point':\n let icon = {\n anchor: {x: -drawParam.parameter.markerContentX || 15,y: -drawParam.parameter.markerContentY || 30},\n size: new t.omap.Size(drawParam.parameter.width || 30,drawParam.parameter.height || 30),\n scaledSize: new t.omap.Size(drawParam.parameter.width || 30,drawParam.parameter.height || 30),\n url: drawParam.parameter.url || `${configUrl.mapServerURL}/images/defaultMarker.png`\n };\n t._drawmanager.setOptions({\n drawingControl: false,\n markerOptions: {\n icon\n }\n });\n t._drawmanager.setDrawingMode('marker');\n t._drawmanagerEvent = t._drawmanager.addListener('markercomplete',(e)=>{\n //清楚事件监听\n t._drawmanagerEvent.remove();\n //关闭绘制功能\n t._drawmanager.setDrawingMode(null);\n t.GM.setGraphic(drawParam.data.id,e);\n let backobj = {\n id: drawParam.data.id,\n attributes: {\n id: drawParam.data.id,\n url: icon.url,\n config: {\n width: icon.size.width,\n height: icon.size.height\n }\n },\n geometry: {\n type: 'point',\n x: e.getPosition().lng(),\n y: e.getPosition().lat()\n },\n geometryType: 'point',\n mapLayer: e\n }\n //点击事件\n let mClick = e.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(drawParam.data.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = e.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(drawParam.data.id,e);\n });\n //鼠标移出事件\n let mMouseout = e.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(drawParam.data.id,e);\n });\n t.GM.setGraphicParam(drawParam.data.id,backobj)\n .setGraphicParam(`${drawParam.data.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n if('drawEnd' in t.props){\n t.props.drawEnd(backobj);\n }\n })\n break;\n case 'polyline':\n param.strokeColor = drawParam.parameter.color;\n param.strokeOpacity = drawParam.parameter.pellucidity;\n param.strokeWeight = drawParam.parameter.lineWidth;\n t._drawmanager.setOptions({\n drawingControl: false,\n polylineOptions: param\n });\n t._drawmanager.setDrawingMode('polyline');\n t._drawmanagerEvent = t._drawmanager.addListener('polylinecomplete',(e)=>{\n //清楚事件监听\n t._drawmanagerEvent.remove();\n //关闭绘制功能\n t._drawmanager.setDrawingMode(null);\n t.GM.setGraphic(drawParam.data.id,e);\n let paths = [];\n let lnglatAry = (e.getPath().getArray() || []).map((item,index)=>{\n paths.push({lng: item.lng(),lat: item.lat()})\n return {lngX: item.lng(),latX: item.lat()};\n });\n let backobj = {\n geometryType: 'polyline',\n distance: t.calculateGraphicDistance(e.getPath().getArray()),\n id: drawParam.data.id,\n attributes: {\n id: drawParam.data.id,\n config: {\n color: param.strokeColor,\n pellucidity: param.strokeOpacity,\n lineWidth: param.strokeWeight\n }\n },\n mapLayer: e,\n geometry: {\n type: 'polyline',\n lnglatAry: lnglatAry,\n paths: getMaxMin(paths).path\n },\n lnglatAry: lnglatAry \n }\n //点击事件\n let mClick = e.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(drawParam.data.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = e.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(drawParam.data.id,e);\n });\n //鼠标移出事件\n let mMouseout = e.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(drawParam.data.id,e);\n });\n t.GM.setGraphicParam(drawParam.data.id,backobj)\n .setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n if('drawEnd' in t.props){\n t.props.drawEnd(backobj);\n }\n })\n break;\n case 'polygon':\n t._drawmanager.setOptions({\n drawingControl: false,\n polygonOptions: paramgcr\n });\n t._drawmanager.setDrawingMode('polygon');\n t._drawmanagerEvent = t._drawmanager.addListener('polygoncomplete',(e)=>{\n //清楚事件监听\n t._drawmanagerEvent.remove();\n //关闭绘制功能\n t._drawmanager.setDrawingMode(null);\n t.GM.setGraphic(drawParam.data.id,e);\n let paths = [],area = t.calculateArea(drawParam.data.id);\n let lnglatAry = (e.getPath().getArray() || []).map((item,index)=>{\n paths.push({lng: item.lng(),lat: item.lat()})\n return {lngX: item.lng(),latX: item.lat()};\n });\n let backobj = {\n geometryType: 'polygon',\n id: drawParam.data.id,\n attributes: {\n id: drawParam.data.id,\n config: {\n color: paramgcr.fillColor,\n lineColor: paramgcr.strokeColor,\n lineOpacity: paramgcr.strokeOpacity,\n pellucidity: paramgcr.fillOpacity,\n lineWidth: paramgcr.strokeWeight\n }\n },\n mapLayer: e,\n geometry: {\n type: 'polygon',\n lnglatAry: lnglatAry,\n rings: getMaxMin(paths).path,\n _extent: getMaxMin(paths)._extent,\n area: area\n },\n lnglatAry: lnglatAry,\n area: area\n };\n //点击事件\n let mClick = e.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(drawParam.data.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = e.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(drawParam.data.id,e);\n });\n //鼠标移出事件\n let mMouseout = e.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(drawParam.data.id,e);\n });\n t.GM.setGraphicParam(drawParam.data.id,backobj)\n .setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n if('drawEnd' in t.props){\n t.props.drawEnd(backobj);\n }\n });\n break;\n case 'circle':\n t._drawmanager.setOptions({\n drawingControl: false,\n circleOptions: paramgcr\n });\n t._drawmanager.setDrawingMode('circle');\n t._drawmanagerEvent = t._drawmanager.addListener('circlecomplete',(e)=>{\n //清楚事件监听\n t._drawmanagerEvent.remove();\n //关闭绘制功能\n t._drawmanager.setDrawingMode(null);\n t.GM.setGraphic(drawParam.data.id,e);\n let area = Math.PI * Math.pow(e.getRadius(),2);\n let backobj = {\n geometryType: 'circle',\n id: drawParam.data.id,\n attributes: {\n id: drawParam.data.id,\n config: { \n color: paramgcr.fillColor,\n lineColor: paramgcr.strokeColor,\n lineOpacity: paramgcr.strokeOpacity,\n pellucidity: paramgcr.fillOpacity,\n lineWidth: paramgcr.strokeWeight\n }\n },\n mapLayer: e,\n geometry: {\n type: 'circle',\n x: e.getCenter().lng(),\n y: e.getCenter().lat(),\n radius: e.getRadius(),\n area: area\n },\n area: area\n };\n //点击事件\n let mClick = e.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(drawParam.data.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = e.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(drawParam.data.id,e);\n });\n //鼠标移出事件\n let mMouseout = e.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(drawParam.data.id,e);\n });\n t.GM.setGraphicParam(drawParam.data.id,backobj)\n .setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n if('drawEnd' in t.props){\n t.props.drawEnd(backobj);\n }\n });\n break;\n case 'rectangle':\n t._drawmanager.setOptions({\n drawingControl: false,\n rectangleOptions: paramgcr\n });\n t._drawmanager.setDrawingMode('rectangle');\n t._drawmanagerEvent = t._drawmanager.addListener('rectanglecomplete',(e)=>{\n //清楚事件监听\n t._drawmanagerEvent.remove();\n //关闭绘制功能\n t._drawmanager.setDrawingMode(null);\n t.GM.setGraphic(drawParam.data.id,e);\n let lnglatJson = e.getBounds().toJSON();\n let paths = [{\n lng: lnglatJson.west,\n lat: lnglatJson.south\n },{\n lng: lnglatJson.east,\n lat: lnglatJson.south\n },{\n lng: lnglatJson.east,\n lat: lnglatJson.north\n },{\n lng: lnglatJson.west,\n lat: lnglatJson.north\n }];\n let lnglatAry = (paths || []).map((item,index)=>{\n return {lngX: item.lng,latX: item.lat};\n });\n let area = t.calculatePointsDistance([lnglatJson.west,lnglatJson.south],[lnglatJson.east,lnglatJson.south])*\n t.calculatePointsDistance([lnglatJson.east,lnglatJson.south],[lnglatJson.east,lnglatJson.north]);\n\n let backobj = {\n geometryType: 'polygon',\n id: drawParam.data.id,\n attributes: {\n id: drawParam.data.id,\n config: {\n color: paramgcr.fillColor,\n lineColor: paramgcr.strokeColor,\n lineOpacity: paramgcr.strokeOpacity,\n pellucidity: paramgcr.fillOpacity,\n lineWidth: paramgcr.strokeWeight\n }\n },\n mapLayer: e,\n geometry: {\n type: 'polygon',\n lnglatAry: lnglatAry,\n rings: getMaxMin(paths).path,\n _extent: getMaxMin(paths)._extent,\n area: area\n },\n lnglatAry: lnglatAry,\n area: area\n };\n //点击事件\n let mClick = e.addListener('click',(e)=>{\n //避免鼠标在图元上 测距工具不起作用\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e)\n }else{\n t.clickGraphic(drawParam.data.id,e);\n }\n });\n //鼠标移入事件\n let mMouseover = e.addListener('mouseover',(e)=>{\n t.mouseOverGraphic(drawParam.data.id,e);\n });\n //鼠标移出事件\n let mMouseout = e.addListener('mouseout',(e)=>{\n t.mouseOutGraphic(drawParam.data.id,e);\n });\n t.GM.setGraphicParam(drawParam.data.id,backobj)\n .setGraphicParam(`${item.id}_omap_event`,{\n click: mClick,\n mouseover: mMouseover,\n mouseout: mMouseout\n });\n if('drawEnd' in t.props){\n t.props.drawEnd(backobj);\n }\n });\n break;\n }\n //保存绘制图元的id便于后期比对\n t.state.drawIds[drawParam.geometryType].push(drawParam.data.id);\n }\n //关闭绘制图元\n closeDraw(){\n let t = this;\n t._drawmanager.setDrawingMode(null);\n }\n /*\n 事件处理\n */\n //点击图元事件\n clickGraphic (id,e) {\n let t = this;\n //判断是否点击的测距关闭点位\n if(id && id.indexOf('vtx_g_rang_end') > -1){\n let index = t.GM.getGraphicParam(id).attributes.index;\n let ls = t.rangingTools[index].line,\n ps = t.rangingTools[index].points;\n //删除测距线\n t.removeGraphic(ls.id,'line');\n //删除关闭点\n t.removeGraphic(id,'point');\n //删除中间点\n for(let i = 0 ; i < ps.length ; i++){\n t.removeGraphic(ps[i].id,'point');\n }\n //清除测距数据缓存\n delete t.rangingTools[index];\n }else{\n if(id.indexOf('vtx_g_rang_') > -1){\n return false;\n }\n //编辑中的图元关闭其他事件返回\n if(t.state.editId == id)return false;\n if(typeof(t.props.clickGraphic) ===\"function\"){\n let param = t.getGraphic(id);\n let obj = {\n param,\n type: param.geometry.type,//图元类型\n attributes: {...param.attributes.other,...{config:param.attributes.config}},//添加时图元信息\n top: e.va.y - t.mapTop,//当前点所在的位置(屏幕)\n left: e.va.x - t.mapLeft,\n e: e\n }\n t.props.clickGraphic(obj);\n }\n }\n }\n //图元鼠标悬浮事件\n mouseOverGraphic(id,e){\n let t = this;\n //编辑中的图元关闭其他事件返回\n if(t.state.editId == id)return false;\n if(typeof(t.props.mouseOverGraphic) === 'function'){\n if(id.indexOf('vtx_g_rang_') > -1){\n return false;\n }\n let obj = {\n e,id,\n param: t.getGraphic(id),\n top: e.va.y - t.mapTop,//当前点所在的位置(屏幕)\n left: e.va.x - t.mapLeft,\n }\n t.props.mouseOverGraphic(obj);\n }\n }\n //图元鼠标移开事件\n mouseOutGraphic(id,e){\n let t = this;\n //编辑中的图元关闭其他事件返回\n if(t.state.editId == id)return false;\n if(typeof(t.props.mouseOutGraphic) ===\"function\"){\n if(id.indexOf('vtx_g_rang_') > -1){\n return false;\n }\n let obj = {\n e,id,\n param: t.getGraphic(id),\n top: e.va.y - t.mapTop,//当前点所在的位置(屏幕)\n left: e.va.x - t.mapLeft,\n }\n t.props.mouseOutGraphic(obj);\n }\n }\n /*\n 地图服务功能\n */\n //开启路况\n openTrafficInfo(){\n let t =this;\n if(!t.trafficLayer){\n t.trafficLayer = new google.maps.TrafficLayer();\n }\n t.trafficLayer.setMap(t.state.gis);\n }\n //关闭路况\n hideTrafficInfo(){\n let t =this;\n if(t.trafficLayer){\n t.trafficLayer.setMap(null);\n }\n }\n //测距功能\n vtxRangingTool(mapRangingTool){\n let t =this;\n let {lineIds,polygonIds,circleIds} = t.state;\n let gids = [...lineIds,...polygonIds,...circleIds];\n t.state.gis.disableDoubleClickZoom = true;\n t.state.gis.draggableCursor = 'crosshair';\n //开启测距状态\n if(!t.rangingTool.isRanging){\n t.rangingTool.isRanging = true;\n }\n //初始测距回调\n if(!t.rangingTool.mapRangingTool){\n t.rangingTool.mapRangingTool = mapRangingTool;\n }\n if(!t.rangingToolFun){\n /*测距功能*/\n t.rangingToolFun = (e,status)=>{\n let fun = ()=>{\n t.rangingTool.isDbclick = false;\n if(t.rangingTool.isRanging){\n //测距开始\n //点击位置\n let ftp = t.canvasProjectionOverlay.getProjection(),\n lnglat = ftp.fromContainerPixelToLatLng(new google.maps.Point(e.va.x - t.mapLeft,e.va.y - t.mapTop)),\n lnlt = [lnglat.lng(),lnglat.lat()];\n //2个点以上 计算长度\n if(t.rangingTool.points.length > 0){\n t.rangingTool.distance += t.calculatePointsDistance(lnlt,\n [t.rangingTool.points[t.rangingTool.points.length-1].longitude,\n t.rangingTool.points[t.rangingTool.points.length-1].latitude]\n );\n }else{\n t.rangingTool.line.paths = [];\n }\n t.rangingTool.line.paths.push([...lnlt]);\n //处理距离展示\n let distext = t.rangingTool.distance > 0\n ?(t.rangingTool.distance > 1000\n ?`总长:${Math.round(t.rangingTool.distance/10)/100}公里`:`总长:${t.rangingTool.distance}米`)\n :'起点';\n //加点\n let point = {\n id: t.rangingTool.points.length + 'vtx_g_rang_p'+Math.random(),\n longitude: lnlt[0],\n latitude: lnlt[1],\n markerContent: `\n <div style='z-index:1; height: 0px;'>\n <div class='vtx-g-rangingPoint'></div>\n <div class='vtx-g-rangingDistance'>${distext}</div>\n </div>\n `,\n config: {\n markerContentX: -5.5,\n markerContentY: -12.5,\n }\n };\n //用addpoint方法加点\n t.addPoint([point]);\n //缓存点信息\n t.rangingTool.points.push(point);\n if(t.rangingTool.line.paths.length == 2){\n //加线\n t.rangingTool.line = {\n id: 'vtx_g_rang_line'+Math.random(),\n paths: [...t.rangingTool.line.paths],\n config:{\n color: '#108ee9',\n lineWidth: 2,\n lineType: 'solid'\n }\n }\n t.addLine([t.rangingTool.line]);\n }else if(t.rangingTool.line.paths.length > 2){\n t.updateLine([{\n ...t.rangingTool.line,\n paths: [...t.rangingTool.line.paths]\n }]);\n }\n //双击 测距结束\n if(status == 'dbl'){\n let rangkey = new Date().getTime()+Math.random();\n //加结束点\n let end = {\n id: 'vtx_g_rang_end'+Math.random(),\n longitude: lnlt[0],\n latitude: lnlt[1],\n markerContent: `\n <div>\n <div class='vtx-g-rang-exit'>x</div>\n </div>\n `,\n config: {\n width:13,\n height:13,\n markerContentX: -20,\n markerContentY: -20,\n },\n index: rangkey\n };\n //用addpoint方法加点\n t.addPoint([end]);\n //删除提示框 \n t.removeGraphic('vtx_g_rang_showRangTool','point');\n t.removeGraphic('vtx_g_rang_showRangTool_line','line');\n //缓存当前这一条测距数据\n t.rangingTools[rangkey] = {...t.rangingTool};\n //回调测距参数\n if(t.rangingTool.mapRangingTool){\n t.rangingTool.mapRangingTool({\n distance: t.rangingTool.distance,\n lnglats: t.rangingTool.line.paths\n })\n }\n }\n }\n }\n if(status !== 'dbl'){\n //100毫秒内点击2次 则结束\n if(!t.rangingTool.isDbclick){\n t.rangingTool.isDbclick = true;\n }else{\n if(t.rangingTool.dbclickTimer){\n clearTimeout(t.rangingTool.dbclickTimer);\n }\n t.rangingTool.isDbclick = false;\n t.rangingToolEndFun(e);\n }\n t.rangingTool.dbclickTimer = setTimeout(()=>{\n fun();\n },200)\n }else{\n fun();\n }\n }\n }\n if(!t.rangingToolMoveFun){\n t.rangingToolMoveFun = (e)=>{\n //获取测距提示点位\n let rp = {...t.GM.getGraphicParam('vtx_g_rang_showRangTool').attributes};\n //删除多余数据,避免other层级太多\n delete rp.other;\n let rcontent = rp.markerContent;\n if(t.rangingTool.points.length > 0){\n let distance = t.calculatePointsDistance(\n [e.latLng.lng(),e.latLng.lat()],\n [t.rangingTool.points[t.rangingTool.points.length-1].longitude,\n t.rangingTool.points[t.rangingTool.points.length-1].latitude],\n t.state.gis,\n t.grwkid\n );\n // 实时计算距离\n distance += t.rangingTool.distance;\n let distext = distance > 1000\n ?`总长:${Math.round(distance/10)/100}公里`:`总长:${distance}米`;\n rcontent = `\n <div class='vtx-g-rang-showRangTool'>\n <div>${distext}</div>\n <div>单击确定地点,双击结束</div>\n </div>\n `;\n //测距移动的线\n let sl = {\n id: 'vtx_g_rang_showRangTool_line',\n paths: [\n [ t.rangingTool.points[t.rangingTool.points.length-1].longitude,\n t.rangingTool.points[t.rangingTool.points.length-1].latitude\n ],\n [e.latLng.lng(),e.latLng.lat()]\n ],\n config: {\n color: '#108ee9',\n lineWidth: 2,\n lineType: 'dashed',\n pellucidity: 0.5\n }\n };\n if(!t.GM.getGraphic('vtx_g_rang_showRangTool_line')){\n t.addLine([sl]);\n t.GM.getGraphic('vtx_g_rang_showRangTool_line').addListener('dblclick',(e)=>{\n t.rangingToolEndFun(e)\n })\n }else{\n t.updateLine([sl]);\n }\n }\n rp = {\n ...rp,\n longitude: e.latLng.lng(),\n latitude: e.latLng.lat(),\n markerContent: rcontent\n }\n t.updatePoint([rp],'nodeg');\n }\n }\n if(!t.rangingToolEndFun){\n t.rangingToolEndFun = (e)=>{\n t.state.gis.disableDoubleClickZoom = false;\n //测距完结\n if(t.rangingTool.isRanging){\n if(t.rangingTool.points.length > 0){\n //处理点击和双击事件逻辑\n t.rangingToolFun(e,'dbl');\n //回调测距参数\n if(t.rangingTool.mapRangingTool){\n t.rangingTool.mapRangingTool({\n distance: t.rangingTool.distance,\n lnglats: t.rangingTool.line.paths\n });\n }\n }else{\n //删除提示框 \n t.removeGraphic('vtx_g_rang_showRangTool','point');\n }\n //关闭监听事件\n for(let i in t.rangingTool.eventList){\n if(t.rangingTool.eventList[i]){\n t.rangingTool.eventList[i].remove();\n }\n }\n t.rangingTool = {\n ...t.rangingTool,\n isRanging: false,//是否开启状态\n line: {},//线缓存\n points: [],//点\n distance: 0,//测距长度\n isDbclick: false,\n dbclickTimer: null\n }\n t.rangingToolFun = null;\n t.rangingToolMoveFun = null;\n t.state.gis.draggableCursor = 'url(\"http://maps.gstatic.cn/mapfiles/openhand_8_8.cur\"), default';\n }\n }\n }\n //避免鼠标在图元上 测距工具不起作用\n gids.forEach((item)=>{\n t.rangingTool.eventList[item] = t.GM.getGraphic(item).addListener('mousemove',(e)=>{\n if(t.rangingTool.isRanging && t.rangingToolMoveFun){\n t.rangingToolMoveFun(e);\n }\n })\n })\n //地图鼠标移入事件\n t.rangingTool.eventList['mouseover'] = t.state.gis.addListener('mouseover',(e)=>{\n //鼠标移出地图时,删除测距显示点\n if(t.rangingTool.isRanging){\n let rp = {\n id: 'vtx_g_rang_showRangTool',\n longitude: e.latLng.lng(),\n latitude: e.latLng.lat(),\n markerContent: `\n <div class='vtx-g-rang-showRangTool'>单击确定起点</div>\n `,\n config: {\n markerContentX: 20,\n markerContentY: 20\n }\n }\n t.addPoint([rp],'nodeg');\n }\n });\n //地图鼠标移出事件\n t.rangingTool.eventList['mouseout'] = t.state.gis.addListener('mouseout',(e)=>{\n //鼠标移出地图时,删除测距显示点\n if(t.rangingTool.isRanging){\n t.removeGraphic('vtx_g_rang_showRangTool','point');\n }\n });\n //地图鼠标移动事件\n t.rangingTool.eventList['mousemove'] = t.state.gis.addListener('mousemove',(e)=>{\n //鼠标移动地图时,删除测距显示点\n if(t.rangingTool.isRanging && t.rangingToolMoveFun){\n t.rangingToolMoveFun(e);\n }\n });\n //双击事件\n t.rangingTool.eventList['dblclick'] = t.state.gis.addListener('dblclick',(e)=>{\n t.rangingToolEndFun(e);\n });\n }\n //聚合地图图元(arg为空时聚合全部点)\n cluster (arg) {\n let t = this;\n let ary = t.clusterToolFunction(arg);\n t._cluster.addMarkers(ary);\n }\n //删除点聚合效果\n removeCluster(arg){\n let t = this;\n let ary = t.clusterToolFunction(arg);\n if(ary.length > 0){\n t._cluster.removeMarkers(ary);\n }\n }\n //清空聚合效果\n clearClusters(){\n let t = this;\n t._cluster.clearMarkers();\n }\n //聚合功能公共方法(获取图元集合)\n clusterToolFunction(arg){\n let t = this;\n let ary = [];\n if(!arg){\n let {pointIds} = t.state;\n ary = pointIds.filter((item,index)=>{\n return item.indexOf(vtx_g_rang) == -1;\n });\n }else{\n if(Object.prototype.toString.apply(arg) === '[object Array]'){\n ary = arg;\n }else if(typeof arg === 'string'){\n ary = arg.split(',');\n }\n }\n t.clusterIdList = ary;\n //过滤moveTo的点位\n //缓存所有聚合的点位\n let allps = [];\n for(let i = 0 ; i < ary.length ; i++){\n let gc = t.GM.getGraphic(ary[i]);\n allps.push(gc);\n //加入label图元\n if(gc.ishaveLabel){\n allps.push(t.GM.getGraphic(`${ary[i]}_vtxoMap_label`));\n }\n }\n return allps;\n }\n /*地图事件处理*/\n //地图点击事件\n clickMap(){\n let t =this;\n if(typeof(t.props.clickMap) ===\"function\"){\n t.state.gis.addListener('click',(e)=>{\n //测距点击事件\n if(t.rangingTool.isRanging){\n t.rangingToolFun(e);\n }else{\n let obj = t.getMapExtent();\n obj.e = e;\n obj.clickLngLat = e.point;\n obj.pixel = {\n x: e.va.x - t.mapLeft,\n y: e.va.y - t.mapTop\n };\n t.props.clickMap(obj);\n }\n });\n }\n }\n //地图拖动之前事件\n dragMapStart(){\n let t = this;\n if(typeof(t.props.dragMapStart) === 'function'){\n t.state.gis.addListener('dragstart',(e)=>{\n let obj = t.getMapExtent();\n obj.e = e;\n t.props.dragMapStart(obj);\n })\n }\n }\n //地图拖动结束后事件\n dragMapEnd(){\n let t = this;\n if(typeof(t.props.dragMapEnd) === 'function'){\n t.state.gis.addListener('dragend',(e)=>{\n let obj = t.getMapExtent();\n obj.e = e;\n t.props.dragMapEnd(obj);\n })\n }\n }\n //地图移动之前事件\n moveStart(){\n let t = this;\n if(typeof(t.props.moveStart) === 'function'){\n t.state.gis.addListener('bounds_changed',(e)=>{\n if(t.pointCollectionId){\n $(`#${t.pointCollectionId}`).css({visibility: 'hidden'});\n }\n //区别是否在移动状态\n if(!t.isZoomming && !t.isMoving){\n if(t.oldZoomLevel == t.state.gis.getZoom()){\n t.isMoving = true;\n let obj = t.getMapExtent();\n obj.e = e;\n t.props.moveStart(obj);\n }\n }\n })\n }\n }\n //google地图没有move事件和zoomEnd事件,通过模拟实现\n moveEndAndZoomEnd(){\n let t = this;\n if(typeof(t.props.moveEnd) === 'function' || \n typeof(t.props.zoomEnd) === 'function' ||\n typeof(t.props.moveStart) === 'function'||\n typeof(t.props.zoomStart) === 'function'){\n t.state.gis.addListener('idle',(e)=>{\n if(t.pointCollectionId){\n $(`#${t.pointCollectionId}`).css({visibility: 'inherit'});\n }\n let obj = t.getMapExtent();\n obj.e = e;\n //区别是否在移动状态-同时判断是moveEnd还是zoomEnd\n if(t.isMoving){\n t.isMoving = false;\n }\n if(t.isZoomming){\n t.isZoomming = false;\n }\n if(t.oldZoomLevel != t.state.gis.getZoom()){\n t.oldZoomLevel = t.state.gis.getZoom();\n if(typeof(t.props.zoomEnd) === 'function'){\n t.props.zoomEnd(obj);\n }\n }else{\n if(typeof(t.props.moveEnd) === 'function'){\n t.props.moveEnd(obj);\n }\n }\n //更新海量点\n if(t.props.mapPointCollection){\n t.updatePointCollection(t.props.mapPointCollection);\n }\n })\n }\n }\n //地图更改缩放级别开始时触发触发此事件\n zoomStart(){\n let t = this;\n if(typeof(t.props.zoomStart) === 'function'){\n t.state.gis.addListener('zoom_changed',(e)=>{\n if(t.pointCollectionId){\n $(`#${t.pointCollectionId}`).css({visibility: 'hidden'});\n }\n if(!t.isZoomming){\n t.isZoomming = true;\n let obj = t.getMapExtent();\n obj.e = e;\n t.props.zoomStart(obj);\n }\n });\n }\n }\n //对外使用方法\n //显示隐藏的图元\n showGraphicById (id){\n let t = this;\n if(t.GM.getGraphic(id)){\n t.GM.getGraphic(id).setVisible(true);\n }\n }\n //隐藏图元\n hideGraphicById(id){\n let t = this;\n if(t.GM.getGraphic(id)){\n t.GM.getGraphic(id).hide(false);\n }\n }\n //内部公共方法区\n //获取图元数据\n getGraphic (id) {\n let t = this;\n if(!id){\n return false;\n }\n let gp = t.GM.getGraphicParam(id);\n let gg = t.GM.getGraphic(id);\n if(!gg){\n return false;\n }\n let p = {},pts = [],lng = 0,lat = 0;\n switch(gp.geometryType){\n case 'point':\n lng = gg.getPosition().lng();\n lat = gg.getPosition().lat();\n p = {\n ...gp,\n mapLayer: gg,\n geometry: {\n ...gp.geometry,\n x: lng,\n y: lat\n },\n attributes: {\n ...gp.attributes,\n longitude: lng,\n latitude: lat,\n other: {\n ...gp.attributes.other,\n longitude: lng,\n latitude: lat,\n }\n }\n }\n break;\n case 'polyline':\n pts = gg.getPath().getArray().map((item,index)=>{\n return [item.lng(),item.lat()]\n });\n p = {\n ...gp,\n mapLayer: gg,\n geometry: {\n ...gp.geometry,\n paths: pts\n },\n attributes: {\n ...gp.attributes,\n paths: pts,\n other: {\n ...gp.attributes.other,\n paths: pts\n }\n }\n }\n break;\n case 'polygon':\n pts = gg.getPath().getArray().map((item,index)=>{\n return [item.lng(),item.lat()]\n });\n p = {\n ...gp,\n mapLayer: gg,\n geometry: {\n ...gp.geometry,\n rings: pts\n },\n attributes: {\n ...gp.attributes,\n rings: pts,\n other: {\n ...gp.attributes.other,\n rings: pts\n }\n }\n }\n break;\n case 'circle':\n lng = gg.getCenter().lng();\n lat = gg.getCenter().lat();\n let radius = gg.getRadius();\n p = {\n ...gp,\n mapLayer: gg,\n geometry: {\n ...gp.geometry,\n x: lng,\n y: lat,\n radius\n },\n attributes: {\n ...gp.attributes,\n longitude: lng,\n latitude: lat,\n radius,\n other: {\n ...gp.attributes.other,\n longitude: lng,\n latitude: lat,\n radius\n }\n }\n }\n break;\n }\n return p;\n }\n //获取地图当前的位置状态信息\n getMapExtent() {\n let t = this;\n let nowBounds = t.state.gis.getBounds();\n let obj = {};\n obj.southWest = {\n lng : nowBounds.getNorthEast().lng(),\n lat : nowBounds.getNorthEast().lat()\n };\n obj.northEast = {\n lng : nowBounds.getSouthWest().lng(),\n lat : nowBounds.getSouthWest().lat()\n };\n obj.nowCenter = t.state.gis.getCenter();\n obj.zoom = t.state.gis.getZoom();\n obj.mapSize = {\n width: t.state.gis.getDiv().offsetWidth,\n height: t.state.gis.getDiv().offsetHeight\n };\n obj.radius = t.calculatePointsDistance([obj.nowCenter.lng(),obj.nowCenter.lat()],\n [obj.northEast.lng,obj.northEast.lat]);\n return obj;\n }\n //获取当前比例尺\n getZoomLevel (){\n let t =this;\n return t.state.gis.getZoom();\n }\n //处理线和面的 经纬度数据\n dealData(ms){\n //区别点和圆的经纬度数据处理\n let lnglatAry = [],_extent = {xmax: 0,xmin: 0,ymax: 0,ymin: 0},path=[];\n if('getPath' in ms){\n path = ms.getPath().getArray();\n path = path.map((item,index)=>{\n let lng = item.lng(),lat = item.lat();\n if(lng > _extent.xmax){\n _extent.xmax = lng;\n }\n if(lng < _extent.xmin || _extent.xmin == 0){\n _extent.xmin = lng;\n }\n if(lat > _extent.ymax){\n _extent.ymax = lat;\n }\n if(lat < _extent.ymin || _extent.ymin == 0){\n _extent.ymin = lat;\n }\n lnglatAry.push({\n lngX: lng,\n latX: lat\n });\n return [lng,lat];\n })\n }\n return {lnglatAry,_extent,path};\n }\n //点位移动动画效果\n moveAnimation(){\n let t = this;\n if(t.moveToTimer){\n clearInterval(t.moveToTimer);\n }\n t.moveToTimer = setInterval(()=>{\n for(let i = 0;i < t.movePoints.length; i++){\n t.movePoints[i].waitTime += 10;\n t.movePoints[i].deleteTime -= 10;\n }\n t.movePoints.sort((x,y)=>{\n return y.waitTime -x.waitTime;\n });\n let nowMovePoints = t.movePoints.slice(0,10),deleteIndex=[];\n for(let i = 0;i < nowMovePoints.length; i++){\n let {id,rx,ry,waitTime,deleteTime} = nowMovePoints[i];\n let gc = t.GM.getGraphic(id),\n gc_label = t.GM.getGraphic(`${id}_vtxoMap_label`);\n if(!gc){\n clearInterval(t.moveToTimer);\n }else{\n if(gc.isAdded){\n t._cluster.removeMarker(gc);\n }\n if(gc_label && gc_label.isAdded){\n t._cluster.removeMarker(gc_label);\n }\n let gg = gc.getPosition();\n let tx = gg.lng() + rx,ty = gg.lat() + ry;\n gc.setPosition(new t.omap.LatLng({lng:tx,lat:ty}));\n if(gc_label){\n gc_label.setPosition(new t.omap.LatLng({lng:tx,lat:ty}));\n }\n t.movePoints[i].waitTime = 0;\n if(deleteTime <= 0){\n deleteIndex.push(i);\n }\n }\n }\n deleteIndex.sort((a,b)=>{return b-a});\n for(let i = 0 ; i < deleteIndex.length ; i++){\n let {id,rx,ry,waitTime,deleteTime} = t.movePoints[deleteIndex[i]],\n gc = t.GM.getGraphic(id),\n gc_label = t.GM.getGraphic(`${id}_vtxoMap_label`);\n if(t.clusterIdList.indexOf(id) > -1){\n t._cluster.addMarker(gc);\n if(gc_label){\n t._cluster.addMarker(gc_label);\n }\n }\n t.movePoints.splice(deleteIndex[i],1);\n }\n if(nowMovePoints.length == 0){\n clearInterval(t.moveToTimer);\n }\n },10);\n }\n //点位移动逻辑\n moveTo(id,lnglat,delay,autoRotation,urlright,urlleft){\n let t = this,timer = 10,\n gc = t.GM.getGraphic(id);\n delay = eval(delay || 3)*1000;\n let count = delay/timer;\n let s = gc.getPosition(),e = new t.omap.LatLng({lng:lnglat[0],lat:lnglat[1]});\n if(s.equals(e)){\n return false;\n }else{\n let url= null;\n //计算角度,旋转\n if(autoRotation && !gc.isMarkerContent){\n let ddeg = t.rotateDeg(s,e);\n if(urlleft && (ddeg < -90 && ddeg > -270)){\n ddeg += 180;\n url = urlleft;\n }else{\n url = urlright;\n }\n let icon = gc.getIcon(),iconUrl = '';\n // 360deg 不需要旋转\n if(ddeg%360 != 0){\n iconUrl = new RotateIcon({\n url: url,\n width: icon.size.width,\n height: icon.size.height\n });\n }\n gc.setIcon({...icon,url: iconUrl.setRotation(ddeg).getUrl()})\n }\n //拆分延迟移动定位\n let rx = (e.lng() - s.lng())/count, ry = (e.lat() - s.lat())/count;\n let isHave = false;\n for(let i = 0 ; i < t.movePoints.length ;i++){\n if(t.movePoints[i].id == id){\n t.movePoints.splice(i,1,{\n id,rx,ry,\n waitTime: 0,\n deleteTime: delay\n });\n isHave = true;\n }\n }\n if(!isHave){\n t.movePoints.push({\n id,rx,ry,\n waitTime: 0,\n deleteTime: delay\n });\n }\n }\n }\n //点位角度旋转(以指向东(右)为0°)\n rotateDeg(sp,ep){\n let t = this,\n deg = 0,\n ftp = t.canvasProjectionOverlay.getProjection(),\n spLngLat = sp,epLngLat = ep;\n if(ftp){\n if(Array.isArray(sp)){\n spLngLat = new t.omap.LatLng({lng:sp[0],lat:sp[1]})\n }\n if(Array.isArray(ep)){\n spLngLat = new t.omap.LatLng({lng:ep[0],lat:ep[1]})\n }\n let s = ftp.fromLatLngToContainerPixel(spLngLat),\n //获取当前点位的经纬度\n e = ftp.fromLatLngToContainerPixel(epLngLat);\n if(e.x != s.x){\n var tan = (e.y - s.y)/(e.x - s.x),\n atan = Math.atan(tan);\n deg = atan*360/(2*Math.PI);\n //degree correction;\n if(e.x < s.x){\n deg = -deg + 90 + 90;\n\n } else {\n deg = -deg;\n }\n deg = -deg;\n }else {\n var disy = e.y- s.y ;\n var bias = 0;\n if(disy > 0)\n bias=-1;\n else\n bias = 1;\n if(disy == 0)\n bias = 0; \n deg = -bias * 90;\n }\n }\n return deg;\n }\n /*\n 匹配控件位置方法\n (谷歌地图有8个方位,为了统一,只使用左上,左下,右上,右下)\n */\n matchControlPosition(location){\n let position = google.maps.ControlPosition.RIGHT_BOTTOM;\n switch(location){\n case 'tl':\n position = google.maps.ControlPosition.LEFT_TOP;\n break;\n case 'bl':\n position = google.maps.ControlPosition.LEFT_BOTTOM\n break;\n case 'tr':\n position = google.maps.ControlPosition.RIGHT_TOP;\n break;\n case 'br':\n position = google.maps.ControlPosition.RIGHT_BOTTOM;\n break;\n }\n return position;\n }\n /*\n 地图内部需要公共方法\n */\n calculatePointsDistance(fp,ep){\n if(google.maps.geometry && google.maps.geometry.spherical){\n return Math.round(google.maps.geometry.spherical.computeDistanceBetween(\n new google.maps.LatLng({lng:fp[0],lat:fp[1]})\n ,\n new google.maps.LatLng({lng:ep[0],lat:ep[1]})\n )*100)/100;\n }\n return 0;\n }\n //计算多个点的距离(常用于线计算)\n calculateDistance(ps){\n let t = this,totalDistance = 0;\n if (ps.length < 0) {return false;}\n for(let i= 0 ; i< ps.length ; i++){\n if(i < ps.length-1){\n totalDistance += t.calculatePointsDistance(ps[i],ps[i+1]);\n }\n }\n return Math.round(totalDistance*100)/100;\n }\n //计算图元面积(面,圆)\n calculateArea(id){\n var t = this;\n return google.maps.geometry.spherical.computeArea(t.GM.getGraphic(id).getPath().getArray());\n }\n //计算多个点的距离(常用于线计算)[入参是 google 经纬度对象数组]\n calculateGraphicDistance(ary){\n var t = this;\n return google.maps.geometry.spherical.computeLength(ary);\n }\n //对比对象数据是否相等\n deepEqual(a,b){\n return Immutable.is(Immutable.fromJS(a),Immutable.fromJS(b));\n }\n //数据解析(分析,新增,更新,删除对应的数据)\n dataMatch(oldData,newData,type){\n let onlyOldData = Set(oldData).subtract(Set(newData)).toJS();\n let onlyNewData = Set(newData).subtract(Set(oldData)).toJS();\n let onlyOldIDs = onlyOldData.map(item=>item[type]);\n let onlyNewIDs = onlyNewData.map(item=>item[type]);\n let updateDataIDs = Set(onlyOldIDs).intersect(Set(onlyNewIDs)).toJS();\n let updatedData = onlyNewData.filter(item=> updateDataIDs.indexOf(item[type])>-1);\n let replacedData = onlyOldData.filter(item=> updateDataIDs.indexOf(item[type])>-1);\n let deletedDataIDs = onlyOldIDs.filter(oldID=>updateDataIDs.indexOf(oldID)==-1);\n let addedData = onlyNewData.filter(item=>updateDataIDs.indexOf(item[type])==-1)\n \n return {deletedDataIDs,addedData,updatedData,replacedData};\n }\n //处理需要增加图元的数据(避免意外问题)\n dealAdd(ary,ids){\n let ads = [], otherupds = [];\n for(let i = 0 ; i < ary.length ; i++){\n if(ids.indexOf(ary[i].id) > -1){\n otherupds.push(ary[i]);\n }else{\n ads.push(ary[i]);\n }\n }\n return {ads,otherupds};\n }\n //处理需要更新图元的数据(避免意外问题)\n dealUpdate(ary,ids){\n let upds = [], otherads = [];\n for(let i = 0 ; i < ary.length ; i++){\n if(ids.indexOf(ary[i].id) > -1){\n upds.push(ary[i]);\n }else{\n otherads.push(ary[i]);\n }\n }\n return {upds,otherads};\n }\n //渲染\n render(){\n let t = this;\n let _map = this.props;\n return(\n <div id={_map.mapId} style={{width:'100%',height:'100%'}}></div>\n );\n }\n //初始化\n componentDidMount(){\n let t = this;\n t.loadMapComplete.then(()=>{\n t.mapLeft = document.getElementById(t.props.mapId).offsetLeft;\n t.mapTop = document.getElementById(t.props.mapId).offsetTop;\n t.init();\n }) \n }\n //重新渲染结束\n componentDidUpdate(prevProps, prevState) {}\n //已加载组件,收到新的参数时调用\n componentWillReceiveProps(nextProps) {\n let t = this;\n //点/线旧数据\n let {pointIds,lineIds,polygonIds,circleIds,drawIds} = t.state;\n let {point,polyline,polygon,circle,rectangle} = drawIds;\n //点/线新数据\n let {\n mapPoints = [],mapLines = [],mapPolygons = [],mapCircles = [],customizedBoundary =[],\n isOpenTrafficInfo,boundaryName,heatMapData,\n mapVisiblePoints,setVisiblePoints,\n setCenter,mapCenter,\n setZoomLevel,mapZoomLevel,\n setCluster,mapCluster,\n isRangingTool,mapRangingTool,\n isRemove,mapRemove,\n mapDraw,isDraw,isCloseDraw,\n editGraphicId,isDoEdit,isEndEdit,\n mapPointCollection,isclearAllPointCollection,\n isSetAreaRestriction,areaRestriction,isClearAreaRestriction,\n isClearAll\n } = nextProps;\n let props = t.props;\n\n // 等待地图加载\n if(!t.state.mapCreated)return;\n \n /*添加海量点*/\n if(mapPointCollection instanceof Array && props.mapPointCollection instanceof Array && !t.deepEqual(mapPointCollection,props.mapPointCollection)){\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(props.mapPointCollection,mapPointCollection,'id');\n t.clearPointCollection(deletedDataIDs);\n t.addPointCollection(addedData);\n t.updatePointCollection(updatedData);\n }\n if((typeof(isclearAllPointCollection) == 'boolean' && isclearAllPointCollection) || (isclearAllPointCollection && isclearAllPointCollection !== t.props.isclearAllPointCollection)){\n t.clearAllPointCollection();\n }\n /*点数据处理\n pointData[2]相同的点,执行刷新\n pointData[1]的数据在idsForGraphicId中不存在的,执行新增\n pointData[0]数据中多余的id,执行删除\n */\n if(mapPoints instanceof Array && props.mapPoints instanceof Array && !t.deepEqual(mapPoints,props.mapPoints)){\n let oldMapPoints = props.mapPoints;\n let newMapPoints = mapPoints;\n //过滤编辑的图元\n if(!!t.state.editId){\n oldMapPoints = props.mapPoints.filter((item)=>{return item.id !== editGraphicId});\n newMapPoints = mapPoints.filter((item)=>{return item.id !== editGraphicId});\n }\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(oldMapPoints,newMapPoints,'id');\n let {ads,otherupds} = t.dealAdd(addedData,[...pointIds,...point]);\n let {upds,otherads} = t.dealUpdate(updatedData,[...pointIds,...point]);\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\n for(let id of deletedDataIDs){\n t.removeGraphic(id,'point');\n }\n //增加\n t.addPoint([...ads,...otherads]);\n //更新\n t.updatePoint([...upds,...otherupds]);\n }\n /*\n 面数据处理\n 先全删除,再新增\n */\n if(mapPolygons instanceof Array && props.mapPolygons instanceof Array && !t.deepEqual(mapPolygons,props.mapPolygons)){\n let oldMapPolygons = props.mapPolygons;\n let newMapPolygons = mapPolygons;\n if(!!t.state.editId){\n oldMapPolygons = props.mapPolygons.filter((item)=>{return item.id !== editGraphicId});\n newMapPolygons = mapPolygons.filter((item)=>{return item.id !== editGraphicId});\n }\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(oldMapPolygons,newMapPolygons,'id');\n let {ads,otherupds} = t.dealAdd(addedData,[...rectangle,...polygon,...polygonIds]);\n let {upds,otherads} = t.dealUpdate(updatedData,[...rectangle,...polygon,...polygonIds]);\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\n for(let id of deletedDataIDs){\n t.removeGraphic(id,'polygon');\n }\n //增加\n t.addPolygon([...ads,...otherads]);\n //更新\n t.updatePolygon([...upds,...otherupds]);\n }\n /*\n 圆数据处理\n 先全删除,再新增\n */\n if(mapCircles instanceof Array && props.mapCircles instanceof Array && !t.deepEqual(mapCircles,props.mapCircles)){\n let oldMapCircles = props.mapCircles;\n let newMapCircles = mapCircles;\n if(!!t.state.editId){\n oldMapCircles = props.mapCircles.filter((item)=>{return item.id !== editGraphicId});\n newMapCircles = mapCircles.filter((item)=>{return item.id !== editGraphicId});\n }\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(oldMapCircles,newMapCircles,'id');\n let {ads,otherupds} = t.dealAdd(addedData,[...circleIds,...circle]);\n let {upds,otherads} = t.dealUpdate(updatedData,[...circleIds,...circle]);\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\n for(let id of deletedDataIDs){\n t.removeGraphic(id,'circle');\n }\n //增加\n t.addCircle([...ads,...otherads]);\n //更新\n t.updateCircle([...upds,...otherupds]);\n }\n /*\n 线数据处理\n 先全删除,再新增\n */\n if(mapLines instanceof Array && props.mapLines instanceof Array && !t.deepEqual(mapLines,props.mapLines)){\n let oldMapLines = props.mapLines;\n let newMapLines = mapLines;\n if(!!t.state.editId){\n oldMapLines = props.mapLines.filter((item)=>{return item.id !== editGraphicId});\n newMapLines = mapLines.filter((item)=>{return item.id !== editGraphicId});\n }\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(oldMapLines,newMapLines,'id');\n let {ads,otherupds} = t.dealAdd(addedData,[...lineIds,...polyline]);\n let {upds,otherads} = t.dealUpdate(updatedData,[...lineIds,...polyline]);\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\n for(let id of deletedDataIDs){\n t.removeGraphic(id,'line');\n }\n //增加\n t.addLine([...ads,...otherads]);\n //更新\n t.updateLine([...upds,...otherupds]); \n }\n //画其他特例线专用\n if(customizedBoundary instanceof Array && props.customizedBoundary instanceof Array && !t.deepEqual(customizedBoundary,props.customizedBoundary)){\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(props.customizedBoundary,customizedBoundary,'id');\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\n for(let id of deletedDataIDs){\n t.removeGraphic(id,'line');\n }\n t.addLine(addedData);\n t.updateLine(updatedData); \n }\n // 获取热力图\n if(heatMapData && !t.deepEqual(heatMapData,props.heatMapData)){\n t.heatMapOverlay(heatMapData);\n }\n //图元编辑调用\n if((typeof(isDoEdit) == 'boolean' && isDoEdit) || (isDoEdit && isDoEdit !== t.props.isDoEdit)){\n t.doEdit(editGraphicId);\n }\n //关闭图元编辑\n if((typeof(isEndEdit) == 'boolean' && isEndEdit) || (isEndEdit && isEndEdit !== t.props.isEndEdit)){\n t.endEdit();\n }\n //开启图元绘制\n if((typeof(isDraw) == 'boolean' && isDraw) || (isDraw && isDraw !== t.props.isDraw)){\n t.draw(mapDraw);\n }\n //关闭图元绘制\n if((typeof(isCloseDraw) == 'boolean' && isCloseDraw) || (isCloseDraw && isCloseDraw !== t.props.isCloseDraw)){\n t.closeDraw();\n }\n //设置中心点\n if((typeof(setCenter) == 'boolean' && setCenter) || (setCenter && setCenter !== t.props.setCenter)){\n t.setCenter(mapCenter);\n }\n //设置点聚合\n if((typeof(setCluster) == 'boolean' && setCluster) || (setCluster && setCluster !== t.props.setCluster)){\n t.cluster(mapCluster);\n }\n //设置比例尺\n if((typeof(setZoomLevel) == 'boolean' && setZoomLevel) || (setZoomLevel && setZoomLevel !== t.props.setZoomLevel)){\n t.setZoomLevel(mapZoomLevel);\n }\n /*设置指定图元展示*/\n if((typeof(setVisiblePoints) == 'boolean' && setVisiblePoints) || (setVisiblePoints && setVisiblePoints !== t.props.setVisiblePoints)){\n t.setVisiblePoints(mapVisiblePoints);\n }\n //测距工具调用\n if((typeof(isRangingTool) == 'boolean' && isRangingTool) || (isRangingTool && isRangingTool !== t.props.isRangingTool)){\n t.vtxRangingTool(mapRangingTool);\n }\n //开关路况\n if(isOpenTrafficInfo){\n t.openTrafficInfo();\n }else{\n t.hideTrafficInfo();\n }\n //清空地图\n if((typeof(isClearAll) == 'boolean' && isClearAll) || (isClearAll && isClearAll !== t.props.isClearAll)){\n t.clearAll();\n }\n //删除指定图元\n if((typeof(isRemove) == 'boolean' && isRemove) || (isRemove && isRemove !== t.props.isRemove)){\n mapRemove.map((item,index)=>{\n t.removeGraphic(item.id,item.type);\n });\n }\n }\n componentWillUnmount() {\n //关闭moveTo定时\n let t = this;\n if(t.loadLabel){\n clearInterval(t.loadLabel);\n }\n if(t.upPsTimer){\n clearTimeout(t.upPsTimer);\n }\n if(t.addPsTimer){\n clearTimeout(t.addPsTimer);\n }\n if(t.state.gis){\n t.state.gis.clearOverlays();\n }\n t.state.gis = null;\n if(t.moveToTimer){\n clearInterval(t.moveToTimer);\n }\n window.VtxMap[t.state.mapId]= null;\n }\n}\n\nexport default Map;"],"mappings":"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"}
1
+ {"version":3,"file":"Map.js","names":["Set","Immutable","Map","props","GM","graphicManage","initPointIndex","_cluster","clusterIdList","_rangingTool","_bmar","_drawmanager","editGraphicChange","editTimeout","_boundary","moveToTimer","heatmap","morepoints","movePoints","editEvent","rangingTool","isRanging","line","points","distance","mapRangingTool","eventList","isDbclick","rangingTools","state","gis","mapId","mapCreated","pointIds","lineIds","polygonIds","circleIds","editId","editGraphic","boundaryInfo","drawIds","point","polyline","polygon","circle","rectangle","cacheImgRecord","cacheImg","document","getElementById","createElement","id","style","display","body","appendChild","defImg","Image","src","configUrl","mapServerURL","loadMapJs","t","loadMapComplete","Promise","resolve","reject","window","google","omap","maps","$","getScript","PointCollection","OmapCluster","all","then","createMap","mapPoints","mapLines","mapPolygons","mapCircles","mapVisiblePoints","mapCluster","mapZoomLevel","isOpenTrafficInfo","mapPointCollection","areaRestriction","boundaryName","heatMapData","customizedBoundary","Array","addPoint","addLine","addPolygon","addCircle","heatMapOverlay","addPointCollection","setVisiblePoints","cluster","openTrafficInfo","hideTrafficInfo","clickMap","dragMapStart","dragMapEnd","moveStart","zoomStart","moveEndAndZoomEnd","setState","mapCenter","minZoom","maxZoom","showControl","options","zoom","center","oldZoomLevel","VtxMap","isShowControl","controlPosition","matchControlPosition","location","latLngBounds","isArray","sort","a","b","map","toString","lng","lat","disableDoubleClickZoom","draggableCursor","controlSize","rotateControl","scaleControl","streetViewControl","fullscreenControl","mapTypeControl","zoomControl","rotateControlOptions","position","streetViewControlOptions","fullscreenControlOptions","zoomControlOptions","mapTypeControlOptions","ControlPosition","TOP_CENTER","restriction","north","south","west","east","strictBounds","drawing","DrawingManager","drawingControl","setMap","OMapLib","MarkerClusterer","CanvasProjectionOverlay","prototype","OverlayView","constructor","onAdd","draw","onRemove","canvasProjectionOverlay","MyLabel","editable","editParam","sx","sy","isLabel","labelClass","labelContent","labelOffset","x","y","lnglat","_label","funs","innerHTML","className","panes","getPanes","markerLayer","overlayMouseTarget","i","removeListener","addListener","overlayProjection","getProjection","fromLatLngToDivPixel","left","parseFloat","top","setOptions","setPosition","getPosition","setZIndex","index","ZIndex","isMarkerContent","parentNode","removeChild","key","fun","tt","dragendFun","setTimeout","event","stopPropagation","latLng","va","pixel","addEventListener","removeEventListener","setDraggable","boolean","edit","mdown","clientX","clientY","mmEvent","e","replace","mupEvent","latlng","fromDivPixelToLatLng","Point","obj","ls","getLngLats","ids","type","alnglat","lngs","lats","getMoreGraphicParam","item","geometryType","push","geometry","paths","rings","forEach","sw","LatLng","ne","length","fitView","split","fitBounds","LatLngBounds","gt","mgt","c","getCenter","setCenter","z","getZoomLevel","setZoom","clearClusters","clearAllPointCollection","allGraphics","clearAll","psids","apf","isRepetition","console","warn","longitude","latitude","cg","width","height","labelPixelX","labelPixelY","BAnimationType","markerContentX","markerContentY","deg","markerContent","config","marker","canShowLabel","join","label","setGraphic","iconUrl","RotateIcon","url","icon","anchor","size","Size","scaledSize","setRotation","getUrl","labelOrigin","Marker","ishaveLabel","zIndex","setAnimation","Animation","BOUNCE","DROP","mClick","rangingToolFun","clickGraphic","mMouseover","mouseOverGraphic","mMouseout","mouseOutGraphic","setGraphicParam","attributes","other","click","mouseover","mouseout","addPsTimer","upf","gc","getGraphic","gc_label","indexOf","removeMarker","oldPosition","getGraphicParam","remove","removeGraphic","setIcon","isAnimation","moveTo","animationDelay","autoRotation","urlleft","moveAnimation","upPsTimer","lsids","color","pellucidity","lineWidth","lineType","isHidden","icons","lineSymbol","path","strokeOpacity","scale","offset","repeat","linePath","lineOption","strokeColor","strokeWeight","Polyline","setVisible","setPath","pgsids","lineColor","lineOpacity","polygonOption","strokeStyle","fillColor","fillOpacity","polygonPath","Polygon","ccsids","circleOption","centerPoint","Circle","radius","setRadius","d","max","visible","opacity","visualization","HeatmapLayer","option","gradient","sortArray","value","setData","data","ftp","pointCollectionId","divpc","getDiv","offsetHeight","offsetWidth","p","fromLatLngToContainerPixel","shape","VotexpointCollection","GMapLib","addpointCollectionTimer","clearTimeout","ds","ind","reDraw","updatePointCollectionTimer","clear","graphic","removeCluster","splice","gLabel","gtp","endEdit","param","spherical","area","computeArea","mapLayer","getPath","getArray","calculateDistance","Math","pow","PI","editPointLabel","setEditable","drawParam","setDrawingMode","parameter","Date","getTime","len","paramgcr","extData","markerOptions","_drawmanagerEvent","backobj","drawEnd","polylineOptions","lnglatAry","lngX","latX","calculateGraphicDistance","getMaxMin","polygonOptions","calculateArea","_extent","circleOptions","getRadius","rectangleOptions","lnglatJson","getBounds","toJSON","calculatePointsDistance","ps","mapTop","mapLeft","trafficLayer","TrafficLayer","gids","status","fromContainerPixelToLatLng","lnlt","distext","round","random","updateLine","rangkey","end","lnglats","dbclickTimer","rangingToolEndFun","rangingToolMoveFun","rp","rcontent","grwkid","sl","updatePoint","arg","ary","clusterToolFunction","addMarkers","removeMarkers","clearMarkers","filter","vtx_g_rang","Object","apply","allps","getMapExtent","clickLngLat","css","visibility","isZoomming","isMoving","getZoom","moveEnd","zoomEnd","updatePointCollection","hide","gp","gg","pts","nowBounds","southWest","getNorthEast","northEast","getSouthWest","nowCenter","mapSize","ms","xmax","xmin","ymax","ymin","clearInterval","setInterval","waitTime","deleteTime","nowMovePoints","slice","deleteIndex","rx","ry","isAdded","tx","ty","addMarker","delay","urlright","timer","eval","count","s","equals","ddeg","rotateDeg","getIcon","isHave","sp","ep","spLngLat","epLngLat","tan","atan","disy","bias","RIGHT_BOTTOM","LEFT_TOP","LEFT_BOTTOM","RIGHT_TOP","fp","computeDistanceBetween","totalDistance","computeLength","is","fromJS","oldData","newData","onlyOldData","subtract","toJS","onlyNewData","onlyOldIDs","onlyNewIDs","updateDataIDs","intersect","updatedData","replacedData","deletedDataIDs","oldID","addedData","ads","otherupds","upds","otherads","_map","offsetLeft","offsetTop","init","prevProps","prevState","nextProps","setZoomLevel","setCluster","isRangingTool","isRemove","mapRemove","mapDraw","isDraw","isCloseDraw","editGraphicId","isDoEdit","isEndEdit","isclearAllPointCollection","isSetAreaRestriction","isClearAreaRestriction","isClearAll","deepEqual","dataMatch","clearPointCollection","oldMapPoints","newMapPoints","dealAdd","dealUpdate","oldMapPolygons","newMapPolygons","updatePolygon","oldMapCircles","newMapCircles","updateCircle","oldMapLines","newMapLines","doEdit","closeDraw","vtxRangingTool","loadLabel","clearOverlays","React","Component"],"sources":["VtxMap/OMap/Map.js"],"sourcesContent":["import React from 'react';\r\nimport {graphicManage,RotateIcon,getMaxMin} from '../MapToolFunction';\r\nimport Immutable from 'immutable';\r\nconst {Set} = Immutable;\r\n//公共地址配置\r\nimport configUrl from '../../default';\r\nclass Map extends React.Component {\r\n constructor(props){\r\n super(props);\r\n this.GM = new graphicManage();//初始化 图元管理方法\r\n this.initPointIndex = 0;//初始化地图时记录点当前位置\r\n this._cluster = null;//点聚合对象\r\n this.clusterIdList = [];//点聚合id集合\r\n this._rangingTool = null;//测距对象\r\n this._bmar = null;//区域限制对象\r\n this._drawmanager = null;//图元绘制对象\r\n this.editGraphicChange = null;//编辑方法回调\r\n this.editTimeout = null;//圆编辑回调延迟时间对象\r\n this._boundary = null;//获取行政区域数据的对象\r\n this.moveToTimer = null;//moveTo时间对象\r\n this.heatmap = null;//热力图对象\r\n this.morepoints = [];//海量点数组\r\n this.movePoints = [];//移动点的动画集合\r\n this.editEvent = {};//编辑监听的事件\r\n //是否绘制测距\r\n this.rangingTool = {\r\n isRanging: false,//是否开启状态\r\n line: {},//线\r\n points: [],//点\r\n distance: 0,//测距长度\r\n mapRangingTool: null,//测距回调\r\n eventList: {},\r\n isDbclick: false\r\n };\r\n this.rangingTools = {};//测距点线缓存\r\n this.state = {\r\n gis: null,//地图对象\r\n mapId: props.mapId,\r\n mapCreated: false,\r\n pointIds:[], //地图上点的ids\r\n lineIds:[], //地图上线的ids\r\n polygonIds:[], //地图上面的ids\r\n circleIds:[], //地图上圆的ids\r\n editId: '',//当前编辑的图元id\r\n editGraphic: '',//当前编辑完后图元所有数据\r\n boundaryInfo: [],//当前画出的边界线的id和区域名\r\n drawIds: {//绘制工具id集合\r\n point: [],\r\n polyline: [],\r\n polygon: [],\r\n circle: [],\r\n rectangle: []\r\n }\r\n };\r\n this.cacheImgRecord = {};//缓存图片记录,避免多次加载缓存\r\n // 图片缓存dom位置\r\n let cacheImg = document.getElementById('vtxomapdefaultimg');\r\n if(!cacheImg){\r\n cacheImg = this.cacheImg = document.createElement('div');\r\n cacheImg.id = 'vtxomapcacheImg';\r\n cacheImg.style.display = 'none';\r\n document.body.appendChild(cacheImg);\r\n }\r\n this.cacheImg = cacheImg;\r\n //缓存默认点位地址\r\n if(!document.getElementById('vtxomapdefaultimg')){\r\n let defImg = new Image();\r\n defImg.src = `${configUrl.mapServerURL}/images/defaultMarker.png`;\r\n defImg.id = 'vtxomapdefaultimg';\r\n cacheImg.appendChild(defImg);\r\n }\r\n //加载地图\r\n this.loadMapJs();\r\n }\r\n loadMapJs(){\r\n let t = this;\r\n this.loadMapComplete = new Promise((resolve,reject)=>{\r\n if(window.google){\r\n resolve(t.omap = window.google.maps);\r\n }\r\n else{\r\n //&language=zh-CN\r\n //测试用地址,暂时只支持 10.10.11.227的ip\r\n $.getScript('http://ditu.google.cn/maps/api/js?key=AIzaSyAelEHQosKi09YLhXwmw3OR5ggScxOda2A&libraries=geometry,visualization,drawing',()=>{\r\n let PointCollection = new Promise((resolve,reject)=>{\r\n $.getScript(`${configUrl.mapServerURL}/GPointCollection.js`,()=>{\r\n resolve();\r\n });\r\n });\r\n let OmapCluster = new Promise((resolve,reject)=>{\r\n $.getScript(`${configUrl.mapServerURL}/omapCluster.js`,()=>{\r\n resolve();\r\n });\r\n });\r\n Promise.all([PointCollection,OmapCluster]).then(()=>{\r\n resolve(t.omap = window.google.maps);\r\n })\r\n });\r\n }\r\n });\r\n }\r\n //初始化地图数据\r\n init(){\r\n let t = this;\r\n //创建地图\r\n t.createMap();\r\n const {\r\n mapPoints,mapLines,mapPolygons,mapCircles,\r\n mapVisiblePoints,mapCluster,mapZoomLevel,\r\n isOpenTrafficInfo,mapPointCollection,areaRestriction\r\n } = this.props;\r\n let {boundaryName,heatMapData,customizedBoundary} = this.props;\r\n let {boundaryInfo,pointIds,lineIds,polygonIds,circleIds} = this.state;\r\n // //添加点\r\n if(mapPoints instanceof Array){\r\n t.addPoint(mapPoints);\r\n }\r\n //添加线\r\n if(mapLines instanceof Array){\r\n t.addLine(mapLines);\r\n }\r\n //添加面\r\n if(mapPolygons instanceof Array){\r\n t.addPolygon(mapPolygons);\r\n }\r\n //添加圆\r\n if(mapCircles instanceof Array){\r\n t.addCircle(mapCircles);\r\n }\r\n // 画热力图\r\n if(heatMapData){\r\n t.heatMapOverlay(heatMapData);\r\n }\r\n if(mapPointCollection instanceof Array){\r\n t.addPointCollection(mapPointCollection);\r\n }\r\n /*设置指定图元展示*/\r\n if(mapVisiblePoints){\r\n t.setVisiblePoints(mapVisiblePoints);\r\n }\r\n //设置点聚合\r\n if(mapCluster instanceof Array){\r\n t.cluster(mapCluster);\r\n }\r\n //开关路况\r\n if(isOpenTrafficInfo){\r\n t.openTrafficInfo();\r\n }else{\r\n t.hideTrafficInfo();\r\n }\r\n /*地图事件*/\r\n //初始化地图点击事件\r\n t.clickMap();\r\n //地图拖动之前事件\r\n t.dragMapStart();\r\n // //地图拖动结束后事件\r\n t.dragMapEnd();\r\n // //地图移动之前事件\r\n t.moveStart();\r\n // //地图缩放开始前事件\r\n t.zoomStart();\r\n // //地图移动结束后事件/地图缩放结束后事件\r\n t.moveEndAndZoomEnd();\r\n\r\n t.setState({\r\n mapCreated:true\r\n })\r\n }\r\n //创建地图\r\n createMap () {\r\n let t = this;\r\n const {mapCenter,mapId,mapZoomLevel,minZoom,maxZoom,showControl,areaRestriction} = t.props;\r\n let options ={\r\n zoom: mapZoomLevel || 10,\r\n center: mapCenter || [626.3002300508477,37.90942995363547],\r\n minZoom: minZoom || 0,\r\n maxZoom: maxZoom || 22\r\n };\r\n //缓存 zoom等级,用于事件判断\r\n t.oldZoomLevel = options.zoom;\r\n if(window.VtxMap){\r\n window.VtxMap[mapId]= null;\r\n }else{\r\n window.VtxMap = {};\r\n }\r\n // 地图控件处理\r\n let isShowControl = false,\r\n controlPosition = t.matchControlPosition();\r\n if(showControl){\r\n controlPosition = t.matchControlPosition(showControl.location);\r\n isShowControl = !!showControl;\r\n }\r\n let latLngBounds = [];\r\n if(areaRestriction && Array.isArray(areaRestriction) && Array.isArray(areaRestriction[0])){\r\n //处理 区域限制数据\r\n latLngBounds = [\r\n areaRestriction[0][0],\r\n areaRestriction[0][1],\r\n areaRestriction[1][0],\r\n areaRestriction[1][1]\r\n ];\r\n latLngBounds.sort((a,b)=>a-b);\r\n }\r\n //创建地图 缓存地图对象\r\n let map = window.VtxMap[mapId] = t.state.gis = new t.omap.Map(document.getElementById(mapId.toString()),{\r\n center: {lng: options.center[0],lat: options.center[1]},\r\n disableDoubleClickZoom: false,\r\n draggableCursor: 'url(\"http://maps.gstatic.cn/mapfiles/openhand_8_8.cur\"), default', \r\n zoom: options.zoom,\r\n minZoom: options.minZoom,\r\n maxZoom: options.maxZoom,\r\n controlSize: 24,\r\n //全屏控件-禁用\r\n rotateControl: isShowControl,\r\n scaleControl: isShowControl,\r\n streetViewControl: isShowControl,\r\n fullscreenControl: isShowControl,\r\n mapTypeControl: isShowControl,\r\n zoomControl: isShowControl,\r\n rotateControlOptions: {position: controlPosition},\r\n streetViewControlOptions: {position: controlPosition},\r\n fullscreenControlOptions: {position: controlPosition},\r\n zoomControlOptions: {position: controlPosition},\r\n mapTypeControlOptions: {position: google.maps.ControlPosition.TOP_CENTER},\r\n //区域限制\r\n restriction: {\r\n latLngBounds: {\r\n north: latLngBounds[1] || 90,\r\n south: latLngBounds[0] || -90,\r\n west: latLngBounds[2] || -180,\r\n east: latLngBounds[3] || 180\r\n },\r\n strictBounds: false,\r\n }\r\n });\r\n /*=================================start========================================*/\r\n /*\r\n draw对象声明, 绘制返回方法实现\r\n */\r\n if(!t._drawmanager){\r\n t._drawmanager = new google.maps.drawing.DrawingManager({\r\n drawingControl: false\r\n });\r\n t._drawmanager.setMap(t.state.gis);\r\n }\r\n /*=================================start========================================*/\r\n //初始化点聚合对象\r\n if(!t._cluster){\r\n t._cluster = new OMapLib.MarkerClusterer(map,[],{maxZoom: options.maxZoom}); \r\n }\r\n /*=================================start========================================*/\r\n /*\r\n 声明OverlayView 类\r\n 用于切换lnglat和 pixel\r\n */\r\n function CanvasProjectionOverlay() {}\r\n CanvasProjectionOverlay.prototype = new google.maps.OverlayView();\r\n CanvasProjectionOverlay.prototype.constructor = CanvasProjectionOverlay;\r\n CanvasProjectionOverlay.prototype.onAdd = function(){};\r\n CanvasProjectionOverlay.prototype.draw = function(){};\r\n CanvasProjectionOverlay.prototype.onRemove = function(){};\r\n this.canvasProjectionOverlay = new CanvasProjectionOverlay();\r\n this.canvasProjectionOverlay.setMap(map);\r\n /*=================================start========================================*/\r\n /*\r\n 重写marker对象,支持html\r\n 要使用google对象,所以在creatMap中声明\r\n */\r\n let MyLabel = t.MyLabel = function(map,options = {}){\r\n //编辑\r\n this.editable = options.editable || false;\r\n this.editParam = {\r\n sx: 0,\r\n sy: 0\r\n };\r\n //地图\r\n this.map = map;\r\n this.isLabel = options.isLabel;\r\n //基本参数\r\n this.labelClass = options.labelClass;\r\n this.labelContent = options.labelContent;\r\n this.labelOffset = options.labelOffset || {x:0,y:0};\r\n this.lnglat = options.lnglat;\r\n\r\n this._label = null;\r\n\r\n this.funs = {};\r\n }\r\n //继承OverlayView类\r\n MyLabel.prototype = new google.maps.OverlayView();\r\n //添加地图时被调用(setMap时被调用)\r\n MyLabel.prototype.onAdd = function(){\r\n //创建文字标签\r\n if(!this._label){\r\n this._label = document.createElement('div');\r\n this._label.innerHTML = this.labelContent;\r\n this._label.style.position = 'absolute';\r\n this._label.className = this.labelClass;\r\n //获取承载点位的框\r\n let panes = this.getPanes();\r\n if(this.isLabel){\r\n panes.markerLayer.appendChild(this._label);\r\n }else{\r\n panes.overlayMouseTarget.appendChild(this._label);\r\n }\r\n }else{\r\n this._label.innerHTML = this.labelContent;\r\n this._label.className = this.labelClass;\r\n }\r\n for(var i in this.funs){\r\n this.removeListener(i);\r\n this.addListener(i,this.funs[i])\r\n }\r\n }\r\n //计算位置, onAdd和缩放和平移之后调用\r\n MyLabel.prototype.draw = function(){\r\n //返回MapCanvasProjection对象,拥有计算pixel和lnglat的方法\r\n let overlayProjection = this.getProjection();\r\n //将地理坐标转换成屏幕坐标\r\n let position = overlayProjection.fromLatLngToDivPixel(this.lnglat);\r\n if(position){\r\n this._label.style.left = position.x + parseFloat(this.labelOffset.x) + 'px';\r\n this._label.style.top = position.y + parseFloat(this.labelOffset.y) + 'px';\r\n }\r\n }\r\n //更新点位信息\r\n MyLabel.prototype.setOptions = function(options){\r\n this.labelClass = options.labelClass;\r\n this.labelContent = options.labelContent;\r\n this.labelOffset = options.labelOffset || {x:0,y:0};\r\n this.lnglat = options.lnglat || this.lnglat;\r\n if(this._label){\r\n this.onAdd();\r\n }\r\n }\r\n //更新点位信息\r\n MyLabel.prototype.setPosition = function(lnglat){\r\n this.lnglat = lnglat;\r\n if(this._label){\r\n this.draw();\r\n }else{\r\n //触发onAdd draw\r\n this.setMap(map);\r\n }\r\n }\r\n //更新点位信息\r\n MyLabel.prototype.getPosition = function(){\r\n return this.lnglat;\r\n }\r\n //更新点位信息\r\n MyLabel.prototype.setZIndex = function(index){\r\n if(this._label){\r\n this._label.style.ZIndex = index;\r\n }\r\n }\r\n //用于updatePoint时 判断原来的点图元类型\r\n MyLabel.prototype.isMarkerContent = function(){\r\n return true;\r\n }\r\n //被删除时会调用\r\n MyLabel.prototype.onRemove = function(){\r\n this._label.parentNode.removeChild(this._label); \r\n this._label = null;\r\n }\r\n MyLabel.prototype.addListener = function(key,fun){\r\n let tt = this;\r\n if(key == 'dragend'){\r\n //编辑返回函数\r\n this.dragendFun = fun;\r\n return false;\r\n }\r\n setTimeout(()=>{\r\n if(tt._label){\r\n tt.funs[key] = function(event){\r\n if(event.stopPropagation){\r\n event.stopPropagation();\r\n }\r\n if(!tt.editable){\r\n fun({\r\n latLng: tt.lnglat,\r\n va: event,\r\n pixel: tt.getProjection().fromLatLngToDivPixel(tt.lnglat)\r\n });\r\n }\r\n }\r\n tt._label.addEventListener(key,tt.funs[key]);\r\n }else{\r\n tt.addListener(key,fun);\r\n }\r\n },50)\r\n }\r\n MyLabel.prototype.removeListener = function(key){\r\n if(key == 'dragend'){\r\n this.dragendFun = ()=>{};\r\n return false;\r\n }\r\n if(this._label){\r\n this._label.removeEventListener(key,this.funs[key]);\r\n }\r\n }\r\n //设置是否可以编辑\r\n MyLabel.prototype.setDraggable = function(boolean){\r\n this.editable = boolean;\r\n if(boolean){\r\n this.edit();\r\n }else{\r\n this._label.removeEventListener('mousedown',this.mdown);\r\n }\r\n }\r\n //编辑时 事件和逻辑\r\n MyLabel.prototype.edit = function(){\r\n let tt = this;\r\n tt.mdown = function(event){\r\n event.stopPropagation();\r\n //禁止文本选中\r\n tt._label.className = 'noselect';\r\n // 记录原始位置\r\n tt.editParam.sx = event.clientX;\r\n tt.editParam.sy = event.clientY;\r\n\r\n let mmEvent = function(e){\r\n e.stopPropagation();\r\n //计算与上一次的差值 累加到label dom上\r\n tt._label.style.left = parseFloat(tt._label.style.left.replace('px','')) + e.clientX - tt.editParam.sx + 'px';\r\n tt._label.style.top = parseFloat(tt._label.style.top.replace('px','')) + e.clientY - tt.editParam.sy + 'px';\r\n //更新原始位置\r\n tt.editParam.sx = e.clientX;\r\n tt.editParam.sy = e.clientY;\r\n }\r\n let mupEvent = function(e){\r\n e.stopPropagation();\r\n //计算与上一次的差值 累加到label dom上\r\n let x = parseFloat(tt._label.style.left.replace('px','')) + e.clientX - tt.editParam.sx,\r\n y = parseFloat(tt._label.style.top.replace('px','')) + e.clientY - tt.editParam.sy;\r\n //计算经纬度,固定label的位置\r\n tt._label.style.left = x + 'px';\r\n tt._label.style.top = y + 'px';\r\n let overlayProjection = tt.getProjection(),\r\n latlng = overlayProjection.fromDivPixelToLatLng(new google.maps.Point(x,y));\r\n tt.setPosition(latlng);\r\n // 清空 文本禁选\r\n tt._label.className = '';\r\n tt.dragendFun(e);\r\n //关闭全局监听\r\n document.removeEventListener('mousemove',mmEvent);\r\n document.removeEventListener('mouseup',mupEvent);\r\n }\r\n document.addEventListener('mousemove',mmEvent)\r\n document.addEventListener('mouseup',mupEvent)\r\n }\r\n tt._label.addEventListener('mousedown',tt.mdown);\r\n }\r\n /*=================================end========================================*/\r\n }\r\n //设置指定图元展示 google只有zoom和center全适应,单适应暂时无法实现\r\n setVisiblePoints(obj){\r\n let t = this;\r\n let ls = [];\r\n let {pointIds,lineIds,polygonIds,circleIds} = t.state;\r\n let getLngLats = (ids,type)=>{\r\n let alnglat = [],lngs = [],lats = [];\r\n if(!type){\r\n t.GM.getMoreGraphicParam(ids).map((item,index)=>{\r\n //根据天地图 覆盖物类型获取lnglat\r\n switch(item.geometryType){\r\n case 'point':\r\n alnglat.push([item.geometry.x,item.geometry.y]);\r\n break;\r\n case 'polyline':\r\n alnglat.push(...item.geometry.paths);\r\n break;\r\n case 'polygon':\r\n alnglat.push(...item.geometry.rings);\r\n break;\r\n case 'circle':\r\n alnglat.push([item.geometry.x,item.geometry.y]);\r\n break;\r\n }\r\n });\r\n }else{\r\n alnglat = ids;\r\n }\r\n alnglat.forEach((item,index)=>{\r\n lngs.push(item[0]);\r\n lats.push(item[1]);\r\n });\r\n lngs.sort();lats.sort();\r\n return {\r\n sw: new google.maps.LatLng({lng:lngs[0],lat:lats[0]}),\r\n ne: new google.maps.LatLng({lng:lngs[lngs.length-1],lat:lats[lats.length-1]})\r\n };\r\n }\r\n //算出 要展示的图元点位\r\n switch(obj.fitView){\r\n case 'point':\r\n ls = getLngLats(pointIds);\r\n break;\r\n case 'line':\r\n ls = getLngLats(lineIds);\r\n break;\r\n case 'polygon':\r\n ls = getLngLats(polygonIds);\r\n break;\r\n case 'circle':\r\n ls = getLngLats(circleIds);\r\n break;\r\n case 'all':\r\n ls = getLngLats([...pointIds,...lineIds,...polygonIds,...circleIds]);\r\n break;\r\n default:\r\n let ids = [];\r\n if(obj.fitView instanceof Array){\r\n ids = obj.fitView;\r\n }else if(typeof(obj.fitView) === 'string'){\r\n ids = obj.fitView.split(',');\r\n }\r\n //支持传经纬度\r\n if(ids[0] instanceof Array){\r\n ls = getLngLats(ids,'lnglat');\r\n }else{\r\n ls = getLngLats(ids);\r\n }\r\n break;\r\n }\r\n t.state.gis.fitBounds(new google.maps.LatLngBounds(ls.sw,ls.ne));\r\n }\r\n //设置地图中心位置 lng/经度 lat/纬度\r\n setCenter (gt) {\r\n let t = this;\r\n let mgt = [626.3002300508477,37.90942995363547];\r\n if(gt){\r\n //经纬度 必须存在 否则不操作\r\n if (!gt[0] || !gt[1]) {\r\n return false;\r\n }\r\n //如果设置的经纬度 与当前中心点一样 不操作\r\n let c = t.state.gis.getCenter();\r\n if(c.lng == gt[0] && c.lat == gt[1]){\r\n return false;\r\n }\r\n mgt = gt;\r\n }\r\n t.state.gis.setCenter(new google.maps.LatLng({lng:mgt[0],lat:mgt[1]}));\r\n t.setState({center: mgt});\r\n }\r\n //设置地图比例尺\r\n setZoomLevel (zoom) {\r\n let t =this;\r\n let z = t.getZoomLevel();\r\n if(z == zoom){\r\n return false;\r\n }\r\n t.state.gis.setZoom(zoom);\r\n }\r\n //清空地图所有图元\r\n clearAll (){\r\n let t = this;\r\n //清空热力图\r\n if(t.heatmap){\r\n t.heatmap.setMap(null);\r\n }\r\n t.heatmap = null;\r\n //先清除所有标记\r\n if(t.clusterIdList.length){\r\n t.clearClusters();\r\n }\r\n t.clearAllPointCollection();\r\n //清空点\r\n for(let i in t.GM.allGraphics){\r\n if(t.GM.allGraphics[i]){\r\n t.GM.allGraphics[i].setMap(null)\r\n }\r\n }\r\n //清空缓存数据\r\n t.GM.clearAll();\r\n //清空历史数据记录\r\n t.setState({\r\n pointIds: [],\r\n lineIds: [],\r\n polygonIds: [],\r\n circleIds: [],\r\n boundaryInfo: [],\r\n drawIds: {\r\n point: [],\r\n polyline: [],\r\n polygon: [],\r\n circle: [],\r\n rectangle: []\r\n }\r\n });\r\n }\r\n //图元功能处理方法\r\n //新增点位\r\n addPoint(mapPoints,type){\r\n let t = this;\r\n let psids = [...t.state.pointIds];\r\n let apf = ()=>{\r\n mapPoints.map((item,index)=>{\r\n //如果id重复,直接跳过不执行.\r\n if (this.GM.isRepetition(item.id)) {\r\n console.warn(`加点id: ${item.id} 重复`);\r\n return false;\r\n }\r\n //点位数据不符合,直接跳过\r\n if(!item.longitude || !item.latitude){\r\n console.warn(`点 经纬度 数据错误`);\r\n return false;\r\n }\r\n\r\n let cg = {\r\n width : 30,\r\n height : 30,\r\n labelContent: '',\r\n labelPixelX: 0,\r\n labelPixelY: 34,\r\n BAnimationType: 3,\r\n //高德以左上定位,百度以中心为定位\r\n //默认点的偏移值就不同\r\n markerContentX: -15,\r\n markerContentY: -30,\r\n deg: 0\r\n }\r\n if(item.markerContent){\r\n cg = {...cg,markerContentX: 0,markerContentY: 0,width:100,height:30};\r\n }\r\n //初始化默认数据\r\n if(item.config){\r\n cg = {...cg,...item.config};\r\n }\r\n let position = new t.omap.LatLng({lng:item.longitude,lat:item.latitude});\r\n let marker = null;\r\n if(item.markerContent){\r\n /*自定义html加点\r\n 用Label来实现,无法再添加label(高德有判断,实现不同)*/\r\n //覆盖物参数\r\n marker = new t.MyLabel(t.state.gis,{\r\n labelContent: item.markerContent,\r\n labelOffset: {x: cg.markerContentX,y: cg.markerContentY},\r\n });\r\n marker.setPosition(position);\r\n }else{\r\n /*添加非html点位*/\r\n // //添加label\r\n if(item.canShowLabel && cg.labelContent){\r\n //label默认样式\r\n let labelClass = 'label-content';\r\n //接受label自定义样式\r\n if(item.labelClass){\r\n labelClass = item.labelClass.split(',').join(' ');\r\n }\r\n let label = new t.MyLabel(t.state.gis,{\r\n isLabel: true,\r\n labelClass,\r\n labelContent: cg.labelContent,\r\n /*\r\n 为和百度等地图相同的参数 加上g.markerContentY值\r\n label是使用OverlayView手动实现,与marker没有关联的原因\r\n */\r\n labelOffset: {x: cg.labelPixelX,y: cg.labelPixelY+cg.markerContentY}\r\n });\r\n label.setPosition(position);\r\n //缓存\r\n t.GM.setGraphic(`${item.id}_vtxoMap_label`,label);\r\n }\r\n let iconUrl = '';\r\n // 360deg 不需要旋转\r\n if(parseFloat(cg.deg)%360 != 0){\r\n iconUrl = new RotateIcon({\r\n url:item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\r\n width: cg.width,\r\n height: cg.height\r\n });\r\n }\r\n let icon = {\r\n anchor: {x: -cg.markerContentX,y: -cg.markerContentY},\r\n size: new t.omap.Size(cg.width,cg.height),\r\n scaledSize: new t.omap.Size(cg.width,cg.height),\r\n url: parseFloat(cg.deg)%360 != 0 ?\r\n iconUrl.setRotation(cg.deg).getUrl()\r\n :item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\r\n labelOrigin: {x: cg.labelPixelX,y: cg.labelPixelY}\r\n };\r\n //添加点到地图\r\n marker = new t.omap.Marker({\r\n icon,\r\n position,\r\n map: t.state.gis\r\n });\r\n if(item.canShowLabel && cg.labelContent){\r\n marker.ishaveLabel = true;\r\n }\r\n }\r\n if(cg.zIndex || cg.zIndex === 0){\r\n marker.setZIndex(cg.zIndex);\r\n }\r\n if(!item.markerContent && cg.BAnimationType == 0){\r\n marker.setAnimation(google.maps.Animation.BOUNCE);\r\n }else if(!item.markerContent && cg.BAnimationType == 1){\r\n marker.setAnimation(google.maps.Animation.DROP);\r\n }\r\n //点击事件\r\n let mClick = marker.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(item.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = marker.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(item.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = marker.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(item.id,e);\r\n });\r\n //缓存所有点的id\r\n psids.push(item.id);\r\n //缓存当前点的图元对象和基本数据\r\n t.GM.setGraphic(item.id,marker)\r\n .setGraphicParam(item.id,{\r\n attributes: {...item,other: item},\r\n geometryType: 'point',\r\n geometry: {\r\n type: 'point',\r\n x: item.longitude,\r\n y: item.latitude\r\n }\r\n }).setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n });\r\n if(type !== 'defined'){\r\n //所有点缓存在state中\r\n t.state.pointIds = psids;\r\n // t.setState({\r\n // pointIds: psids\r\n // });\r\n }\r\n }\r\n //内部 不需要旋转图标的处理方式\r\n if(type == 'nodeg'){\r\n apf();\r\n }else{\r\n //缓存图片 旋转功能使用\r\n mapPoints.map((item,index)=>{\r\n //避免多次缓存\r\n if(item.url && !t.cacheImgRecord[item.url]){\r\n let i = new Image();\r\n i.src = item.url;\r\n t.cacheImg.appendChild(i);\r\n t.cacheImgRecord[item.url] = true;\r\n }\r\n });\r\n //定时等待 图片缓存,点位旋转功能需要\r\n t.addPsTimer = setTimeout(()=>{\r\n apf();\r\n },200)\r\n }\r\n }\r\n //更新点位\r\n updatePoint(mapPoints,type){\r\n let t = this;\r\n let upf = ()=>{\r\n mapPoints.map((item,index)=>{\r\n //判断图元是否存在.\r\n if (this.GM.isRepetition(item.id)) {\r\n //点位数据不符合,直接跳过\r\n if(!item.longitude || !item.latitude){\r\n console.warn(`点 经纬度 数据错误`);\r\n return false;\r\n }\r\n //获取原有的图元 和 对应的label\r\n let gc = t.GM.getGraphic(item.id),\r\n gc_label = t.GM.getGraphic(`${item.id}_vtxoMap_label`);\r\n //更新前删除聚合\r\n if(t.clusterIdList.indexOf(item.id) > -1){\r\n t._cluster.removeMarker(gc);\r\n if(gc_label){\r\n t._cluster.removeMarker(gc_label);\r\n }\r\n }\r\n let cg = {\r\n width : 30,\r\n height : 30,\r\n labelContent: '',\r\n labelPixelX: 0,\r\n labelPixelY: 34,\r\n BAnimationType: 3,\r\n //高德以左上定位,百度以中心为定位\r\n //默认点的偏移值就不同\r\n markerContentX: -15,\r\n markerContentY: -30,\r\n deg: 0\r\n }\r\n if(item.markerContent){\r\n cg = {...cg,markerContentX: 0,markerContentY: 0,width:100,height:30};\r\n }\r\n if(item.config){\r\n cg = {...cg,...item.config};\r\n }\r\n //新旧经纬度 旧经纬度配合moveTo使用\r\n let position = new t.omap.LatLng({lng:item.longitude,lat:item.latitude});\r\n let oldPosition = gc.getPosition();\r\n //前后点位类型都是markerContent\r\n if(gc.isMarkerContent && gc.isMarkerContent() && item.markerContent){\r\n /*\r\n 自定义html加点\r\n 用Label来实现,无法再添加label(高德有判断,实现不同)\r\n */\r\n //覆盖物参数\r\n gc.setOptions({\r\n labelContent: item.markerContent,\r\n labelOffset: {x: cg.markerContentX,y: cg.markerContentY},\r\n lnglat: oldPosition\r\n })\r\n }else if(gc.isMarkerContent && gc.isMarkerContent() && !item.markerContent){\r\n //markerContent类型转 marker-url类型\r\n //清除事件\r\n gc.removeListener('click');\r\n gc.removeListener('mouseover');\r\n gc.removeListener('mouseout');\r\n //删除原点位\r\n gc.setMap(null);\r\n let iconUrl = '';\r\n // 360deg 不需要旋转\r\n if(parseFloat(cg.deg)%360 != 0){\r\n iconUrl = new RotateIcon({\r\n url:item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\r\n width: cg.width,\r\n height: cg.height\r\n });\r\n }\r\n let icon = {\r\n anchor: {x: -cg.markerContentX,y: -cg.markerContentY},\r\n size: new t.omap.Size(cg.width,cg.height),\r\n scaledSize: new t.omap.Size(cg.width,cg.height),\r\n url: parseFloat(cg.deg)%360 != 0 ?\r\n iconUrl.setRotation(cg.deg).getUrl()\r\n :item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\r\n labelOrigin: {x: cg.labelPixelX,y: cg.labelPixelY}\r\n };\r\n //重新加载点位\r\n gc = new t.omap.Marker({\r\n icon,\r\n position:oldPosition,\r\n map: t.state.gis\r\n });\r\n //切换 图元对象缓存\r\n t.GM.setGraphic(item.id,gc);\r\n if(item.canShowLabel && cg.labelContent){\r\n //label默认样式\r\n let labelClass = 'label-content';\r\n //接受label自定义样式\r\n if(item.labelClass){\r\n labelClass = item.labelClass.split(',').join(' ');\r\n }\r\n if(!gc_label){\r\n gc_label = new t.MyLabel();\r\n t.GM.setGraphic(`${item.id}_vtxoMap_label`,gc_label);\r\n }\r\n gc_label.setOptions({\r\n labelClass,\r\n labelContent: cg.labelContent,\r\n /*\r\n 为和百度等地图相同的参数 加上g.markerContentY值\r\n label是使用OverlayView手动实现,与marker没有关联的原因\r\n */\r\n labelOffset: {x: cg.labelPixelX,y: cg.labelPixelY+cg.markerContentY}\r\n })\r\n gc.ishaveLabel = true;\r\n }\r\n //点击事件\r\n let mClick = gc.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(item.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = gc.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(item.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = gc.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(item.id,e);\r\n });\r\n t.GM.setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n }else if(!gc.isMarkerContent && item.markerContent){\r\n //marker-url类型转markerContent类型\r\n //清除事件\r\n if(t.GM.getGraphicParam(`${item.id}_omap_event`).click){\r\n t.GM.getGraphicParam(`${item.id}_omap_event`).click.remove();\r\n }\r\n if(t.GM.getGraphicParam(`${item.id}_omap_event`).mouseover){\r\n t.GM.getGraphicParam(`${item.id}_omap_event`).mouseover.remove();\r\n }\r\n if(t.GM.getGraphicParam(`${item.id}_omap_event`).mouseout){\r\n t.GM.getGraphicParam(`${item.id}_omap_event`).mouseout.remove();\r\n }\r\n //删除原点位\r\n gc.setMap(null);\r\n //存在 label点位 直接删除\r\n if(gc_label){\r\n gc_label.setMap(null);\r\n t.GM.removeGraphic(`${item.id}_vtxoMap_label`);\r\n }\r\n //重新加载点位 (原有位置加载,配合moveTo方法使用)\r\n gc = new t.MyLabel(t.state.gis,{\r\n labelContent: item.markerContent,\r\n labelOffset: {x: cg.markerContentX,y: cg.markerContentY},\r\n });\r\n gc.setPosition(oldPosition);\r\n //切换 图元对象缓存\r\n t.GM.setGraphic(item.id,gc);\r\n //点击事件\r\n let mClick = gc.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(item.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = gc.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(item.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = gc.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(item.id,e);\r\n });\r\n t.GM.setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n })\r\n }else{\r\n let iconUrl = '';\r\n // 360deg 不需要旋转\r\n if(parseFloat(cg.deg)%360 != 0){\r\n iconUrl = new RotateIcon({\r\n url:item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\r\n width: cg.width,\r\n height: cg.height\r\n });\r\n }\r\n //前后点位类型都是marker-url\r\n let icon = {\r\n anchor: {x: -cg.markerContentX,y: -cg.markerContentY},\r\n size: new t.omap.Size(cg.width,cg.height),\r\n scaledSize: new t.omap.Size(cg.width,cg.height),\r\n url: parseFloat(cg.deg)%360 != 0 ?\r\n iconUrl.setRotation(cg.deg).getUrl()\r\n :item.url || `${configUrl.mapServerURL}/images/defaultMarker.png`,\r\n labelOrigin: {x: cg.labelPixelX,y: cg.labelPixelY}\r\n };\r\n gc.setIcon(icon);\r\n if(item.canShowLabel && cg.labelContent){\r\n //label默认样式\r\n let labelClass = 'label-content';\r\n //接受label自定义样式\r\n if(item.labelClass){\r\n labelClass = item.labelClass.split(',').join(' ');\r\n }\r\n if(!gc_label){\r\n gc_label = new t.MyLabel();\r\n t.GM.setGraphic(`${item.id}_vtxoMap_label`,gc_label);\r\n }\r\n gc_label.setOptions({\r\n labelClass,\r\n labelContent: cg.labelContent,\r\n /*\r\n 为和百度等地图相同的参数 加上g.markerContentY值\r\n label是使用OverlayView手动实现,与marker没有关联的原因\r\n */\r\n labelOffset: {x: cg.labelPixelX,y: cg.labelPixelY+cg.markerContentY}\r\n })\r\n gc.ishaveLabel = true;\r\n }\r\n }\r\n if(!item.markerContent && cg.BAnimationType == 0){\r\n gc.setAnimation(google.maps.Animation.BOUNCE);\r\n }else if(!item.markerContent && cg.BAnimationType == 1){\r\n gc.setAnimation(google.maps.Animation.DROP);\r\n }\r\n /*moveTo*/\r\n //动画效果会延迟执行经纬度的切换\r\n if(cg.isAnimation){\r\n t.moveTo(item.id,[item.longitude,item.latitude],cg.animationDelay,cg.autoRotation,item.url,item.urlleft);\r\n }else{\r\n if(gc_label){\r\n gc_label.setPosition(position)\r\n }\r\n //修改经纬度\r\n gc.setPosition(position);\r\n }\r\n if(cg.zIndex || cg.zIndex === 0){\r\n gc.setZIndex(cg.zIndex);\r\n }\r\n t.GM.setGraphicParam(\r\n item.id,\r\n {\r\n attributes: {...item,other: item},\r\n geometryType: 'point',\r\n geometry: {\r\n type: 'point',\r\n x: item.longitude,\r\n y: item.latitude\r\n }\r\n }\r\n );\r\n }else{\r\n console.warn(`更新的点位id不存在!`);\r\n return false;\r\n }\r\n });\r\n t.moveAnimation();\r\n }\r\n //内部 不需要旋转图标的处理方式\r\n if(type == 'nodeg'){\r\n upf();\r\n }else{\r\n //缓存图片 旋转功能使用\r\n mapPoints.map((item,index)=>{\r\n //排除已经缓存的\r\n if(item.url && !t.cacheImgRecord[item.url]){\r\n let i = new Image();\r\n i.src = item.url;\r\n t.cacheImg.appendChild(i);\r\n t.cacheImgRecord[item.url] = true;\r\n }\r\n if(item.urlleft && !t.cacheImgRecord[item.urlleft]){\r\n let i = new Image();\r\n i.src = item.urlleft;\r\n t.cacheImg.appendChild(i);\r\n t.cacheImgRecord[item.urlleft] = true;\r\n }\r\n });\r\n // 定时等待 图片缓存,点位旋转功能需要\r\n t.upPsTimer = setTimeout(()=>{\r\n upf();\r\n },200)\r\n }\r\n }\r\n //添加线\r\n addLine(mapLines,type){\r\n let t = this;\r\n let lsids = [...t.state.lineIds];\r\n //遍历添加线(图元)\r\n mapLines.map((item,index)=>{\r\n //如果id重复,直接跳过不执行.\r\n if (t.GM.isRepetition(item.id)) {\r\n console.warn(`多折线id: ${item.id} 重复`);\r\n return false;\r\n }\r\n //多折线点位数据不符合,直接跳过\r\n if(!(item.paths && item.paths.length >= 2)){\r\n console.warn(`多折线paths数据错误`);\r\n return false;\r\n }\r\n //初始化默认参数\r\n let cg = {\r\n color: '#277ffa',\r\n pellucidity: 0.9,\r\n lineWidth: 5,\r\n lineType: 'solid',\r\n isHidden: false\r\n }\r\n //合并参数\r\n if(item.config){\r\n cg = {...cg,...item.config};\r\n }\r\n // 线样式\r\n let icons = [];\r\n if(cg.lineType == 'dashed'){\r\n let lineSymbol = {\r\n path: 'M 0,-1 0,1',\r\n strokeOpacity: 1,\r\n scale: cg.lineWidth > 5?5:cg.lineWidth <2.5?2.5:cg.lineWidth\r\n };\r\n icons = [{icon:lineSymbol,offset: '0',repeat: '20px'}]\r\n }\r\n //处理线的点数组\r\n let linePath = item.paths.map((item,index)=>{\r\n return new google.maps.LatLng({lng: item[0],lat: item[1]});\r\n }),\r\n //处理线的参数\r\n lineOption = {\r\n strokeColor : cg.color, // 线颜色\r\n strokeWeight : cg.lineWidth, // 线宽\r\n strokeOpacity : cg.lineType == 'dashed'?0:cg.pellucidity, // 线透明度\r\n icons\r\n };\r\n //创建线对象\r\n let line = new google.maps.Polyline({...lineOption,path:linePath});\r\n //判断线显示和隐藏\r\n if(cg.isHidden){\r\n line.setVisible(false);\r\n }else{\r\n line.setVisible(true);\r\n }\r\n lsids.push(item.id);\r\n //添加线至地图\r\n line.setMap(t.state.gis);\r\n //点击事件\r\n let mClick = line.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(item.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = line.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(item.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = line.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(item.id,e);\r\n });\r\n t.GM.setGraphic(item.id,line)\r\n .setGraphicParam(item.id,{\r\n attributes: {\r\n ...item,\r\n paths: item.paths,\r\n other: item\r\n },\r\n geometryType: 'polyline',\r\n geometry: {\r\n type: 'polyline',\r\n paths: item.paths\r\n }\r\n }).setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n });\r\n if(type !== 'defined'){\r\n t.state.lineIds = lsids;\r\n // t.setState({\r\n // lineIds: lsids\r\n // });\r\n }\r\n }\r\n //更新线\r\n updateLine(mapLines){\r\n let t = this;\r\n //遍历添加线(图元)\r\n mapLines.map((item,index)=>{\r\n //判断图元是否存在.\r\n if (t.GM.isRepetition(item.id)) {\r\n //多折线点位数据不符合,直接跳过\r\n if(!(item.paths && item.paths.length >= 2)){\r\n console.warn(`多折线paths数据错误`);\r\n return false;\r\n }\r\n }else{\r\n console.warn(`更新的多折线id不存在!`);\r\n return false;\r\n }\r\n let gc = t.GM.getGraphic(item.id);\r\n //初始化默认参数\r\n let cg = {\r\n color: '#277ffa',\r\n pellucidity: 0.9,\r\n lineWidth: 5,\r\n lineType: 'solid',//'solid' 'dashed'\r\n isHidden: false\r\n }\r\n //合并参数\r\n if(item.config){\r\n cg = {...cg,...item.config};\r\n }\r\n // 线样式\r\n let icons = [];\r\n if(cg.lineType == 'dashed'){\r\n let lineSymbol = {\r\n path: 'M 0,-1 0,1',\r\n strokeOpacity: 1,\r\n scale: cg.lineWidth > 5?5:cg.lineWidth <2.5?2.5:cg.lineWidth\r\n };\r\n icons = [{icon:lineSymbol,offset: '0',repeat: '20px'}]\r\n }\r\n //处理线的点数组\r\n let linePath = item.paths.map((item,index)=>{\r\n return new google.maps.LatLng({lng: item[0],lat: item[1]});\r\n }),\r\n //处理线的参数\r\n lineOption = {\r\n strokeColor : cg.color, // 线颜色\r\n strokeWeight : cg.lineWidth, // 线宽\r\n strokeOpacity : cg.lineType == 'dashed'?0:cg.pellucidity, // 线透明度\r\n icons\r\n };\r\n //修改线点位数据\r\n gc.setPath(linePath);\r\n //修改线配置\r\n gc.setOptions(lineOption);\r\n //判断线显示和隐藏\r\n if(cg.isHidden){\r\n gc.setVisible(false);\r\n }else{\r\n gc.setVisible(true);\r\n }\r\n t.GM.setGraphicParam(item.id,{\r\n attributes: {\r\n ...item,\r\n paths: item.paths,\r\n other: item\r\n },\r\n geometryType: 'polyline',\r\n geometry: {\r\n type: 'polyline',\r\n paths: item.paths\r\n }\r\n });\r\n });\r\n }\r\n //添加面\r\n addPolygon(mapPolygons){\r\n let t = this;\r\n let pgsids = [...t.state.polygonIds];\r\n //遍历添加面(图元)\r\n mapPolygons.map((item,index)=>{\r\n //如果id重复,直接跳过不执行.\r\n if (t.GM.isRepetition(item.id)) {\r\n console.warn(`多边形id: ${item.id} 重复`);\r\n return false;\r\n }\r\n //多边形点位数据不符合,直接跳过\r\n if(!(item.rings && item.rings.length >= 3)){\r\n console.warn(`多边形rings数据错误`);\r\n return false;\r\n }\r\n //初始化参数\r\n let cg = {\r\n lineType: 'solid',\r\n lineWidth: 5,\r\n lineColor: '#277ffa',\r\n lineOpacity: 1,\r\n color: '#fff',\r\n pellucidity: 0.5\r\n // isHidden: false //后期需要再加\r\n }\r\n if(item.config){\r\n cg = {...cg,...item.config};\r\n }\r\n //面的参数\r\n let polygonOption = {\r\n strokeColor: cg.lineColor,\r\n strokeOpacity: cg.lineOpacity,\r\n strokeWeight: cg.lineWidth,\r\n strokeStyle: cg.lineType,\r\n fillColor: cg.color,\r\n fillOpacity: cg.pellucidity\r\n },\r\n polygonPath = item.rings.map((item,index)=>{\r\n return new google.maps.LatLng({lng: item[0],lat: item[1]});\r\n });\r\n //创建面对象\r\n let polygon = new google.maps.Polygon({...polygonOption,paths: polygonPath});\r\n //添加面至地图\r\n polygon.setMap(t.state.gis);\r\n //点击事件\r\n let mClick = polygon.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(item.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = polygon.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(item.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = polygon.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(item.id,e);\r\n });\r\n //缓存面id\r\n pgsids.push(item.id);\r\n //缓存面图元对象和对于传入数据\r\n t.GM.setGraphic(item.id,polygon)\r\n .setGraphicParam(item.id,{\r\n attributes: {\r\n ...item,\r\n rings: item.rings,\r\n other: item\r\n },\r\n geometryType: 'polygon',\r\n geometry: {\r\n type: 'polygon',\r\n rings: item.rings\r\n },\r\n }).setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n });\r\n t.state.polygonIds = pgsids;\r\n // t.setState({\r\n // polygonIds: pgsids\r\n // });\r\n }\r\n //更新面\r\n updatePolygon(mapPolygons){\r\n let t = this;\r\n mapPolygons.map((item,index)=>{\r\n //判断图元是否存在.\r\n if (t.GM.isRepetition(item.id)) {\r\n //多边形点位数据不符合,直接跳过\r\n if(!(item.rings && item.rings.length >= 3)){\r\n console.warn(`多边形rings数据错误`);\r\n return false;\r\n }\r\n //获取原有的图元\r\n let gc = t.GM.getGraphic(item.id);\r\n //初始化参数\r\n let cg = {\r\n lineType: 'solid',\r\n lineWidth: 5,\r\n lineColor: '#277ffa',\r\n lineOpacity: 1,\r\n color: '#fff',\r\n pellucidity: 0.5\r\n // isHidden: false //后期需要再加\r\n }\r\n if(item.config){\r\n cg = {...cg,...item.config};\r\n }\r\n //面的参数\r\n let polygonOption = {\r\n strokeColor: cg.lineColor,\r\n strokeOpacity: cg.lineOpacity,\r\n strokeWeight: cg.lineWidth,\r\n strokeStyle: cg.lineType,\r\n fillColor: cg.color,\r\n fillOpacity: cg.pellucidity\r\n },\r\n polygonPath = item.rings.map((item,index)=>{\r\n return new google.maps.LatLng({lng: item[0],lat: item[1]});\r\n });\r\n //更新经纬度\r\n gc.setPath(polygonPath);\r\n //更新 多边形 参数\r\n gc.setOptions(polygonOption);\r\n t.GM.setGraphicParam(\r\n item.id,\r\n {\r\n attributes: {\r\n ...item,\r\n rings: item.rings,\r\n other: item\r\n },\r\n geometryType: 'polygon',\r\n geometry: {\r\n type: 'polygon',\r\n rings: item.rings\r\n }\r\n }\r\n );\r\n }else{\r\n console.warn(`更新的多边形id不存在!`);\r\n return false;\r\n }\r\n });\r\n }\r\n //添加圆 circle\r\n addCircle(mapCircles){\r\n let t = this;\r\n let ccsids = [...t.state.circleIds];\r\n mapCircles.map((item,index)=>{\r\n //如果id重复,直接跳过不执行.\r\n if (t.GM.isRepetition(item.id)) {\r\n console.warn(`圆id: ${item.id} 重复`);\r\n return false;\r\n }\r\n //圆 点位数据不符合,直接跳过\r\n if(!item.longitude || !item.latitude){\r\n console.warn(`圆 经纬度 数据错误`);\r\n return false;\r\n }\r\n let cg = {\r\n lineType: 'solid',\r\n lineWidth: 5,\r\n lineColor: '#277ffa',\r\n lineOpacity: 1,\r\n color: '#fff',\r\n pellucidity: 0.5\r\n // isHidden: false //后期需要在加\r\n }\r\n if(item.config){\r\n cg = {...cg,...item.config};\r\n }\r\n //初始化配置数据\r\n let circleOption = {\r\n strokeColor: cg.lineColor,\r\n strokeOpacity: cg.lineOpacity,\r\n strokeWeight: cg.lineWidth,\r\n strokeStyle: cg.lineType,\r\n fillColor: cg.color,\r\n fillOpacity: cg.pellucidity\r\n },\r\n centerPoint = new google.maps.LatLng({lng: item.longitude,lat: item.latitude});\r\n //创建圆图元实例\r\n let circle = new google.maps.Circle({\r\n ...circleOption,\r\n radius: item.radius,\r\n center: centerPoint\r\n });\r\n //添加圆至地图\r\n circle.setMap(t.state.gis);\r\n //点击事件\r\n let mClick = circle.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(item.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = circle.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(item.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = circle.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(item.id,e);\r\n });\r\n ccsids.push(item.id);\r\n //缓存数据\r\n t.GM.setGraphic(item.id,circle)\r\n .setGraphicParam(item.id,{\r\n attributes: {...item,other: item},\r\n geometryType: 'circle',\r\n geometry: {\r\n type: 'circle',\r\n x: item.longitude,\r\n y: item.latitude,\r\n radius: item.radius\r\n }\r\n }).setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n });\r\n t.state.circleIds = ccsids;\r\n // t.setState({\r\n // circleIds: ccsids\r\n // });\r\n }\r\n //更新圆\r\n updateCircle(mapCircles){\r\n let t = this;\r\n mapCircles.map((item,index)=>{\r\n //判断图元是否存在.\r\n if (t.GM.isRepetition(item.id)) {\r\n //圆 点位数据不符合,直接跳过\r\n if(!item.longitude || !item.latitude){\r\n console.warn(`圆 经纬度 数据错误`);\r\n return false;\r\n }\r\n //获取原有的图元\r\n let gc = t.GM.getGraphic(item.id);\r\n //获取原有的面属性,转换key值\r\n let cg = {\r\n lineType: 'solid',\r\n lineWidth: 5,\r\n lineColor: '#277ffa',\r\n lineOpacity: 1,\r\n color: '#fff',\r\n pellucidity: 0.5\r\n // isHidden: false //后期需要在加\r\n }\r\n if(item.config){\r\n cg = {...cg,...item.config};\r\n }\r\n //初始化配置数据\r\n let circleOption = {\r\n strokeColor: cg.lineColor,\r\n strokeOpacity: cg.lineOpacity,\r\n strokeWeight: cg.lineWidth,\r\n strokeStyle: cg.lineType,\r\n fillColor: cg.color,\r\n fillOpacity: cg.pellucidity\r\n },\r\n centerPoint = new google.maps.LatLng({lng: item.longitude,lat: item.latitude});\r\n //修改中心点\r\n gc.setCenter(centerPoint);\r\n //修改半径\r\n gc.setRadius(item.radius);\r\n //修改圆 参数\r\n gc.setOptions(circleOption);\r\n //缓存图元的数据,便于后期操作\r\n t.GM.setGraphicParam(item.id,{\r\n attributes: {...item,other: item},\r\n geometryType: 'circle',\r\n geometry: {\r\n type: 'circle',\r\n x: item.longitude,\r\n y: item.latitude,\r\n radius: item.radius\r\n }\r\n });\r\n }else{\r\n console.warn(`更新的圆id不存在!`);\r\n return false;\r\n }\r\n });\r\n }\r\n //热力图\r\n heatMapOverlay(d = {}){\r\n let t = this;\r\n let cg = {\r\n radius: 20,\r\n max: 100,\r\n visible: true,\r\n opacity: 0.7\r\n };\r\n if(d.config){\r\n cg = {...cg,...d.config};\r\n }\r\n if(!t.heatmap){\r\n t.heatmap = new google.maps.visualization.HeatmapLayer({\r\n map: t.state.gis\r\n });\r\n }\r\n let option = {\r\n radius: cg.radius,\r\n //百度是1-100,高德是0-1\r\n opacity: cg.visible?cg.opacity:0,\r\n // maxIntensity: cg.max\r\n }\r\n if(cg.gradient){\r\n option.gradient = ['rgba(102,255, 0,0)'];\r\n //将gradient排序,与其他地图的热力图数据一致\r\n let sortArray = [];\r\n for (let i in cg.gradient) {\r\n sortArray.push({key: i,value: cg.gradient[i]});\r\n }\r\n option.gradient = [\r\n ...option.gradient,\r\n ...sortArray.sort((a,b)=>{\r\n return a.key > b.key;\r\n }).map((item)=>{\r\n return item.value;\r\n })\r\n ]\r\n }\r\n t.heatmap.setOptions(option);\r\n t.heatmap.setData(\r\n (d.data || []).map((item,index)=>{\r\n return new google.maps.LatLng({lng: item.lng,lat: item.lat})\r\n })\r\n );\r\n }\r\n //添加海量点\r\n addPointCollection(data = []){\r\n let t = this;\r\n //处理海量点\r\n let panes = t.canvasProjectionOverlay.getPanes(),\r\n ftp = t.canvasProjectionOverlay.getProjection();\r\n if(panes){\r\n if(!t.pointCollectionId){\r\n t.pointCollectionId = `${t.props.mapId}_vtx_gmap_html_pointCollection`;\r\n let divpc = document.createElement('div');\r\n divpc.className = 'vtx_gmap_html_pointCollection_a';\r\n divpc.style.top = `-${t.state.gis.getDiv().offsetHeight/2}px`;\r\n divpc.style.left = `-${t.state.gis.getDiv().offsetWidth/2}px`;\r\n divpc.id = t.pointCollectionId;\r\n panes.markerLayer.appendChild(divpc);\r\n }\r\n data.map((item,index)=>{\r\n let d = item || {};\r\n let points = (d.points || []).map((d,i)=>{\r\n let p = new google.maps.LatLng(d);\r\n p = ftp.fromLatLngToContainerPixel(p);\r\n return [p.x,p.y];\r\n });\r\n let options = {\r\n size: d.size,\r\n shape: d.shape,\r\n color: d.color,\r\n width: t.state.gis.getDiv().offsetWidth,\r\n height: t.state.gis.getDiv().offsetHeight,\r\n mapId: t.props.mapId\r\n };\r\n let VotexpointCollection = new GMapLib.PointCollection(points,options);\r\n t.morepoints.push({\r\n id: d.id,\r\n value: VotexpointCollection\r\n });\r\n VotexpointCollection.draw();\r\n })\r\n }else{\r\n if(t.addpointCollectionTimer){\r\n clearTimeout(t.addpointCollectionTimer);\r\n }\r\n t.addpointCollectionTimer = setTimeout(()=>{\r\n t.addPointCollection(data);\r\n },50);\r\n }\r\n }\r\n //更新海量点\r\n updatePointCollection(data = []){\r\n let t = this;\r\n let ftp = t.canvasProjectionOverlay.getProjection();\r\n if(ftp){\r\n data.map((ds,ind)=>{\r\n t.morepoints.map((item,index)=>{\r\n if(item.id == ds.id){\r\n let points = (ds.points || []).map((d,i)=>{\r\n let p = new google.maps.LatLng(d);\r\n p = ftp.fromLatLngToContainerPixel(p);\r\n return [p.x,p.y];\r\n });\r\n let options = {\r\n size: ds.size,\r\n shape: ds.shape,\r\n color: ds.color,\r\n width: t.state.gis.getDiv().offsetWidth,\r\n height: t.state.gis.getDiv().offsetHeight,\r\n };\r\n item.value.reDraw(points,options);\r\n }\r\n })\r\n })\r\n }else{\r\n if(t.updatePointCollectionTimer){\r\n clearTimeout(t.updatePointCollectionTimer);\r\n }\r\n t.updatePointCollectionTimer = setTimeout(()=>{\r\n t.addPointCollection(data);\r\n },50);\r\n }\r\n }\r\n //删除海量点\r\n clearPointCollection(ids = []){\r\n let t = this;\r\n ids.map((id,ind)=>{\r\n t.morepoints.map(function (item,index) {\r\n if(id == item.id){\r\n item.value.clear();\r\n }\r\n });\r\n });\r\n }\r\n //删除全部海量点\r\n clearAllPointCollection(){\r\n let t = this;\r\n t.morepoints.map(function (item,index) {\r\n item.value.clear();\r\n });\r\n }\r\n //删除图元\r\n removeGraphic(id,type){\r\n let t = this;\r\n let graphic = t.GM.getGraphic(id),\r\n gc_label = t.GM.getGraphic(`${id}_vtxoMap_label`);\r\n //删除点聚合效果\r\n if(t.clusterIdList.indexOf(id) > -1){\r\n t.removeCluster(id);\r\n }\r\n if(graphic){\r\n //清除地图中图元\r\n graphic.setMap(null);\r\n //清除对应id的图元数据缓存\r\n t.GM.removeGraphic(id);\r\n }else{\r\n return false;\r\n }\r\n //删除点位label\r\n if(gc_label){\r\n gc_label.setMap(null);\r\n t.GM.removeGraphic(`${id}_vtxoMap_label`);\r\n }\r\n for(let i = 0 ; i < t.movePoints.length ; i++){\r\n if(t.movePoints[i].id == id){\r\n t.movePoints.splice(i,1);\r\n continue;\r\n }\r\n }\r\n let ids = [];\r\n switch(type){\r\n case 'point':\r\n ids = t.state.pointIds;\r\n break;\r\n case 'line':\r\n ids = t.state.lineIds;\r\n break;\r\n case 'polygon':\r\n ids = t.state.polygonIds;\r\n break;\r\n case 'circle':\r\n ids = t.state.circleIds;\r\n break;\r\n case 'draw':\r\n if(t.state.drawIds.point.indexOf(id) > -1){\r\n t.state.drawIds.point.splice(t.state.drawIds.point.indexOf(id),1);\r\n }\r\n if(t.state.drawIds.polyline.indexOf(id) > -1){\r\n t.state.drawIds.polyline.splice(t.state.drawIds.polyline.indexOf(id),1);\r\n }\r\n if(t.state.drawIds.polygon.indexOf(id) > -1){\r\n t.state.drawIds.polygon.splice(t.state.drawIds.polygon.indexOf(id),1);\r\n }\r\n if(t.state.drawIds.circle.indexOf(id) > -1){\r\n t.state.drawIds.circle.splice(t.state.drawIds.circle.indexOf(id),1);\r\n }\r\n if(t.state.drawIds.rectangle.indexOf(id) > -1){\r\n t.state.drawIds.rectangle.splice(t.state.drawIds.rectangle.indexOf(id),1);\r\n }\r\n break;\r\n default:\r\n if(t.state.pointIds.indexOf(id) > -1){\r\n t.state.pointIds.splice(t.state.pointIds.indexOf(id),1);\r\n }\r\n if(t.state.lineIds.indexOf(id) > -1){\r\n t.state.lineIds.splice(t.state.lineIds.indexOf(id),1);\r\n }\r\n if(t.state.polygonIds.indexOf(id) > -1){\r\n t.state.polygonIds.splice(t.state.polygonIds.indexOf(id),1);\r\n }\r\n if(t.state.circleIds.indexOf(id) > -1){\r\n t.state.circleIds.splice(t.state.circleIds.indexOf(id),1);\r\n }\r\n break;\r\n }\r\n if(id == t.state.editId){\r\n t.state.editId = '';\r\n }\r\n if(ids.indexOf(id) != -1){\r\n ids.splice(ids.indexOf(id),1);\r\n }\r\n }\r\n /*根据图元id,使图元变成可编辑状态*/\r\n doEdit (id){\r\n let t = this;\r\n //获取编辑点的图元和参数\r\n let graphic = t.GM.getGraphic(id),\r\n gLabel = t.GM.getGraphic(`${id}_vtxoMap_label`),\r\n gtp = t.GM.getGraphicParam(id);\r\n if(!graphic)return false;\r\n //关闭先前编辑的图元\r\n if(!!t.state.editId){\r\n t.endEdit();\r\n }\r\n if(!t.editGraphicChange){\r\n //编辑变动后\r\n t.editGraphicChange = (e)=>{\r\n let id = t.state.editId,\r\n param = t.getGraphic(id),\r\n obj = {\r\n param,e,id,\r\n geometry: param.geometry\r\n };\r\n if(param.geometry.type == 'polygon'){\r\n if(google.maps.geometry && google.maps.geometry.spherical){\r\n obj.area = google.maps.geometry.spherical.computeArea(param.mapLayer.getPath().getArray());\r\n }else{\r\n obj.area = 0;\r\n }\r\n }\r\n if(param.geometry.type == 'polyline'){\r\n obj.distance = t.calculateDistance(param.geometry.paths);\r\n }\r\n if(param.geometry.type == 'circle'){\r\n obj.area = Math.pow(param.geometry.radius,2)*Math.PI;\r\n if(t.editTimeout){\r\n clearTimeout(t.editTimeout);\r\n }\r\n t.editTimeout = setTimeout(()=>{\r\n t.setState({editGraphic:obj},()=>{\r\n t.props.editGraphicChange(obj);\r\n });\r\n },300);\r\n }else{\r\n t.setState({editGraphic:obj},()=>{\r\n t.props.editGraphicChange(obj);\r\n });\r\n }\r\n }\r\n }\r\n switch(gtp.geometryType){\r\n case 'point':\r\n graphic.setDraggable(true);\r\n t.editEvent['dragend'] = graphic.addListener(\"dragend\",t.editGraphicChange);\r\n //判断是否是 markerContent 再判断是否有label\r\n if(!gtp.attributes.markerContent && gLabel){\r\n //label事件对象 便于删除\r\n t.editPointLabel = graphic.addListener(\"drag\",(event)=>{\r\n gLabel.setPosition(event.latLng);\r\n });\r\n }\r\n break;\r\n case 'polyline':\r\n case 'polygon':\r\n case 'rectangle':\r\n graphic.setEditable(true);\r\n t.editEvent['mouseup'] = graphic.addListener(\"mouseup\",t.editGraphicChange);\r\n break;\r\n case 'circle':\r\n graphic.setEditable(true);\r\n t.editEvent['center_changed'] = graphic.addListener(\"center_changed\",t.editGraphicChange);\r\n t.editEvent['radius_changed'] = graphic.addListener(\"radius_changed\",t.editGraphicChange);\r\n break;\r\n }\r\n t.setState({editId:id});\r\n }\r\n //关闭编辑\r\n endEdit (){\r\n let t = this;\r\n //获取编辑点的图元和参数\r\n let graphic = t.GM.getGraphic(t.state.editId);\r\n let gtp = t.GM.getGraphicParam(t.state.editId);\r\n if(!graphic)return false;\r\n switch(gtp.geometryType){\r\n case 'point':\r\n graphic.setDraggable(false);\r\n if(graphic.removeListener){\r\n graphic.removeListener(\"dragend\",t.editGraphicChange);\r\n }else{\r\n for(let i in t.editEvent){\r\n if(t.editEvent[i]){\r\n t.editEvent[i].remove();\r\n }\r\n }\r\n if(t.editPointLabel){\r\n t.editPointLabel.remove();\r\n t.editPointLabel = null;\r\n }\r\n }\r\n break;\r\n case 'polyline':\r\n case 'polygon':\r\n case 'rectangle':\r\n case 'circle':\r\n graphic.setEditable(false);\r\n for(let i in t.editEvent){\r\n if(t.editEvent[i]){\r\n t.editEvent[i].remove();\r\n }\r\n }\r\n break;\r\n }\r\n //事件缓存制空,避免异常\r\n t.editEvent = {};\r\n let editGraphic = t.state.editGraphic;\r\n if(editGraphic){\r\n t.setState({\r\n editId: '',\r\n editGraphic: ''\r\n },()=>{\r\n t.props.editGraphicChange(editGraphic);\r\n })\r\n }\r\n }\r\n //绘制图元\r\n draw(obj){\r\n let t = this,drawParam = {};\r\n //先关闭(防止连点)\r\n t._drawmanager.setDrawingMode(null);\r\n //初始化参数\r\n drawParam.geometryType = obj.geometryType || 'point';\r\n drawParam.parameter = obj.parameter?{...obj.parameter}:{};\r\n drawParam.data = obj.data?{...obj.data}:{};\r\n drawParam.data.id = (obj.data || {}).id || `draw${new Date().getTime()}`;\r\n //判断id是否存在\r\n let len = t.state.drawIds[drawParam.geometryType].indexOf(drawParam.data.id);\r\n if(len > -1){\r\n //如果id存在 删除存在的图元,清除drawId中的id数据\r\n t.removeGraphic(drawParam.data.id);\r\n t.state.drawIds[drawParam.geometryType].splice(len,1);\r\n }\r\n let param = {};\r\n let paramgcr = {};\r\n if(drawParam.geometryType == 'polygon' || drawParam.geometryType == 'circle' || drawParam.geometryType == 'rectangle'){\r\n paramgcr.fillColor = drawParam.parameter.color;\r\n paramgcr.strokeColor = drawParam.parameter.lineColor;\r\n paramgcr.strokeOpacity = drawParam.parameter.lineOpacity;\r\n paramgcr.strokeWeight = drawParam.parameter.lineWidth;\r\n paramgcr.fillOpacity = drawParam.parameter.pellucidity;\r\n paramgcr.strokeStyle = drawParam.parameter.lineType;\r\n paramgcr.extData = {\r\n id: drawParam.data.id,\r\n attributes: {\r\n id: drawParam.data.id,\r\n config: {\r\n color: drawParam.parameter.color,\r\n lineColor: drawParam.parameter.lineColor,\r\n lineOpacity: drawParam.parameter.lineOpacity,\r\n pellucidity: drawParam.parameter.pellucidity,\r\n lineWidth: drawParam.parameter.lineWidth\r\n }\r\n },\r\n type: drawParam.geometryType\r\n };\r\n }\r\n switch(drawParam.geometryType){\r\n case 'point':\r\n let icon = {\r\n anchor: {x: -drawParam.parameter.markerContentX || 15,y: -drawParam.parameter.markerContentY || 30},\r\n size: new t.omap.Size(drawParam.parameter.width || 30,drawParam.parameter.height || 30),\r\n scaledSize: new t.omap.Size(drawParam.parameter.width || 30,drawParam.parameter.height || 30),\r\n url: drawParam.parameter.url || `${configUrl.mapServerURL}/images/defaultMarker.png`\r\n };\r\n t._drawmanager.setOptions({\r\n drawingControl: false,\r\n markerOptions: {\r\n icon\r\n }\r\n });\r\n t._drawmanager.setDrawingMode('marker');\r\n t._drawmanagerEvent = t._drawmanager.addListener('markercomplete',(e)=>{\r\n //清楚事件监听\r\n t._drawmanagerEvent.remove();\r\n //关闭绘制功能\r\n t._drawmanager.setDrawingMode(null);\r\n t.GM.setGraphic(drawParam.data.id,e);\r\n let backobj = {\r\n id: drawParam.data.id,\r\n attributes: {\r\n id: drawParam.data.id,\r\n url: icon.url,\r\n config: {\r\n width: icon.size.width,\r\n height: icon.size.height\r\n }\r\n },\r\n geometry: {\r\n type: 'point',\r\n x: e.getPosition().lng(),\r\n y: e.getPosition().lat()\r\n },\r\n geometryType: 'point',\r\n mapLayer: e\r\n }\r\n //点击事件\r\n let mClick = e.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(drawParam.data.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = e.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(drawParam.data.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = e.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(drawParam.data.id,e);\r\n });\r\n t.GM.setGraphicParam(drawParam.data.id,backobj)\r\n .setGraphicParam(`${drawParam.data.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n if('drawEnd' in t.props){\r\n t.props.drawEnd(backobj);\r\n }\r\n })\r\n break;\r\n case 'polyline':\r\n param.strokeColor = drawParam.parameter.color;\r\n param.strokeOpacity = drawParam.parameter.pellucidity;\r\n param.strokeWeight = drawParam.parameter.lineWidth;\r\n t._drawmanager.setOptions({\r\n drawingControl: false,\r\n polylineOptions: param\r\n });\r\n t._drawmanager.setDrawingMode('polyline');\r\n t._drawmanagerEvent = t._drawmanager.addListener('polylinecomplete',(e)=>{\r\n //清楚事件监听\r\n t._drawmanagerEvent.remove();\r\n //关闭绘制功能\r\n t._drawmanager.setDrawingMode(null);\r\n t.GM.setGraphic(drawParam.data.id,e);\r\n let paths = [];\r\n let lnglatAry = (e.getPath().getArray() || []).map((item,index)=>{\r\n paths.push({lng: item.lng(),lat: item.lat()})\r\n return {lngX: item.lng(),latX: item.lat()};\r\n });\r\n let backobj = {\r\n geometryType: 'polyline',\r\n distance: t.calculateGraphicDistance(e.getPath().getArray()),\r\n id: drawParam.data.id,\r\n attributes: {\r\n id: drawParam.data.id,\r\n config: {\r\n color: param.strokeColor,\r\n pellucidity: param.strokeOpacity,\r\n lineWidth: param.strokeWeight\r\n }\r\n },\r\n mapLayer: e,\r\n geometry: {\r\n type: 'polyline',\r\n lnglatAry: lnglatAry,\r\n paths: getMaxMin(paths).path\r\n },\r\n lnglatAry: lnglatAry \r\n }\r\n //点击事件\r\n let mClick = e.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(drawParam.data.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = e.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(drawParam.data.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = e.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(drawParam.data.id,e);\r\n });\r\n t.GM.setGraphicParam(drawParam.data.id,backobj)\r\n .setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n if('drawEnd' in t.props){\r\n t.props.drawEnd(backobj);\r\n }\r\n })\r\n break;\r\n case 'polygon':\r\n t._drawmanager.setOptions({\r\n drawingControl: false,\r\n polygonOptions: paramgcr\r\n });\r\n t._drawmanager.setDrawingMode('polygon');\r\n t._drawmanagerEvent = t._drawmanager.addListener('polygoncomplete',(e)=>{\r\n //清楚事件监听\r\n t._drawmanagerEvent.remove();\r\n //关闭绘制功能\r\n t._drawmanager.setDrawingMode(null);\r\n t.GM.setGraphic(drawParam.data.id,e);\r\n let paths = [],area = t.calculateArea(drawParam.data.id);\r\n let lnglatAry = (e.getPath().getArray() || []).map((item,index)=>{\r\n paths.push({lng: item.lng(),lat: item.lat()})\r\n return {lngX: item.lng(),latX: item.lat()};\r\n });\r\n let backobj = {\r\n geometryType: 'polygon',\r\n id: drawParam.data.id,\r\n attributes: {\r\n id: drawParam.data.id,\r\n config: {\r\n color: paramgcr.fillColor,\r\n lineColor: paramgcr.strokeColor,\r\n lineOpacity: paramgcr.strokeOpacity,\r\n pellucidity: paramgcr.fillOpacity,\r\n lineWidth: paramgcr.strokeWeight\r\n }\r\n },\r\n mapLayer: e,\r\n geometry: {\r\n type: 'polygon',\r\n lnglatAry: lnglatAry,\r\n rings: getMaxMin(paths).path,\r\n _extent: getMaxMin(paths)._extent,\r\n area: area\r\n },\r\n lnglatAry: lnglatAry,\r\n area: area\r\n };\r\n //点击事件\r\n let mClick = e.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(drawParam.data.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = e.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(drawParam.data.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = e.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(drawParam.data.id,e);\r\n });\r\n t.GM.setGraphicParam(drawParam.data.id,backobj)\r\n .setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n if('drawEnd' in t.props){\r\n t.props.drawEnd(backobj);\r\n }\r\n });\r\n break;\r\n case 'circle':\r\n t._drawmanager.setOptions({\r\n drawingControl: false,\r\n circleOptions: paramgcr\r\n });\r\n t._drawmanager.setDrawingMode('circle');\r\n t._drawmanagerEvent = t._drawmanager.addListener('circlecomplete',(e)=>{\r\n //清楚事件监听\r\n t._drawmanagerEvent.remove();\r\n //关闭绘制功能\r\n t._drawmanager.setDrawingMode(null);\r\n t.GM.setGraphic(drawParam.data.id,e);\r\n let area = Math.PI * Math.pow(e.getRadius(),2);\r\n let backobj = {\r\n geometryType: 'circle',\r\n id: drawParam.data.id,\r\n attributes: {\r\n id: drawParam.data.id,\r\n config: { \r\n color: paramgcr.fillColor,\r\n lineColor: paramgcr.strokeColor,\r\n lineOpacity: paramgcr.strokeOpacity,\r\n pellucidity: paramgcr.fillOpacity,\r\n lineWidth: paramgcr.strokeWeight\r\n }\r\n },\r\n mapLayer: e,\r\n geometry: {\r\n type: 'circle',\r\n x: e.getCenter().lng(),\r\n y: e.getCenter().lat(),\r\n radius: e.getRadius(),\r\n area: area\r\n },\r\n area: area\r\n };\r\n //点击事件\r\n let mClick = e.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(drawParam.data.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = e.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(drawParam.data.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = e.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(drawParam.data.id,e);\r\n });\r\n t.GM.setGraphicParam(drawParam.data.id,backobj)\r\n .setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n if('drawEnd' in t.props){\r\n t.props.drawEnd(backobj);\r\n }\r\n });\r\n break;\r\n case 'rectangle':\r\n t._drawmanager.setOptions({\r\n drawingControl: false,\r\n rectangleOptions: paramgcr\r\n });\r\n t._drawmanager.setDrawingMode('rectangle');\r\n t._drawmanagerEvent = t._drawmanager.addListener('rectanglecomplete',(e)=>{\r\n //清楚事件监听\r\n t._drawmanagerEvent.remove();\r\n //关闭绘制功能\r\n t._drawmanager.setDrawingMode(null);\r\n t.GM.setGraphic(drawParam.data.id,e);\r\n let lnglatJson = e.getBounds().toJSON();\r\n let paths = [{\r\n lng: lnglatJson.west,\r\n lat: lnglatJson.south\r\n },{\r\n lng: lnglatJson.east,\r\n lat: lnglatJson.south\r\n },{\r\n lng: lnglatJson.east,\r\n lat: lnglatJson.north\r\n },{\r\n lng: lnglatJson.west,\r\n lat: lnglatJson.north\r\n }];\r\n let lnglatAry = (paths || []).map((item,index)=>{\r\n return {lngX: item.lng,latX: item.lat};\r\n });\r\n let area = t.calculatePointsDistance([lnglatJson.west,lnglatJson.south],[lnglatJson.east,lnglatJson.south])*\r\n t.calculatePointsDistance([lnglatJson.east,lnglatJson.south],[lnglatJson.east,lnglatJson.north]);\r\n\r\n let backobj = {\r\n geometryType: 'polygon',\r\n id: drawParam.data.id,\r\n attributes: {\r\n id: drawParam.data.id,\r\n config: {\r\n color: paramgcr.fillColor,\r\n lineColor: paramgcr.strokeColor,\r\n lineOpacity: paramgcr.strokeOpacity,\r\n pellucidity: paramgcr.fillOpacity,\r\n lineWidth: paramgcr.strokeWeight\r\n }\r\n },\r\n mapLayer: e,\r\n geometry: {\r\n type: 'polygon',\r\n lnglatAry: lnglatAry,\r\n rings: getMaxMin(paths).path,\r\n _extent: getMaxMin(paths)._extent,\r\n area: area\r\n },\r\n lnglatAry: lnglatAry,\r\n area: area\r\n };\r\n //点击事件\r\n let mClick = e.addListener('click',(e)=>{\r\n //避免鼠标在图元上 测距工具不起作用\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e)\r\n }else{\r\n t.clickGraphic(drawParam.data.id,e);\r\n }\r\n });\r\n //鼠标移入事件\r\n let mMouseover = e.addListener('mouseover',(e)=>{\r\n t.mouseOverGraphic(drawParam.data.id,e);\r\n });\r\n //鼠标移出事件\r\n let mMouseout = e.addListener('mouseout',(e)=>{\r\n t.mouseOutGraphic(drawParam.data.id,e);\r\n });\r\n t.GM.setGraphicParam(drawParam.data.id,backobj)\r\n .setGraphicParam(`${item.id}_omap_event`,{\r\n click: mClick,\r\n mouseover: mMouseover,\r\n mouseout: mMouseout\r\n });\r\n if('drawEnd' in t.props){\r\n t.props.drawEnd(backobj);\r\n }\r\n });\r\n break;\r\n }\r\n //保存绘制图元的id便于后期比对\r\n t.state.drawIds[drawParam.geometryType].push(drawParam.data.id);\r\n }\r\n //关闭绘制图元\r\n closeDraw(){\r\n let t = this;\r\n t._drawmanager.setDrawingMode(null);\r\n }\r\n /*\r\n 事件处理\r\n */\r\n //点击图元事件\r\n clickGraphic (id,e) {\r\n let t = this;\r\n //判断是否点击的测距关闭点位\r\n if(id && id.indexOf('vtx_g_rang_end') > -1){\r\n let index = t.GM.getGraphicParam(id).attributes.index;\r\n let ls = t.rangingTools[index].line,\r\n ps = t.rangingTools[index].points;\r\n //删除测距线\r\n t.removeGraphic(ls.id,'line');\r\n //删除关闭点\r\n t.removeGraphic(id,'point');\r\n //删除中间点\r\n for(let i = 0 ; i < ps.length ; i++){\r\n t.removeGraphic(ps[i].id,'point');\r\n }\r\n //清除测距数据缓存\r\n delete t.rangingTools[index];\r\n }else{\r\n if(id.indexOf('vtx_g_rang_') > -1){\r\n return false;\r\n }\r\n //编辑中的图元关闭其他事件返回\r\n if(t.state.editId == id)return false;\r\n if(typeof(t.props.clickGraphic) ===\"function\"){\r\n let param = t.getGraphic(id);\r\n let obj = {\r\n param,\r\n type: param.geometry.type,//图元类型\r\n attributes: {...param.attributes.other,...{config:param.attributes.config}},//添加时图元信息\r\n top: e.va.y - t.mapTop,//当前点所在的位置(屏幕)\r\n left: e.va.x - t.mapLeft,\r\n e: e\r\n }\r\n t.props.clickGraphic(obj);\r\n }\r\n }\r\n }\r\n //图元鼠标悬浮事件\r\n mouseOverGraphic(id,e){\r\n let t = this;\r\n //编辑中的图元关闭其他事件返回\r\n if(t.state.editId == id)return false;\r\n if(typeof(t.props.mouseOverGraphic) === 'function'){\r\n if(id.indexOf('vtx_g_rang_') > -1){\r\n return false;\r\n }\r\n let obj = {\r\n e,id,\r\n param: t.getGraphic(id),\r\n top: e.va.y - t.mapTop,//当前点所在的位置(屏幕)\r\n left: e.va.x - t.mapLeft,\r\n }\r\n t.props.mouseOverGraphic(obj);\r\n }\r\n }\r\n //图元鼠标移开事件\r\n mouseOutGraphic(id,e){\r\n let t = this;\r\n //编辑中的图元关闭其他事件返回\r\n if(t.state.editId == id)return false;\r\n if(typeof(t.props.mouseOutGraphic) ===\"function\"){\r\n if(id.indexOf('vtx_g_rang_') > -1){\r\n return false;\r\n }\r\n let obj = {\r\n e,id,\r\n param: t.getGraphic(id),\r\n top: e.va.y - t.mapTop,//当前点所在的位置(屏幕)\r\n left: e.va.x - t.mapLeft,\r\n }\r\n t.props.mouseOutGraphic(obj);\r\n }\r\n }\r\n /*\r\n 地图服务功能\r\n */\r\n //开启路况\r\n openTrafficInfo(){\r\n let t =this;\r\n if(!t.trafficLayer){\r\n t.trafficLayer = new google.maps.TrafficLayer();\r\n }\r\n t.trafficLayer.setMap(t.state.gis);\r\n }\r\n //关闭路况\r\n hideTrafficInfo(){\r\n let t =this;\r\n if(t.trafficLayer){\r\n t.trafficLayer.setMap(null);\r\n }\r\n }\r\n //测距功能\r\n vtxRangingTool(mapRangingTool){\r\n let t =this;\r\n let {lineIds,polygonIds,circleIds} = t.state;\r\n let gids = [...lineIds,...polygonIds,...circleIds];\r\n t.state.gis.disableDoubleClickZoom = true;\r\n t.state.gis.draggableCursor = 'crosshair';\r\n //开启测距状态\r\n if(!t.rangingTool.isRanging){\r\n t.rangingTool.isRanging = true;\r\n }\r\n //初始测距回调\r\n if(!t.rangingTool.mapRangingTool){\r\n t.rangingTool.mapRangingTool = mapRangingTool;\r\n }\r\n if(!t.rangingToolFun){\r\n /*测距功能*/\r\n t.rangingToolFun = (e,status)=>{\r\n let fun = ()=>{\r\n t.rangingTool.isDbclick = false;\r\n if(t.rangingTool.isRanging){\r\n //测距开始\r\n //点击位置\r\n let ftp = t.canvasProjectionOverlay.getProjection(),\r\n lnglat = ftp.fromContainerPixelToLatLng(new google.maps.Point(e.va.x - t.mapLeft,e.va.y - t.mapTop)),\r\n lnlt = [lnglat.lng(),lnglat.lat()];\r\n //2个点以上 计算长度\r\n if(t.rangingTool.points.length > 0){\r\n t.rangingTool.distance += t.calculatePointsDistance(lnlt,\r\n [t.rangingTool.points[t.rangingTool.points.length-1].longitude,\r\n t.rangingTool.points[t.rangingTool.points.length-1].latitude]\r\n );\r\n }else{\r\n t.rangingTool.line.paths = [];\r\n }\r\n t.rangingTool.line.paths.push([...lnlt]);\r\n //处理距离展示\r\n let distext = t.rangingTool.distance > 0\r\n ?(t.rangingTool.distance > 1000\r\n ?`总长:${Math.round(t.rangingTool.distance/10)/100}公里`:`总长:${t.rangingTool.distance}米`)\r\n :'起点';\r\n //加点\r\n let point = {\r\n id: t.rangingTool.points.length + 'vtx_g_rang_p'+Math.random(),\r\n longitude: lnlt[0],\r\n latitude: lnlt[1],\r\n markerContent: `\r\n <div style='z-index:1; height: 0px;'>\r\n <div class='vtx-g-rangingPoint'></div>\r\n <div class='vtx-g-rangingDistance'>${distext}</div>\r\n </div>\r\n `,\r\n config: {\r\n markerContentX: -5.5,\r\n markerContentY: -12.5,\r\n }\r\n };\r\n //用addpoint方法加点\r\n t.addPoint([point]);\r\n //缓存点信息\r\n t.rangingTool.points.push(point);\r\n if(t.rangingTool.line.paths.length == 2){\r\n //加线\r\n t.rangingTool.line = {\r\n id: 'vtx_g_rang_line'+Math.random(),\r\n paths: [...t.rangingTool.line.paths],\r\n config:{\r\n color: '#108ee9',\r\n lineWidth: 2,\r\n lineType: 'solid'\r\n }\r\n }\r\n t.addLine([t.rangingTool.line]);\r\n }else if(t.rangingTool.line.paths.length > 2){\r\n t.updateLine([{\r\n ...t.rangingTool.line,\r\n paths: [...t.rangingTool.line.paths]\r\n }]);\r\n }\r\n //双击 测距结束\r\n if(status == 'dbl'){\r\n let rangkey = new Date().getTime()+Math.random();\r\n //加结束点\r\n let end = {\r\n id: 'vtx_g_rang_end'+Math.random(),\r\n longitude: lnlt[0],\r\n latitude: lnlt[1],\r\n markerContent: `\r\n <div>\r\n <div class='vtx-g-rang-exit'>x</div>\r\n </div>\r\n `,\r\n config: {\r\n width:13,\r\n height:13,\r\n markerContentX: -20,\r\n markerContentY: -20,\r\n },\r\n index: rangkey\r\n };\r\n //用addpoint方法加点\r\n t.addPoint([end]);\r\n //删除提示框 \r\n t.removeGraphic('vtx_g_rang_showRangTool','point');\r\n t.removeGraphic('vtx_g_rang_showRangTool_line','line');\r\n //缓存当前这一条测距数据\r\n t.rangingTools[rangkey] = {...t.rangingTool};\r\n //回调测距参数\r\n if(t.rangingTool.mapRangingTool){\r\n t.rangingTool.mapRangingTool({\r\n distance: t.rangingTool.distance,\r\n lnglats: t.rangingTool.line.paths\r\n })\r\n }\r\n }\r\n }\r\n }\r\n if(status !== 'dbl'){\r\n //100毫秒内点击2次 则结束\r\n if(!t.rangingTool.isDbclick){\r\n t.rangingTool.isDbclick = true;\r\n }else{\r\n if(t.rangingTool.dbclickTimer){\r\n clearTimeout(t.rangingTool.dbclickTimer);\r\n }\r\n t.rangingTool.isDbclick = false;\r\n t.rangingToolEndFun(e);\r\n }\r\n t.rangingTool.dbclickTimer = setTimeout(()=>{\r\n fun();\r\n },200)\r\n }else{\r\n fun();\r\n }\r\n }\r\n }\r\n if(!t.rangingToolMoveFun){\r\n t.rangingToolMoveFun = (e)=>{\r\n //获取测距提示点位\r\n let rp = {...t.GM.getGraphicParam('vtx_g_rang_showRangTool').attributes};\r\n //删除多余数据,避免other层级太多\r\n delete rp.other;\r\n let rcontent = rp.markerContent;\r\n if(t.rangingTool.points.length > 0){\r\n let distance = t.calculatePointsDistance(\r\n [e.latLng.lng(),e.latLng.lat()],\r\n [t.rangingTool.points[t.rangingTool.points.length-1].longitude,\r\n t.rangingTool.points[t.rangingTool.points.length-1].latitude],\r\n t.state.gis,\r\n t.grwkid\r\n );\r\n // 实时计算距离\r\n distance += t.rangingTool.distance;\r\n let distext = distance > 1000\r\n ?`总长:${Math.round(distance/10)/100}公里`:`总长:${distance}米`;\r\n rcontent = `\r\n <div class='vtx-g-rang-showRangTool'>\r\n <div>${distext}</div>\r\n <div>单击确定地点,双击结束</div>\r\n </div>\r\n `;\r\n //测距移动的线\r\n let sl = {\r\n id: 'vtx_g_rang_showRangTool_line',\r\n paths: [\r\n [ t.rangingTool.points[t.rangingTool.points.length-1].longitude,\r\n t.rangingTool.points[t.rangingTool.points.length-1].latitude\r\n ],\r\n [e.latLng.lng(),e.latLng.lat()]\r\n ],\r\n config: {\r\n color: '#108ee9',\r\n lineWidth: 2,\r\n lineType: 'dashed',\r\n pellucidity: 0.5\r\n }\r\n };\r\n if(!t.GM.getGraphic('vtx_g_rang_showRangTool_line')){\r\n t.addLine([sl]);\r\n t.GM.getGraphic('vtx_g_rang_showRangTool_line').addListener('dblclick',(e)=>{\r\n t.rangingToolEndFun(e)\r\n })\r\n }else{\r\n t.updateLine([sl]);\r\n }\r\n }\r\n rp = {\r\n ...rp,\r\n longitude: e.latLng.lng(),\r\n latitude: e.latLng.lat(),\r\n markerContent: rcontent\r\n }\r\n t.updatePoint([rp],'nodeg');\r\n }\r\n }\r\n if(!t.rangingToolEndFun){\r\n t.rangingToolEndFun = (e)=>{\r\n t.state.gis.disableDoubleClickZoom = false;\r\n //测距完结\r\n if(t.rangingTool.isRanging){\r\n if(t.rangingTool.points.length > 0){\r\n //处理点击和双击事件逻辑\r\n t.rangingToolFun(e,'dbl');\r\n //回调测距参数\r\n if(t.rangingTool.mapRangingTool){\r\n t.rangingTool.mapRangingTool({\r\n distance: t.rangingTool.distance,\r\n lnglats: t.rangingTool.line.paths\r\n });\r\n }\r\n }else{\r\n //删除提示框 \r\n t.removeGraphic('vtx_g_rang_showRangTool','point');\r\n }\r\n //关闭监听事件\r\n for(let i in t.rangingTool.eventList){\r\n if(t.rangingTool.eventList[i]){\r\n t.rangingTool.eventList[i].remove();\r\n }\r\n }\r\n t.rangingTool = {\r\n ...t.rangingTool,\r\n isRanging: false,//是否开启状态\r\n line: {},//线缓存\r\n points: [],//点\r\n distance: 0,//测距长度\r\n isDbclick: false,\r\n dbclickTimer: null\r\n }\r\n t.rangingToolFun = null;\r\n t.rangingToolMoveFun = null;\r\n t.state.gis.draggableCursor = 'url(\"http://maps.gstatic.cn/mapfiles/openhand_8_8.cur\"), default';\r\n }\r\n }\r\n }\r\n //避免鼠标在图元上 测距工具不起作用\r\n gids.forEach((item)=>{\r\n t.rangingTool.eventList[item] = t.GM.getGraphic(item).addListener('mousemove',(e)=>{\r\n if(t.rangingTool.isRanging && t.rangingToolMoveFun){\r\n t.rangingToolMoveFun(e);\r\n }\r\n })\r\n })\r\n //地图鼠标移入事件\r\n t.rangingTool.eventList['mouseover'] = t.state.gis.addListener('mouseover',(e)=>{\r\n //鼠标移出地图时,删除测距显示点\r\n if(t.rangingTool.isRanging){\r\n let rp = {\r\n id: 'vtx_g_rang_showRangTool',\r\n longitude: e.latLng.lng(),\r\n latitude: e.latLng.lat(),\r\n markerContent: `\r\n <div class='vtx-g-rang-showRangTool'>单击确定起点</div>\r\n `,\r\n config: {\r\n markerContentX: 20,\r\n markerContentY: 20\r\n }\r\n }\r\n t.addPoint([rp],'nodeg');\r\n }\r\n });\r\n //地图鼠标移出事件\r\n t.rangingTool.eventList['mouseout'] = t.state.gis.addListener('mouseout',(e)=>{\r\n //鼠标移出地图时,删除测距显示点\r\n if(t.rangingTool.isRanging){\r\n t.removeGraphic('vtx_g_rang_showRangTool','point');\r\n }\r\n });\r\n //地图鼠标移动事件\r\n t.rangingTool.eventList['mousemove'] = t.state.gis.addListener('mousemove',(e)=>{\r\n //鼠标移动地图时,删除测距显示点\r\n if(t.rangingTool.isRanging && t.rangingToolMoveFun){\r\n t.rangingToolMoveFun(e);\r\n }\r\n });\r\n //双击事件\r\n t.rangingTool.eventList['dblclick'] = t.state.gis.addListener('dblclick',(e)=>{\r\n t.rangingToolEndFun(e);\r\n });\r\n }\r\n //聚合地图图元(arg为空时聚合全部点)\r\n cluster (arg) {\r\n let t = this;\r\n let ary = t.clusterToolFunction(arg);\r\n t._cluster.addMarkers(ary);\r\n }\r\n //删除点聚合效果\r\n removeCluster(arg){\r\n let t = this;\r\n let ary = t.clusterToolFunction(arg);\r\n if(ary.length > 0){\r\n t._cluster.removeMarkers(ary);\r\n }\r\n }\r\n //清空聚合效果\r\n clearClusters(){\r\n let t = this;\r\n t._cluster.clearMarkers();\r\n }\r\n //聚合功能公共方法(获取图元集合)\r\n clusterToolFunction(arg){\r\n let t = this;\r\n let ary = [];\r\n if(!arg){\r\n let {pointIds} = t.state;\r\n ary = pointIds.filter((item,index)=>{\r\n return item.indexOf(vtx_g_rang) == -1;\r\n });\r\n }else{\r\n if(Object.prototype.toString.apply(arg) === '[object Array]'){\r\n ary = arg;\r\n }else if(typeof arg === 'string'){\r\n ary = arg.split(',');\r\n }\r\n }\r\n t.clusterIdList = ary;\r\n //过滤moveTo的点位\r\n //缓存所有聚合的点位\r\n let allps = [];\r\n for(let i = 0 ; i < ary.length ; i++){\r\n let gc = t.GM.getGraphic(ary[i]);\r\n allps.push(gc);\r\n //加入label图元\r\n if(gc.ishaveLabel){\r\n allps.push(t.GM.getGraphic(`${ary[i]}_vtxoMap_label`));\r\n }\r\n }\r\n return allps;\r\n }\r\n /*地图事件处理*/\r\n //地图点击事件\r\n clickMap(){\r\n let t =this;\r\n if(typeof(t.props.clickMap) ===\"function\"){\r\n t.state.gis.addListener('click',(e)=>{\r\n //测距点击事件\r\n if(t.rangingTool.isRanging){\r\n t.rangingToolFun(e);\r\n }else{\r\n let obj = t.getMapExtent();\r\n obj.e = e;\r\n obj.clickLngLat = e.point;\r\n obj.pixel = {\r\n x: e.va.x - t.mapLeft,\r\n y: e.va.y - t.mapTop\r\n };\r\n t.props.clickMap(obj);\r\n }\r\n });\r\n }\r\n }\r\n //地图拖动之前事件\r\n dragMapStart(){\r\n let t = this;\r\n if(typeof(t.props.dragMapStart) === 'function'){\r\n t.state.gis.addListener('dragstart',(e)=>{\r\n let obj = t.getMapExtent();\r\n obj.e = e;\r\n t.props.dragMapStart(obj);\r\n })\r\n }\r\n }\r\n //地图拖动结束后事件\r\n dragMapEnd(){\r\n let t = this;\r\n if(typeof(t.props.dragMapEnd) === 'function'){\r\n t.state.gis.addListener('dragend',(e)=>{\r\n let obj = t.getMapExtent();\r\n obj.e = e;\r\n t.props.dragMapEnd(obj);\r\n })\r\n }\r\n }\r\n //地图移动之前事件\r\n moveStart(){\r\n let t = this;\r\n if(typeof(t.props.moveStart) === 'function'){\r\n t.state.gis.addListener('bounds_changed',(e)=>{\r\n if(t.pointCollectionId){\r\n $(`#${t.pointCollectionId}`).css({visibility: 'hidden'});\r\n }\r\n //区别是否在移动状态\r\n if(!t.isZoomming && !t.isMoving){\r\n if(t.oldZoomLevel == t.state.gis.getZoom()){\r\n t.isMoving = true;\r\n let obj = t.getMapExtent();\r\n obj.e = e;\r\n t.props.moveStart(obj);\r\n }\r\n }\r\n })\r\n }\r\n }\r\n //google地图没有move事件和zoomEnd事件,通过模拟实现\r\n moveEndAndZoomEnd(){\r\n let t = this;\r\n if(typeof(t.props.moveEnd) === 'function' || \r\n typeof(t.props.zoomEnd) === 'function' ||\r\n typeof(t.props.moveStart) === 'function'||\r\n typeof(t.props.zoomStart) === 'function'){\r\n t.state.gis.addListener('idle',(e)=>{\r\n if(t.pointCollectionId){\r\n $(`#${t.pointCollectionId}`).css({visibility: 'inherit'});\r\n }\r\n let obj = t.getMapExtent();\r\n obj.e = e;\r\n //区别是否在移动状态-同时判断是moveEnd还是zoomEnd\r\n if(t.isMoving){\r\n t.isMoving = false;\r\n }\r\n if(t.isZoomming){\r\n t.isZoomming = false;\r\n }\r\n if(t.oldZoomLevel != t.state.gis.getZoom()){\r\n t.oldZoomLevel = t.state.gis.getZoom();\r\n if(typeof(t.props.zoomEnd) === 'function'){\r\n t.props.zoomEnd(obj);\r\n }\r\n }else{\r\n if(typeof(t.props.moveEnd) === 'function'){\r\n t.props.moveEnd(obj);\r\n }\r\n }\r\n //更新海量点\r\n if(t.props.mapPointCollection){\r\n t.updatePointCollection(t.props.mapPointCollection);\r\n }\r\n })\r\n }\r\n }\r\n //地图更改缩放级别开始时触发触发此事件\r\n zoomStart(){\r\n let t = this;\r\n if(typeof(t.props.zoomStart) === 'function'){\r\n t.state.gis.addListener('zoom_changed',(e)=>{\r\n if(t.pointCollectionId){\r\n $(`#${t.pointCollectionId}`).css({visibility: 'hidden'});\r\n }\r\n if(!t.isZoomming){\r\n t.isZoomming = true;\r\n let obj = t.getMapExtent();\r\n obj.e = e;\r\n t.props.zoomStart(obj);\r\n }\r\n });\r\n }\r\n }\r\n //对外使用方法\r\n //显示隐藏的图元\r\n showGraphicById (id){\r\n let t = this;\r\n if(t.GM.getGraphic(id)){\r\n t.GM.getGraphic(id).setVisible(true);\r\n }\r\n }\r\n //隐藏图元\r\n hideGraphicById(id){\r\n let t = this;\r\n if(t.GM.getGraphic(id)){\r\n t.GM.getGraphic(id).hide(false);\r\n }\r\n }\r\n //内部公共方法区\r\n //获取图元数据\r\n getGraphic (id) {\r\n let t = this;\r\n if(!id){\r\n return false;\r\n }\r\n let gp = t.GM.getGraphicParam(id);\r\n let gg = t.GM.getGraphic(id);\r\n if(!gg){\r\n return false;\r\n }\r\n let p = {},pts = [],lng = 0,lat = 0;\r\n switch(gp.geometryType){\r\n case 'point':\r\n lng = gg.getPosition().lng();\r\n lat = gg.getPosition().lat();\r\n p = {\r\n ...gp,\r\n mapLayer: gg,\r\n geometry: {\r\n ...gp.geometry,\r\n x: lng,\r\n y: lat\r\n },\r\n attributes: {\r\n ...gp.attributes,\r\n longitude: lng,\r\n latitude: lat,\r\n other: {\r\n ...gp.attributes.other,\r\n longitude: lng,\r\n latitude: lat,\r\n }\r\n }\r\n }\r\n break;\r\n case 'polyline':\r\n pts = gg.getPath().getArray().map((item,index)=>{\r\n return [item.lng(),item.lat()]\r\n });\r\n p = {\r\n ...gp,\r\n mapLayer: gg,\r\n geometry: {\r\n ...gp.geometry,\r\n paths: pts\r\n },\r\n attributes: {\r\n ...gp.attributes,\r\n paths: pts,\r\n other: {\r\n ...gp.attributes.other,\r\n paths: pts\r\n }\r\n }\r\n }\r\n break;\r\n case 'polygon':\r\n pts = gg.getPath().getArray().map((item,index)=>{\r\n return [item.lng(),item.lat()]\r\n });\r\n p = {\r\n ...gp,\r\n mapLayer: gg,\r\n geometry: {\r\n ...gp.geometry,\r\n rings: pts\r\n },\r\n attributes: {\r\n ...gp.attributes,\r\n rings: pts,\r\n other: {\r\n ...gp.attributes.other,\r\n rings: pts\r\n }\r\n }\r\n }\r\n break;\r\n case 'circle':\r\n lng = gg.getCenter().lng();\r\n lat = gg.getCenter().lat();\r\n let radius = gg.getRadius();\r\n p = {\r\n ...gp,\r\n mapLayer: gg,\r\n geometry: {\r\n ...gp.geometry,\r\n x: lng,\r\n y: lat,\r\n radius\r\n },\r\n attributes: {\r\n ...gp.attributes,\r\n longitude: lng,\r\n latitude: lat,\r\n radius,\r\n other: {\r\n ...gp.attributes.other,\r\n longitude: lng,\r\n latitude: lat,\r\n radius\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n return p;\r\n }\r\n //获取地图当前的位置状态信息\r\n getMapExtent() {\r\n let t = this;\r\n let nowBounds = t.state.gis.getBounds();\r\n let obj = {};\r\n obj.southWest = {\r\n lng : nowBounds.getNorthEast().lng(),\r\n lat : nowBounds.getNorthEast().lat()\r\n };\r\n obj.northEast = {\r\n lng : nowBounds.getSouthWest().lng(),\r\n lat : nowBounds.getSouthWest().lat()\r\n };\r\n obj.nowCenter = t.state.gis.getCenter();\r\n obj.zoom = t.state.gis.getZoom();\r\n obj.mapSize = {\r\n width: t.state.gis.getDiv().offsetWidth,\r\n height: t.state.gis.getDiv().offsetHeight\r\n };\r\n obj.radius = t.calculatePointsDistance([obj.nowCenter.lng(),obj.nowCenter.lat()],\r\n [obj.northEast.lng,obj.northEast.lat]);\r\n return obj;\r\n }\r\n //获取当前比例尺\r\n getZoomLevel (){\r\n let t =this;\r\n return t.state.gis.getZoom();\r\n }\r\n //处理线和面的 经纬度数据\r\n dealData(ms){\r\n //区别点和圆的经纬度数据处理\r\n let lnglatAry = [],_extent = {xmax: 0,xmin: 0,ymax: 0,ymin: 0},path=[];\r\n if('getPath' in ms){\r\n path = ms.getPath().getArray();\r\n path = path.map((item,index)=>{\r\n let lng = item.lng(),lat = item.lat();\r\n if(lng > _extent.xmax){\r\n _extent.xmax = lng;\r\n }\r\n if(lng < _extent.xmin || _extent.xmin == 0){\r\n _extent.xmin = lng;\r\n }\r\n if(lat > _extent.ymax){\r\n _extent.ymax = lat;\r\n }\r\n if(lat < _extent.ymin || _extent.ymin == 0){\r\n _extent.ymin = lat;\r\n }\r\n lnglatAry.push({\r\n lngX: lng,\r\n latX: lat\r\n });\r\n return [lng,lat];\r\n })\r\n }\r\n return {lnglatAry,_extent,path};\r\n }\r\n //点位移动动画效果\r\n moveAnimation(){\r\n let t = this;\r\n if(t.moveToTimer){\r\n clearInterval(t.moveToTimer);\r\n }\r\n t.moveToTimer = setInterval(()=>{\r\n for(let i = 0;i < t.movePoints.length; i++){\r\n t.movePoints[i].waitTime += 10;\r\n t.movePoints[i].deleteTime -= 10;\r\n }\r\n t.movePoints.sort((x,y)=>{\r\n return y.waitTime -x.waitTime;\r\n });\r\n let nowMovePoints = t.movePoints.slice(0,10),deleteIndex=[];\r\n for(let i = 0;i < nowMovePoints.length; i++){\r\n let {id,rx,ry,waitTime,deleteTime} = nowMovePoints[i];\r\n let gc = t.GM.getGraphic(id),\r\n gc_label = t.GM.getGraphic(`${id}_vtxoMap_label`);\r\n if(!gc){\r\n clearInterval(t.moveToTimer);\r\n }else{\r\n if(gc.isAdded){\r\n t._cluster.removeMarker(gc);\r\n }\r\n if(gc_label && gc_label.isAdded){\r\n t._cluster.removeMarker(gc_label);\r\n }\r\n let gg = gc.getPosition();\r\n let tx = gg.lng() + rx,ty = gg.lat() + ry;\r\n gc.setPosition(new t.omap.LatLng({lng:tx,lat:ty}));\r\n if(gc_label){\r\n gc_label.setPosition(new t.omap.LatLng({lng:tx,lat:ty}));\r\n }\r\n t.movePoints[i].waitTime = 0;\r\n if(deleteTime <= 0){\r\n deleteIndex.push(i);\r\n }\r\n }\r\n }\r\n deleteIndex.sort((a,b)=>{return b-a});\r\n for(let i = 0 ; i < deleteIndex.length ; i++){\r\n let {id,rx,ry,waitTime,deleteTime} = t.movePoints[deleteIndex[i]],\r\n gc = t.GM.getGraphic(id),\r\n gc_label = t.GM.getGraphic(`${id}_vtxoMap_label`);\r\n if(t.clusterIdList.indexOf(id) > -1){\r\n t._cluster.addMarker(gc);\r\n if(gc_label){\r\n t._cluster.addMarker(gc_label);\r\n }\r\n }\r\n t.movePoints.splice(deleteIndex[i],1);\r\n }\r\n if(nowMovePoints.length == 0){\r\n clearInterval(t.moveToTimer);\r\n }\r\n },10);\r\n }\r\n //点位移动逻辑\r\n moveTo(id,lnglat,delay,autoRotation,urlright,urlleft){\r\n let t = this,timer = 10,\r\n gc = t.GM.getGraphic(id);\r\n delay = eval(delay || 3)*1000;\r\n let count = delay/timer;\r\n let s = gc.getPosition(),e = new t.omap.LatLng({lng:lnglat[0],lat:lnglat[1]});\r\n if(s.equals(e)){\r\n return false;\r\n }else{\r\n let url= null;\r\n //计算角度,旋转\r\n if(autoRotation && !gc.isMarkerContent){\r\n let ddeg = t.rotateDeg(s,e);\r\n if(urlleft && (ddeg < -90 && ddeg > -270)){\r\n ddeg += 180;\r\n url = urlleft;\r\n }else{\r\n url = urlright;\r\n }\r\n let icon = gc.getIcon(),iconUrl = '';\r\n // 360deg 不需要旋转\r\n if(ddeg%360 != 0){\r\n iconUrl = new RotateIcon({\r\n url: url,\r\n width: icon.size.width,\r\n height: icon.size.height\r\n });\r\n }\r\n gc.setIcon({...icon,url: iconUrl.setRotation(ddeg).getUrl()})\r\n }\r\n //拆分延迟移动定位\r\n let rx = (e.lng() - s.lng())/count, ry = (e.lat() - s.lat())/count;\r\n let isHave = false;\r\n for(let i = 0 ; i < t.movePoints.length ;i++){\r\n if(t.movePoints[i].id == id){\r\n t.movePoints.splice(i,1,{\r\n id,rx,ry,\r\n waitTime: 0,\r\n deleteTime: delay\r\n });\r\n isHave = true;\r\n }\r\n }\r\n if(!isHave){\r\n t.movePoints.push({\r\n id,rx,ry,\r\n waitTime: 0,\r\n deleteTime: delay\r\n });\r\n }\r\n }\r\n }\r\n //点位角度旋转(以指向东(右)为0°)\r\n rotateDeg(sp,ep){\r\n let t = this,\r\n deg = 0,\r\n ftp = t.canvasProjectionOverlay.getProjection(),\r\n spLngLat = sp,epLngLat = ep;\r\n if(ftp){\r\n if(Array.isArray(sp)){\r\n spLngLat = new t.omap.LatLng({lng:sp[0],lat:sp[1]})\r\n }\r\n if(Array.isArray(ep)){\r\n spLngLat = new t.omap.LatLng({lng:ep[0],lat:ep[1]})\r\n }\r\n let s = ftp.fromLatLngToContainerPixel(spLngLat),\r\n //获取当前点位的经纬度\r\n e = ftp.fromLatLngToContainerPixel(epLngLat);\r\n if(e.x != s.x){\r\n var tan = (e.y - s.y)/(e.x - s.x),\r\n atan = Math.atan(tan);\r\n deg = atan*360/(2*Math.PI);\r\n //degree correction;\r\n if(e.x < s.x){\r\n deg = -deg + 90 + 90;\r\n\r\n } else {\r\n deg = -deg;\r\n }\r\n deg = -deg;\r\n }else {\r\n var disy = e.y- s.y ;\r\n var bias = 0;\r\n if(disy > 0)\r\n bias=-1;\r\n else\r\n bias = 1;\r\n if(disy == 0)\r\n bias = 0; \r\n deg = -bias * 90;\r\n }\r\n }\r\n return deg;\r\n }\r\n /*\r\n 匹配控件位置方法\r\n (谷歌地图有8个方位,为了统一,只使用左上,左下,右上,右下)\r\n */\r\n matchControlPosition(location){\r\n let position = google.maps.ControlPosition.RIGHT_BOTTOM;\r\n switch(location){\r\n case 'tl':\r\n position = google.maps.ControlPosition.LEFT_TOP;\r\n break;\r\n case 'bl':\r\n position = google.maps.ControlPosition.LEFT_BOTTOM\r\n break;\r\n case 'tr':\r\n position = google.maps.ControlPosition.RIGHT_TOP;\r\n break;\r\n case 'br':\r\n position = google.maps.ControlPosition.RIGHT_BOTTOM;\r\n break;\r\n }\r\n return position;\r\n }\r\n /*\r\n 地图内部需要公共方法\r\n */\r\n calculatePointsDistance(fp,ep){\r\n if(google.maps.geometry && google.maps.geometry.spherical){\r\n return Math.round(google.maps.geometry.spherical.computeDistanceBetween(\r\n new google.maps.LatLng({lng:fp[0],lat:fp[1]})\r\n ,\r\n new google.maps.LatLng({lng:ep[0],lat:ep[1]})\r\n )*100)/100;\r\n }\r\n return 0;\r\n }\r\n //计算多个点的距离(常用于线计算)\r\n calculateDistance(ps){\r\n let t = this,totalDistance = 0;\r\n if (ps.length < 0) {return false;}\r\n for(let i= 0 ; i< ps.length ; i++){\r\n if(i < ps.length-1){\r\n totalDistance += t.calculatePointsDistance(ps[i],ps[i+1]);\r\n }\r\n }\r\n return Math.round(totalDistance*100)/100;\r\n }\r\n //计算图元面积(面,圆)\r\n calculateArea(id){\r\n var t = this;\r\n return google.maps.geometry.spherical.computeArea(t.GM.getGraphic(id).getPath().getArray());\r\n }\r\n //计算多个点的距离(常用于线计算)[入参是 google 经纬度对象数组]\r\n calculateGraphicDistance(ary){\r\n var t = this;\r\n return google.maps.geometry.spherical.computeLength(ary);\r\n }\r\n //对比对象数据是否相等\r\n deepEqual(a,b){\r\n return Immutable.is(Immutable.fromJS(a),Immutable.fromJS(b));\r\n }\r\n //数据解析(分析,新增,更新,删除对应的数据)\r\n dataMatch(oldData,newData,type){\r\n let onlyOldData = Set(oldData).subtract(Set(newData)).toJS();\r\n let onlyNewData = Set(newData).subtract(Set(oldData)).toJS();\r\n let onlyOldIDs = onlyOldData.map(item=>item[type]);\r\n let onlyNewIDs = onlyNewData.map(item=>item[type]);\r\n let updateDataIDs = Set(onlyOldIDs).intersect(Set(onlyNewIDs)).toJS();\r\n let updatedData = onlyNewData.filter(item=> updateDataIDs.indexOf(item[type])>-1);\r\n let replacedData = onlyOldData.filter(item=> updateDataIDs.indexOf(item[type])>-1);\r\n let deletedDataIDs = onlyOldIDs.filter(oldID=>updateDataIDs.indexOf(oldID)==-1);\r\n let addedData = onlyNewData.filter(item=>updateDataIDs.indexOf(item[type])==-1)\r\n \r\n return {deletedDataIDs,addedData,updatedData,replacedData};\r\n }\r\n //处理需要增加图元的数据(避免意外问题)\r\n dealAdd(ary,ids){\r\n let ads = [], otherupds = [];\r\n for(let i = 0 ; i < ary.length ; i++){\r\n if(ids.indexOf(ary[i].id) > -1){\r\n otherupds.push(ary[i]);\r\n }else{\r\n ads.push(ary[i]);\r\n }\r\n }\r\n return {ads,otherupds};\r\n }\r\n //处理需要更新图元的数据(避免意外问题)\r\n dealUpdate(ary,ids){\r\n let upds = [], otherads = [];\r\n for(let i = 0 ; i < ary.length ; i++){\r\n if(ids.indexOf(ary[i].id) > -1){\r\n upds.push(ary[i]);\r\n }else{\r\n otherads.push(ary[i]);\r\n }\r\n }\r\n return {upds,otherads};\r\n }\r\n //渲染\r\n render(){\r\n let t = this;\r\n let _map = this.props;\r\n return(\r\n <div id={_map.mapId} style={{width:'100%',height:'100%'}}></div>\r\n );\r\n }\r\n //初始化\r\n componentDidMount(){\r\n let t = this;\r\n t.loadMapComplete.then(()=>{\r\n t.mapLeft = document.getElementById(t.props.mapId).offsetLeft;\r\n t.mapTop = document.getElementById(t.props.mapId).offsetTop;\r\n t.init();\r\n }) \r\n }\r\n //重新渲染结束\r\n componentDidUpdate(prevProps, prevState) {}\r\n //已加载组件,收到新的参数时调用\r\n componentWillReceiveProps(nextProps) {\r\n let t = this;\r\n //点/线旧数据\r\n let {pointIds,lineIds,polygonIds,circleIds,drawIds} = t.state;\r\n let {point,polyline,polygon,circle,rectangle} = drawIds;\r\n //点/线新数据\r\n let {\r\n mapPoints = [],mapLines = [],mapPolygons = [],mapCircles = [],customizedBoundary =[],\r\n isOpenTrafficInfo,boundaryName,heatMapData,\r\n mapVisiblePoints,setVisiblePoints,\r\n setCenter,mapCenter,\r\n setZoomLevel,mapZoomLevel,\r\n setCluster,mapCluster,\r\n isRangingTool,mapRangingTool,\r\n isRemove,mapRemove,\r\n mapDraw,isDraw,isCloseDraw,\r\n editGraphicId,isDoEdit,isEndEdit,\r\n mapPointCollection,isclearAllPointCollection,\r\n isSetAreaRestriction,areaRestriction,isClearAreaRestriction,\r\n isClearAll\r\n } = nextProps;\r\n let props = t.props;\r\n\r\n // 等待地图加载\r\n if(!t.state.mapCreated)return;\r\n \r\n /*添加海量点*/\r\n if(mapPointCollection instanceof Array && props.mapPointCollection instanceof Array && !t.deepEqual(mapPointCollection,props.mapPointCollection)){\r\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(props.mapPointCollection,mapPointCollection,'id');\r\n t.clearPointCollection(deletedDataIDs);\r\n t.addPointCollection(addedData);\r\n t.updatePointCollection(updatedData);\r\n }\r\n if((typeof(isclearAllPointCollection) == 'boolean' && isclearAllPointCollection) || (isclearAllPointCollection && isclearAllPointCollection !== t.props.isclearAllPointCollection)){\r\n t.clearAllPointCollection();\r\n }\r\n /*点数据处理\r\n pointData[2]相同的点,执行刷新\r\n pointData[1]的数据在idsForGraphicId中不存在的,执行新增\r\n pointData[0]数据中多余的id,执行删除\r\n */\r\n if(mapPoints instanceof Array && props.mapPoints instanceof Array && !t.deepEqual(mapPoints,props.mapPoints)){\r\n let oldMapPoints = props.mapPoints;\r\n let newMapPoints = mapPoints;\r\n //过滤编辑的图元\r\n if(!!t.state.editId){\r\n oldMapPoints = props.mapPoints.filter((item)=>{return item.id !== editGraphicId});\r\n newMapPoints = mapPoints.filter((item)=>{return item.id !== editGraphicId});\r\n }\r\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(oldMapPoints,newMapPoints,'id');\r\n let {ads,otherupds} = t.dealAdd(addedData,[...pointIds,...point]);\r\n let {upds,otherads} = t.dealUpdate(updatedData,[...pointIds,...point]);\r\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\r\n for(let id of deletedDataIDs){\r\n t.removeGraphic(id,'point');\r\n }\r\n //增加\r\n t.addPoint([...ads,...otherads]);\r\n //更新\r\n t.updatePoint([...upds,...otherupds]);\r\n }\r\n /*\r\n 面数据处理\r\n 先全删除,再新增\r\n */\r\n if(mapPolygons instanceof Array && props.mapPolygons instanceof Array && !t.deepEqual(mapPolygons,props.mapPolygons)){\r\n let oldMapPolygons = props.mapPolygons;\r\n let newMapPolygons = mapPolygons;\r\n if(!!t.state.editId){\r\n oldMapPolygons = props.mapPolygons.filter((item)=>{return item.id !== editGraphicId});\r\n newMapPolygons = mapPolygons.filter((item)=>{return item.id !== editGraphicId});\r\n }\r\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(oldMapPolygons,newMapPolygons,'id');\r\n let {ads,otherupds} = t.dealAdd(addedData,[...rectangle,...polygon,...polygonIds]);\r\n let {upds,otherads} = t.dealUpdate(updatedData,[...rectangle,...polygon,...polygonIds]);\r\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\r\n for(let id of deletedDataIDs){\r\n t.removeGraphic(id,'polygon');\r\n }\r\n //增加\r\n t.addPolygon([...ads,...otherads]);\r\n //更新\r\n t.updatePolygon([...upds,...otherupds]);\r\n }\r\n /*\r\n 圆数据处理\r\n 先全删除,再新增\r\n */\r\n if(mapCircles instanceof Array && props.mapCircles instanceof Array && !t.deepEqual(mapCircles,props.mapCircles)){\r\n let oldMapCircles = props.mapCircles;\r\n let newMapCircles = mapCircles;\r\n if(!!t.state.editId){\r\n oldMapCircles = props.mapCircles.filter((item)=>{return item.id !== editGraphicId});\r\n newMapCircles = mapCircles.filter((item)=>{return item.id !== editGraphicId});\r\n }\r\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(oldMapCircles,newMapCircles,'id');\r\n let {ads,otherupds} = t.dealAdd(addedData,[...circleIds,...circle]);\r\n let {upds,otherads} = t.dealUpdate(updatedData,[...circleIds,...circle]);\r\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\r\n for(let id of deletedDataIDs){\r\n t.removeGraphic(id,'circle');\r\n }\r\n //增加\r\n t.addCircle([...ads,...otherads]);\r\n //更新\r\n t.updateCircle([...upds,...otherupds]);\r\n }\r\n /*\r\n 线数据处理\r\n 先全删除,再新增\r\n */\r\n if(mapLines instanceof Array && props.mapLines instanceof Array && !t.deepEqual(mapLines,props.mapLines)){\r\n let oldMapLines = props.mapLines;\r\n let newMapLines = mapLines;\r\n if(!!t.state.editId){\r\n oldMapLines = props.mapLines.filter((item)=>{return item.id !== editGraphicId});\r\n newMapLines = mapLines.filter((item)=>{return item.id !== editGraphicId});\r\n }\r\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(oldMapLines,newMapLines,'id');\r\n let {ads,otherupds} = t.dealAdd(addedData,[...lineIds,...polyline]);\r\n let {upds,otherads} = t.dealUpdate(updatedData,[...lineIds,...polyline]);\r\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\r\n for(let id of deletedDataIDs){\r\n t.removeGraphic(id,'line');\r\n }\r\n //增加\r\n t.addLine([...ads,...otherads]);\r\n //更新\r\n t.updateLine([...upds,...otherupds]); \r\n }\r\n //画其他特例线专用\r\n if(customizedBoundary instanceof Array && props.customizedBoundary instanceof Array && !t.deepEqual(customizedBoundary,props.customizedBoundary)){\r\n let {deletedDataIDs,addedData,updatedData} = t.dataMatch(props.customizedBoundary,customizedBoundary,'id');\r\n //删在增之前,(因为增加后会刷新pointIds的值,造成多删的问题)\r\n for(let id of deletedDataIDs){\r\n t.removeGraphic(id,'line');\r\n }\r\n t.addLine(addedData);\r\n t.updateLine(updatedData); \r\n }\r\n // 获取热力图\r\n if(heatMapData && !t.deepEqual(heatMapData,props.heatMapData)){\r\n t.heatMapOverlay(heatMapData);\r\n }\r\n //图元编辑调用\r\n if((typeof(isDoEdit) == 'boolean' && isDoEdit) || (isDoEdit && isDoEdit !== t.props.isDoEdit)){\r\n t.doEdit(editGraphicId);\r\n }\r\n //关闭图元编辑\r\n if((typeof(isEndEdit) == 'boolean' && isEndEdit) || (isEndEdit && isEndEdit !== t.props.isEndEdit)){\r\n t.endEdit();\r\n }\r\n //开启图元绘制\r\n if((typeof(isDraw) == 'boolean' && isDraw) || (isDraw && isDraw !== t.props.isDraw)){\r\n t.draw(mapDraw);\r\n }\r\n //关闭图元绘制\r\n if((typeof(isCloseDraw) == 'boolean' && isCloseDraw) || (isCloseDraw && isCloseDraw !== t.props.isCloseDraw)){\r\n t.closeDraw();\r\n }\r\n //设置中心点\r\n if((typeof(setCenter) == 'boolean' && setCenter) || (setCenter && setCenter !== t.props.setCenter)){\r\n t.setCenter(mapCenter);\r\n }\r\n //设置点聚合\r\n if((typeof(setCluster) == 'boolean' && setCluster) || (setCluster && setCluster !== t.props.setCluster)){\r\n t.cluster(mapCluster);\r\n }\r\n //设置比例尺\r\n if((typeof(setZoomLevel) == 'boolean' && setZoomLevel) || (setZoomLevel && setZoomLevel !== t.props.setZoomLevel)){\r\n t.setZoomLevel(mapZoomLevel);\r\n }\r\n /*设置指定图元展示*/\r\n if((typeof(setVisiblePoints) == 'boolean' && setVisiblePoints) || (setVisiblePoints && setVisiblePoints !== t.props.setVisiblePoints)){\r\n t.setVisiblePoints(mapVisiblePoints);\r\n }\r\n //测距工具调用\r\n if((typeof(isRangingTool) == 'boolean' && isRangingTool) || (isRangingTool && isRangingTool !== t.props.isRangingTool)){\r\n t.vtxRangingTool(mapRangingTool);\r\n }\r\n //开关路况\r\n if(isOpenTrafficInfo){\r\n t.openTrafficInfo();\r\n }else{\r\n t.hideTrafficInfo();\r\n }\r\n //清空地图\r\n if((typeof(isClearAll) == 'boolean' && isClearAll) || (isClearAll && isClearAll !== t.props.isClearAll)){\r\n t.clearAll();\r\n }\r\n //删除指定图元\r\n if((typeof(isRemove) == 'boolean' && isRemove) || (isRemove && isRemove !== t.props.isRemove)){\r\n mapRemove.map((item,index)=>{\r\n t.removeGraphic(item.id,item.type);\r\n });\r\n }\r\n }\r\n componentWillUnmount() {\r\n //关闭moveTo定时\r\n let t = this;\r\n if(t.loadLabel){\r\n clearInterval(t.loadLabel);\r\n }\r\n if(t.upPsTimer){\r\n clearTimeout(t.upPsTimer);\r\n }\r\n if(t.addPsTimer){\r\n clearTimeout(t.addPsTimer);\r\n }\r\n if(t.state.gis){\r\n t.state.gis.clearOverlays();\r\n }\r\n t.state.gis = null;\r\n if(t.moveToTimer){\r\n clearInterval(t.moveToTimer);\r\n }\r\n window.VtxMap[t.state.mapId]= null;\r\n }\r\n}\r\n\r\nexport default Map;"],"mappings":"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"}