| 
					
				 | 
			
			
				@@ -0,0 +1,1318 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import OLMap from 'ol/Map' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import View from 'ol/View' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import * as proj from 'ol/proj' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import * as interaction from 'ol/interaction' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Draw, Modify } from 'ol/interaction' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import 'ol/ol.css' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import './css/KMap.css' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import * as Enum from './Enum' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import Common from './Common' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import VectorLayer from './VectorLayer' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import * as Extent from 'ol/extent' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import Overlay from 'ol/Overlay' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { GeoJSON, WKT } from 'ol/format' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import WMTSLayer from './WMTSLayer' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import XYZLayer from './XYZLayer' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Circle, Fill, Stroke } from 'ol/style.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { LineString, Point } from 'ol/geom'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Style, Text } from 'ol/style'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Feature } from "ol"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getArea } from "ol/sphere" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {getCfg} from "@/api/modules/system" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @description KMap.Map 地图类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class Map { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 地图实例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @static 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Instance = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 信息窗体像素对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// infoWindowPixel = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 鼠标移动事件弹窗UID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// InfowindowmoveUID = -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 鼠标点击事件弹窗UID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// InfowindowclickUID = -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 是否有鼠标移动弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// ClearMouseMoveInfoWindow = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description X方向缩放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// scaleX = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description Y方向缩放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// scaleY = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {string} id DOM元素ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} zoomLevel 地图层级 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} lng 纬度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} lat 经度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description Map初始化方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   * @constructor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	constructor(id, zoomLevel, lng, lat, projection, minZoom, maxZoom, mapType, dragPan = true, mouseWheelZoom = true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.mapType = mapType || "img"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Map.Instance) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Map.Instance = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (projection) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			projection = proj.get(projection) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		projection = projection || proj.get("EPSG:4326"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map.Instance = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let lnglat = [lng, lat] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (projection.getCode() == "EPSG:3857") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			lnglat = proj.fromLonLat(lnglat); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Common.checkLngLat(lng, lat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let view = new View({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			center: lnglat, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			zoom: zoomLevel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			minZoom: minZoom || Common.ShowLevel[0], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			maxZoom: maxZoom || Common.ShowLevel[1], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			projection: projection, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			enableRotation: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view = view 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.map = new OLMap({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			interactions: interaction.defaults({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				dragPan, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mouseWheelZoom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}).extend([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				new interaction.DragRotateAndZoom()]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			target: id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			layers: [],//vm.baseLayer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			view: view, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			control: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.initBaseLayer(projection) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//初始化业务图层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.initBusinessLayer() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//初始化地图信息弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.initInfoWindow() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//初始化地图基础事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.initMapBaseEvent() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   * 初始化地图底图图层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @return {array} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	async initBaseLayer(projection) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (this.mapType == "img") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const img_wmts = await getCfg({ "k": "img_wmts_mkt", "resultType": "json" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const cva_wmts = await getCfg({ "k": "cva_wmts_mkt", "resultType": "json" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.tdtImgLayer = new WMTSLayer(img_wmts.data, projection, this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.cva_torLayer = new WMTSLayer(cva_wmts.data, projection, this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const img_wmts = await getCfg({ "k": "vec_c_wmts", "resultType": "json" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const cva_wmts = await getCfg({ "k": "cva_c_wmts", "resultType": "json" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.tdtImgLayer = new WMTSLayer(img_wmts.data, projection, this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.cva_torLayer = new WMTSLayer(cva_wmts.data, projection, this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	addXYZLayer(url, options, zIndex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let xyz = new XYZLayer(url, options, zIndex || 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return xyz; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 初始化业务图层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	initBusinessLayer() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let map = vm.map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//创建默认点标记图层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.markerLayer = new VectorLayer("defaultMarkerLayer", 101) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//创建默认线标记图层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.polyLineLayer = new VectorLayer("defaultPolylineLayer", 101) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//创建默认面图层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.polygonLayer = new VectorLayer("defaultPolygonLayer", 1000, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			style: vm.polygonStyle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//创建文本标记图层 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.labelLayer = new VectorLayer("defaultLabelLayer", 99) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		map.addLayer(vm.polygonLayer.layer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		map.once('postrender', function (event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.addLayer(vm.markerLayer.layer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.addLayer(vm.polyLineLayer.layer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.addLayer(vm.labelLayer.layer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.on('click', function (evt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let coordinate = evt.coordinate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// let newPoints = proj.transform(coordinate, 'EPSG:3857', 'EPSG:4326'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// debugger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// map.addLayer(layer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	initDraw(callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.draw = new Draw({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			type: 'MultiPolygon', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			source: this.polygonLayer.source, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			free: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			style: vm.drawStyleFunc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.draw.setActive(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.map.addInteraction(this.draw); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.draw.on("drawend", callback) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	startDraw() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.draw.setActive(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	endDraw(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.draw.setActive(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	modifyDraw(callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.modify = new Modify({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			source: this.polygonLayer.source, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pixelTolerance: 10, //设置吸附像素值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.map.addInteraction(this.modify); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.modify.on("modifyend", callback) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	startModify(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.modify.setActive(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	endModify(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.modify.setActive(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	drawStyleFunc(feature) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const styles = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const type = feature.getGeometry().getType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const coord = feature.getGeometry().getCoordinates(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < coord.length - 1; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (i % 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				styles.push( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						geometry: new Point(coord[i]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						image: new Circle({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							radius: 6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							fill: new Fill({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								color: '#2199F8' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							stroke: new Stroke({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								color: '#fff', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								width: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				styles.push( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						geometry: new Point(coord[i]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						image: new Circle({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							radius: 6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							fill: new Fill({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								color: '#fff' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							stroke: new Stroke({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								color: '#2199F8', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								width: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (type === 'LineString') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (let i = 0; i < coord.length - 1; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				styles.push( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						geometry: new LineString([coord[i], coord[i + 1]]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						stroke: new Stroke({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							color: '#2199F8', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							width: 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return styles; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	polygonStyle(feature) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const styles = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let fillStyle = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const coord = feature.getGeometry().getCoordinates(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(feature.get("icon")==="point-act"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (let i = 0; i < coord[0].length - 1; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (i % 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					styles.push( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							geometry: new Point(coord[0][i]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							image: new Circle({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								radius: 6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								fill: new Fill({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									color: '#2199F8' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								stroke: new Stroke({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									color: '#fff', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									width: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					styles.push( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							geometry: new Point(coord[0][i]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							image: new Circle({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								radius: 6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								fill: new Fill({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									color: '#fff' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								stroke: new Stroke({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									color: '#2199F8', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									width: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fillStyle = new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					fill: new Fill({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						color: [33,153, 248, 0.5] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					stroke: new Stroke({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						color: '#2199F8', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						width: 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			fillStyle = new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fill: new Fill({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					color: [33,153, 248, 0.5] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				stroke: new Stroke({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					color: '#2199F8', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					width: 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let geom = feature.getGeometry().clone() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		geom.transform(proj.get("EPSG:4326"), proj.get("EPSG:38572")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let area = getArea(geom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		area = (area + area / 2) / 1000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let areaValStyle = new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			text: new Text({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				font: "16px sans-serif", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				text: area.toFixed(2) + "亩", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// offsetX: 28, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// offsetY: -100, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fill: new Fill({ color: "#fff" }), // 字体颜色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		styles.push(fillStyle, areaValStyle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return styles; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getLayerFeatures() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let features = vm.polygonLayer.source.getFeatures() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return features 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 传入geojson,回显到polygon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setLayerPolygon(geometry) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.polygonLayer.source.addFeatures(new GeoJSON().readFeatures(geometry)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setLayerWkt(wkt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let f = new Feature({ geometry: new WKT().readGeometry(wkt) }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const extent = f.getGeometry().getExtent() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.polygonLayer.source.addFeature(f) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.map.getView().fit(extent, { padding: [20, 20, 20, 20] }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	addLayer(layer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.map.addLayer(layer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	removeLayer(layer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.map.removeLayer(layer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 初始化信息弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	initInfoWindow() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//创建地图弹窗容器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let infoWindowBoxClick = document.createElement("div") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let infoWindowBoxMove = document.createElement("div") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let mapTarget = vm.map.getTargetElement() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		infoWindowBoxClick.id = "infowindow-click" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		infoWindowBoxMove.id = "infowindow-move" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		infoWindowBoxClick.style.zIndex = 999 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		infoWindowBoxMove.style.zIndex = 999 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mapTarget.appendChild(infoWindowBoxClick) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mapTarget.appendChild(infoWindowBoxMove) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.infoWindow_click = new Overlay({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			element: infoWindowBoxClick 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.infoWindow_move = new Overlay({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			element: infoWindowBoxMove 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//添加点击弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.map.addOverlay(vm.infoWindow_click) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//添加悬停弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.map.addOverlay(vm.infoWindow_move) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 初始化地图基础事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	initMapBaseEvent() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var allowTriggerEvent = function (pixel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var infoWindowPixel = vm.infoWindowPixel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (infoWindowPixel == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var x = pixel[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var y = pixel[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (x >= infoWindowPixel[0] && x <= infoWindowPixel[2] && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				y >= infoWindowPixel[1] && y <= infoWindowPixel[3]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.map.on('click', function (event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			event.pixel[0] = (event.pixel[0] / vm.scaleX) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			event.pixel[1] = (event.pixel[1] / vm.scaleY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var clickFeature = vm.map.forEachFeatureAtPixel(event.pixel, function (feature) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!allowTriggerEvent(event.pixel)) return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 为点击到的feature发送自定义的click消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (feature.dispatchEvent != undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					feature.dispatchEvent({ type: 'click', event: event }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return feature 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//点击在地图空白处时清空弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (clickFeature == undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				vm.clearInfoWindow() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//为地图注册鼠标点击事件的监听 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.map.on('pointermove', function (event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			event.pixel[0] = (event.pixel[0] / vm.scaleX) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			event.pixel[1] = (event.pixel[1] / vm.scaleY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var mousemoveFeature = vm.map.forEachFeatureAtPixel(event.pixel, function (feature) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!allowTriggerEvent(event.pixel)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 为点击到的feature发送自定义的mousemove消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (feature.dispatchEvent != undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					feature.dispatchEvent({ type: 'mousemove', event: event }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return feature 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//悬停在地图空白处时清空悬停弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (mousemoveFeature == undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				vm.clearMouseMoveInfoWindow() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//设置鼠标悬停到覆盖物上的样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var mapContainer = vm.getTarget() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (mousemoveFeature) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapContainer.style.cursor = "pointer" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapContainer.style.cursor = "default" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setScale(x, y) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// var mapContainer = vm.getTarget() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// mapContainer.style.overflow = 'hidden' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// var mapContent = mapContainer.getElementsByClassName('ol-viewport')[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// var scaleX = 1 / Number(x); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// var scaleY = 1 / Number(y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.scaleX = Number(x) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.scaleY = Number(y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// mapContent.style.transform = "scale("+scaleX+","+scaleY+")" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 清除鼠标点击弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	clearInfoWindow() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.infoWindow_click.setPosition(undefined) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.infoWindow_move.setPosition(undefined) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.infoWindowPixel = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.InfowindowmoveUID = -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.InfowindowclickUID = -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 清除鼠标移动弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	clearMouseMoveInfoWindow() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vm.ClearMouseMoveInfoWindow) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vm.infoWindow_move.setPosition(undefined) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vm.infoWindowPixel = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vm.InfowindowmoveUID = -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   * @description 获取地图容器div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   * @returns 地图容器div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getTarget() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let target = this.map.getTargetElement() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return target 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图容器尺寸 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns KMap.Size格式的尺寸 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getSize() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let size = this.map.getSize() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		console.log(Common) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		size = Common.MapSize2KMapSize(size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图投影EPSG类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns 地图投影类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getProjection() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let projection = this.view.getProjection() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return projection 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图中心 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns 地图中心,KMap.LngLat对象格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getCenter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let center = this.view.getCenter() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		center = proj.toLonLat(center) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return Common.MapLngLat2KMapLngLat(center) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图中心 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns 地图中心,KMap.LngLat对象格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getCenter2() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let center = this.view.getCenter() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		center = proj.toLonLat(center) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return center 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图中心 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {KMap.LngLat} position 地图中心位置,KMap.LngLat对象格式,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setCenter(position) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let centerlnglat = Common.KMapLngLat2MapLngLat(position) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let center = proj.fromLonLat(centerlnglat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.setCenter(center) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getView() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return this.view; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @description 设置地图中心 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param {KMap.LngLat} position 地图中心位置,KMap.LngLat对象格式,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setCenter2(position) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.setCenter(position) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fitToView(center, zoom, dera) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(center, { duration: dera }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 地图中心点平移至指定点位置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {KMap.LngLat} point 指定点经纬度坐标,KMap.LngLat对象格式,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} zoom 缩放级别,选填参数,不填则使用当前缩放级别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	panTo(point, zoom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		point = Common.KMapLngLat2MapLngLat(point) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let center = proj.fromLonLat(point) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (zoom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.view.animate({ center: center }, { zoom: zoom }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.view.animate({ center: center }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 地图放大一级显示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	zoomIn() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.setZoom(this.getZoom() + 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return this.getZoom() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 地图缩小一级显示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	zoomOut() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.setZoom(this.getZoom() - 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return this.getZoom() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 缩放到点标记图层范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} duration 选填参数,动画时长(单位:毫秒),不填则使用默认的0毫秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	zoomToMarkerLayer(duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		duration = (duration != undefined) ? duration : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let markers = vm.markerLayer.getSource().getFeatures() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let coordinateArray = new Array() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < markers.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			coordinateArray.push(markers[i].getGeometry().getCoordinates()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let extentBound = new Extent.boundingExtent(coordinateArray) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(extentBound, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			duration: duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(vm.markerLayer.getSource().getExtent(), { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			duration: duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 缩放到点标记集合范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {Array} markerArray 点标记集合,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} duration 选填参数,动画时长(单位:毫秒),不填则使用默认的0毫秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	zoomToMarkerArray(markerArray, duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		duration = (duration != undefined) ? duration : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let coordinateArray = new Array() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < markerArray.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			coordinateArray.push(markerArray[i].Marker.getGeometry().getCoordinates()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let extentBound = new Extent.boundingExtent(coordinateArray) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(extentBound, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			duration: duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 缩放到文本标记图层范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} duration 选填参数,动画时长(单位:毫秒),不填则使用默认的0毫秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	zoomToLabelLayer(duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		duration = (duration != undefined) ? duration : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(vm.labelLayer.getSource().getExtent(), { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			duration: duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 缩放到文本标记集合范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {Array}  labelArray 文本标记集合,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} duration 选填参数,动画时长(单位:毫秒),不填则使用默认的0毫秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	zoomToLabelArray(labelArray, duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		duration = (duration != undefined) ? duration : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let coordinateArray = new Array() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < labelArray.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			coordinateArray.push(labelArray[i].Label.getGeometry().getCoordinates()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let extentBound = new Extent.boundingExtent(coordinateArray) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(extentBound, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			duration: duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 缩放到线图层范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} duration 选填参数,动画时长(单位:毫秒),不填则使用默认的0毫秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	zoomToPolylineLayer(duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		duration = (duration != undefined) ? duration : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(vm.polyLineLayer.getSource().getExtent(), { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			duration: duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 缩放到线标记集合范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {Array} lineArray 线标记集合,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} duration 选填参数,动画时长(单位:毫秒),不填则使用默认的0毫秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	zoomToPolylineArray(lineArray, duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		duration = (duration != undefined) ? duration : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let coordinateArray = new Array() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < lineArray.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			let coordinates = lineArray[i].polyline.getGeometry().getCoordinates() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (let z = 0; z < coordinates.length; z++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				coordinateArray.push(coordinates[z]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let extentBound = new Extent.boundingExtent(coordinateArray) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(extentBound, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			duration: duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 缩放到经纬度数组范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {Array} lngLatArray KMap.LngLat格式的经纬度坐标数组,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} duration 选填参数,动画时长(单位:毫秒),不填则使用默认的0毫秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	zoomToLngLatArray(lngLatArray, duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		duration = (duration != undefined) ? duration : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let coordinateArray = new Array() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < lngLatArray.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			let point = Common.KMapLngLat2MapLngLat(lngLatArray[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			coordinateArray.push(proj.fromLonLat(point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let extentBound = new Extent.boundingExtent(coordinateArray) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(extentBound, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			duration: duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 调整地图视角到能够显示所有覆盖物的合适矩形范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} duration 选填参数,动画时长(单位:毫秒),不填则使用默认的0毫秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setFitView(duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//获取所有元素坐标点集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let LonLatArray = new Array() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let markers = vm.markerLayer.getSource().getFeatures() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let labels = vm.labelLayer.getSource().getFeatures() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let polylines = vm.polyLineLayer.getSource().getFeatures() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let features = [markers, labels, polylines] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < features.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (let z = 0; z < features[i].length; z++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let featureLonLats = features[i][z].getGeometry().getCoordinates() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (features[i] != polylines) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					LonLatArray.push(featureLonLats) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					for (let m = 0; m < featureLonLats.length; m++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						LonLatArray.push(featureLonLats[m]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//地图视角切换到坐标点集合的矩形范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		duration = (duration != undefined) ? duration : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let extentBound = new Extent.boundingExtent(LonLatArray) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(extentBound, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			duration: duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图分辨率 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {number} 地图分辨率 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getResolution() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let resolution = this.view.getResolution() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return resolution 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图当前缩放值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {number} 地图缩放级别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getZoom() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let zoom = this.view.getZoom() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return zoom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图当前缩放值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number}zoom 缩放值,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setZoom(zoom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.setZoom(zoom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图最大缩放值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {number} 最大缩放值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getMaxZoom() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let maxZoom = this.view.getMaxZoom() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return maxZoom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图最大缩放值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} zoom 最大缩放值,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setMaxZoom(zoom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.setMaxZoom(zoom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图最小缩放值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {number} 最小缩放值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getMinZoom() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let minZoom = this.view.getMinZoom() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return minZoom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图最小缩放值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} zoom 最小缩放值,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setMinZoom(zoom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.setMinZoom(zoom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图中心和缩放级别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} zoom 缩放级别,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {KMap.LngLat} center 地图中心 KMap.LngLat对象格式,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {boolean} animate 选填,是否使用缓冲动画,默认为false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setZoomAndCenter(zoom, center, animate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let centerlnglat = Common.KMapLngLat2MapLngLat(center) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		center = proj.fromLonLat(centerlnglat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (animate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.view.animate({ center: center, zoom: zoom }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.view.setCenter(center) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.view.setZoom(zoom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图经纬度矩形范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {KMap.Bounds} 地图经纬度矩形范围,KMap.Bounds格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getBounds() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let bounds = vm.view.calculateExtent(vm.map.getSize()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let southWest = proj.toLonLat([bounds[0], bounds[1]]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let northEast = proj.toLonLat([bounds[2], bounds[3]]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		bounds = [southWest[0], southWest[1], northEast[0], northEast[1]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let mapBound = Common.MapBounds2KMapBounds(bounds)//将OL的Bounds格式转换成KMap的Bounds格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return mapBound 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图经纬度矩形范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {KMap.Bounds} bound 地图经纬度矩形范围,KMap.Bounds格式,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setBounds(bound) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let lnglatArray = new Array() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let mapBound = Common.KMapBounds2MapBounds(bound)//将KMap的Bounds格式转换成OL的Bounds格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lnglatArray.push(proj.fromLonLat([mapBound[0], mapBound[1]])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lnglatArray.push(proj.fromLonLat([mapBound[2], mapBound[3]])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let bounds = new Extent.boundingExtent(lnglatArray) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(bounds) //地图视角切换到矩阵范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图经纬度矩形范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {[minLng,minLat,maxLng,maxLat]} bound 地图经纬度矩形范围,KMap.Bounds格式,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fitBounds(bound) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let lnglatArray = new Array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lnglatArray.push(proj.fromLonLat([bound[0], bound[1]])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lnglatArray.push(proj.fromLonLat([bound[2], bound[3]])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let bounds = new Extent.boundingExtent(lnglatArray) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(bounds) //地图视角切换到矩阵范围 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fit(geometryOrExtent, padding) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.fit(geometryOrExtent, { duration: 500, padding }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 平面地图像素坐标转经纬度坐标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {KMap.Pixel} pixel 平面地图像素坐标,格式为KMap.Pixel对象,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {KMap.LngLat} 经纬度坐标,格式为KMap.LngLat对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pixelToLngLat(pixel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pixel = Common.KMapPixel2MapPixel(pixel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let lnglat = new proj.toLonLat(pixel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return Common.MapLngLat2KMapLngLat(lnglat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 经纬度坐标转平面地图像素坐标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {KMap.LngLat} lnglat 经纬度坐标,格式为KMap.LngLat对象,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {KMap.Pixel} 地图像素坐标,格式为KMap.Pixel对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lnglatToPixel(lnglat) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lnglat = Common.KMapLngLat2MapLngLat(lnglat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let pixel = proj.fromLonLat(lnglat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return Common.MapPixel2KMapPixel(pixel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 地图容器屏幕坐标转经纬度坐标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {KMap.Pixel} pixel 地图容器像素,格式为KMap.Pixel对象,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {KMap.LngLat} 返回KMap.LngLat格式的经纬度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	containerToLngLat(pixel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pixel = Common.KMapPixel2MapPixel(pixel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let lnglat = this.map.getCoordinateFromPixel(pixel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lnglat = proj.toLonLat(lnglat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lnglat = Common.MapLngLat2KMapLngLat(lnglat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return lnglat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 经纬度坐标转地图容器屏幕坐标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {KMap.LngLat} lnglat 经纬度坐标,KMap.LngLat格式的经纬度,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {KMap.Pixel} 返回地图容器像素,格式为KMap.Pixel对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lngLatToContainer(lnglat) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lnglat = Common.KMapLngLat2MapLngLat(lnglat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let coordinate = proj.fromLonLat(lnglat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let container = this.map.getPixelFromCoordinate(coordinate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return Common.MapPixel2KMapPixel(container) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图顺时针旋转角度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {number} 顺时针旋转角度(弧度) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getRotation() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let rotation = this.view.getRotation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return rotation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图顺时针旋转角度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {number} rotation 顺时针旋转角度(弧度),必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setRotation(rotation) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.view.setRotation(rotation) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图插件集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {Array} 地图插件集合数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getControls() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let controls = this.map.getControls().array_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return controls 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 添加插件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {ol.control} control OL原生control对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	addControl(control) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let state = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let controls = this.map.getControls().array_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < controls.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (control == controls[i]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				state = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.map.addControl(control) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 删除插件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {ol.control} control 插件,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	removeControl(control) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let controls = this.map.getControls().array_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < controls.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (control == controls[i]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.map.removeControl(controls[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 清空默认插件 注意如果要清除默认插件需要在加载其他插件前调用此函数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	removeOriginControls() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let controls = this.map.getControls().array_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < controls.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.map.removeControl(controls[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图指针样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getDefaultCursor() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let mapContainer = this.map.getTargetElement() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let cursor = mapContainer.style.cursor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return cursor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图指针样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {String} cursorStyle 鼠标样式("default"默认指针,"pointer"小手,"move"移动指针, "text"文本指针,"wait"等待状态,"help"帮助),必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setDefaultCursor(cursorStyle) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let mapContainer = this.map.getTargetElement() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (cursorStyle != undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			mapContainer.style.cursor = cursorStyle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			mapContainer.style.cursor = "default" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置鼠标悬停在元素上时的样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {String} cursorStyle 鼠标样式("default"默认指针,"pointer"小手,"move"移动指针, "text"文本指针,"wait"等待状态,"help"帮助),必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setFeatureCursor(cursorStyle) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		cursorStyle = (cursorStyle == undefined) ? "default" : cursorStyle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let mapContainer = this.map.getTargetElement() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let defaultCursor = mapContainer.style.cursor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.map.on("pointermove", function (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			let features = this.map.forEachFeatureAtPixel(e.pixel, function (feature) { return feature }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (features) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapContainer.style.cursor = cursorStyle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapContainer.style.cursor = defaultCursor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图显示元素种类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {Array} 地图显示元素种类集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getFeatures() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let features = new Array() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vm.baseLayer.getVisible() == true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			features.push("Tile") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vm.markerLayer.getVisible() == true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			features.push("Marker") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vm.labelLayer.getVisible() == true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			features.push("Label") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vm.polyLineLayer.getVisible() == true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			features.push("PolyLine") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return features 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图显示元素种类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {JSON} param param 地图元素显示参数,JSON对象,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.marker true/false,点标记是否显示,选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.label true/false,文本标记是否显示,选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.polyline true/false,线标记是否显示,选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setFeatures(param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (param.marker == true || param.marker == false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vm.markerLayer.setVisible(param.marker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (param.label == true || param.label == false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vm.labelLayer.setVisible(param.label) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (param.polyline == true || param.polyline == false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vm.polyLineLayer.setVisible(param.polyline) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图状态(双击缩放/拖拽/滚动鼠标中间缩放) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {JSON} 地图状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * {"DoubleClickZoom": true, "DragAndDrop": true, "MouseWheelZoom": true} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getStates() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let interactions = this.map.getInteractions().array_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let DoubleClickZoom, DragAndDrop, MouseWheelZoom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < interactions.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (i == 1) DoubleClickZoom = interactions[i].getActive() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (i == 2) DragAndDrop = interactions[i].getActive() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (i == 7) MouseWheelZoom = interactions[i].getActive() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let states = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"DoubleClickZoom": DoubleClickZoom, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"DragAndDrop": DragAndDrop, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"MouseWheelZoom": MouseWheelZoom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return states 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图状态(双击缩放/拖拽/滚动鼠标中间缩放) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {JSON} param 地图状态 JSON对象,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.DoubleClickZoom true/false(双击缩放地图),选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.DragAndDrop true/false(地图拖拽),选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.MouseWheelZoom true/false(滚动鼠标中间缩放地图),选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setStates(param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let interactions = this.map.getInteractions().array_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (param.DoubleClickZoom == true || param.DoubleClickZoom == false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			interactions[1].setActive(param.DoubleClickZoom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (param.DragAndDrop == true || param.DragAndDrop == false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			interactions[2].setActive(param.DragAndDrop) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (param.MouseWheelZoom == true || param.MouseWheelZoom == false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			interactions[7].setActive(param.MouseWheelZoom) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 清空地图所有元素 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	clearMap() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//清空图层元素 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.markerLayer.getSource().clear() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.labelLayer.getSource().clear() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.polyLineLayer.getSource().clear() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.polygonLayer.getSource().clear() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//清空地图弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.clearInfoWindow() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 清除地图对象并清空地图容器(建议少使用此API,容易造成报错) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	destroy() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//清空地图对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// this.map.destroy() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//清空地图容器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let target = this.map.getTargetElement() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		target.innerHTML = "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Common.UseBaiDuOnlineLayer = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Common.UseGaoDeOnlineLayer = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Common.UseWGS84OnlineLayer = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图图层数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @return {Array} 地图图层数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getLayers() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let layers = this.map.getLayers().array_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return layers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图各个图层显示/隐藏 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {JSON} param 地图图层显示参数,JSON对象,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.Marker true/false,点标记图层显示/隐藏,选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.Label true/false,文本标记图层显示/隐藏,选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.PolyLine true/false,线标记图层显示/隐藏,选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setLayers(param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (param.Marker == true || param.Marker == false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vm.markerLayer.setVisible(param.Marker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (param.Label == true || param.Label == false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vm.labelLayer.setVisible(param.Label) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (param.PolyLine == true || param.PolyLine == false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vm.polyLineLayer.setVisible(param.PolyLine) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 获取地图各个图层index值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @returns {JSON} JSON对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * {"markerLayer": 0, "labelLayer": 0, "polyLineLayer": 0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getLayersIndex() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let index = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		index.markerLayer = vm.markerLayer.getZIndex() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		index.labelLayer = vm.labelLayer.getZIndex() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		index.polyLineLayer = vm.polyLineLayer.getZIndex() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 设置地图各个图层index值,index值大的图层显示在上方,值相同时后加载的图层显示在上方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {JSON} param 图层索引JSON对象,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.marker 点标记图层index值,选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.label 文字标记图层index值,选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * param.polyLine 线标记图层index值,选填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setLayersIndex(param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const vm = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let markerIndex = (param.marker) ? param.marker : vm.markerLayer.getZIndex() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let labelIndex = (param.label) ? param.label : vm.labelLayer.getZIndex() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let polyLineIndex = (param.polyLine) ? param.polyLine : vm.polyLineLayer.getZIndex() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.markerLayer.setZIndex(markerIndex) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.labelLayer.setZIndex(labelIndex) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vm.polyLineLayer.setZIndex(polyLineIndex) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 注册地图事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {String} eventName 地图操作事件类型,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * "click":单击地图,双击将触发两次;"singleclick":单击地图;"dblclick":双击地图;"movestart":开始移动地图; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * "moveend":移动地图结束;"postrender":渲染地图后;"pointerdrag":拖动指针时;"mousemove":移动指针时 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {funciton} callback 操作事件触发时调用的函数,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	on(eventName, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (eventName == "mousemove") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			eventName = "pointermove" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (eventName == "load") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			eventName = "postrender" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.map.on(eventName, callback) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 注册地图事件(事件仅执行一次) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {Strig} eventName 地图操作事件类型,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * "click":单击地图,双击将触发两次;"singleclick":单击地图;"dblclick":双击地图;"movestart":开始移动地图; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * "moveend":移动地图结束;"postrender":渲染地图后;"pointerdrag":拖动指针时;"mousemove":移动指针时 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {function} callback 操作事件触发时调用的函数,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	once(eventName, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (eventName == "mousemove") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			eventName = "pointermove" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (eventName == "load") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			eventName = "postrender" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.map.once(eventName, callback) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @description 取消地图绑定事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {Strig} eventName 地图操作事件类型,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * "click":单击地图,双击将触发两次;"singleclick":单击地图;"dblclick":双击地图;"movestart":开始移动地图; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * "moveend":移动地图结束;"postrender":渲染地图后;"pointerdrag":拖动指针时;"mousemove":移动指针时 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param {function} callback 操作事件触发时调用的函数,必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @memberof Map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	off(eventName, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (eventName == "mousemove") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			eventName = "pointermove" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (eventName == "load") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			eventName = "postrender" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.map.un(eventName, callback) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setMarkerLayerZoomInfo(minZoom, maxZoom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.markerLayer.setMaxZoom(maxZoom); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.markerLayer.setMinZoom(minZoom); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setPolylineLayerZoomInfo(minZoom, maxZoom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.polylineLayer.setMaxZoom(maxZoom); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.polylineLayer.setMinZoom(minZoom); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	setPolygonLayerZoomInfo(minZoom, maxZoom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.polygonLayer.setMaxZoom(maxZoom); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.polygonLayer.setMinZoom(minZoom); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default Map 
			 |