import AMapLoader from '@amap/amap-jsapi-loader' var mapInitDone = false var onMapMountedEvents = [] var AMap // 地图对象 var map // 卫星图层 var satellite // 鼠标绘图 var mouseTool // 3D图层 var object3Dlayer // 地图拖动状态 var isDragging = false // 地图加载完成触发 function onMapMounted(...events) { if (mapInitDone) { events.forEach((e) => { e() }) } else { onMapMountedEvents = onMapMountedEvents.concat(events) } } function createMap(id) { AMapLoader.load({ key: '520c5e5cf44c7793104e500cbf0ed711', // 申请好的Web端开发者Key,首次调用 load 时必填 version: '2.0', // 指定要加载的 JS API 的版本,缺省时默认为 1.4.15 // 需要使用的的插件列表,如比例尺'AMap.Scale'等 plugins: [ 'AMap.ElasticMarker', 'AMap.ControlBar', 'AMap.ToolBar', 'AMap.Scale', 'AMap.DistrictSearch', // 'AMap.DragRoute', // 'AMap.MouseTool', // 'AMap.PolygonEditor' ], }) .then((_AMap) => { AMap = _AMap _initMap(id) mapInitDone = true onMapMountedEvents.forEach((e) => { e() }) onMapMountedEvents = [] console.log('-------------------map init done') }) .catch((e) => { console.log(e) }) } function destroyMap() { map?.destroy() map = null mapInitDone = false } function _initMap(elementId) { map = new AMap.Map(elementId, { // mapStyle: 'amap://styles/e1e78509de64ddcd2efb4cb34c6fae2a', features: ['bg', 'road'], pitch: 0, // 地图俯仰角度,有效范围 0 度- 83 度 viewMode: '3D', // 地图模式 resizeEnable: true, center: [121.6039283, 31.25295567], zooms: [2, 26], zoom: 11, }) // map = new AMap.Map(elementId); // 添加卫星地图 satellite = new AMap.TileLayer.Satellite() // const roadNet = new AMap.TileLayer.RoadNet() satellite.hide() map.add([satellite]) // _initMouseTool(); // _init3DLayer(); // _initDragEvent(); } // 鼠标绘图初始化 function _initMouseTool() { mouseTool = new AMap.MouseTool(map) } // 3D图层初始化 function _init3DLayer() { object3Dlayer = new AMap.Object3DLayer() map.add(object3Dlayer) } // 设置地图拖拽监听事件 function _initDragEvent() { let dragEndEvent map.on('dragstart', () => { clearTimeout(dragEndEvent) isDragging = true }) map.on('dragend', function () { dragEndEvent = setTimeout(() => { isDragging = false }, 8000) }) } export { createMap, destroyMap, onMapMounted, map, AMap, satellite, mouseTool, object3Dlayer, isDragging, }