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: 'c55f27799afbfa69dc5a3fad90cafe51', // 申请好的Web端开发者Key,首次调用 load 时必填 version: '2.0', // 指定要加载的 JS API 的版本,缺省时默认为 1.4.15 plugins: [ 'Map3D', 'ElasticMarker', 'AMap.ControlBar', 'AMap.ToolBar', 'AMap.Scale', 'AMap.DragRoute', 'AMap.MouseTool', 'AMap.PolygonEditor' ] // 需要使用的的插件列表,如比例尺'AMap.Scale'等 }) .then((_AMap) => { AMap = _AMap _initMap(id) mapInitDone = true onMapMountedEvents.forEach((e) => { e() }) onMapMountedEvents = [] }) .catch((e) => { console.log(e) }) } function _initMap(elementId) { map = new AMap.Map(elementId, { rotateEnable: true, pitchEnable: true, alwaysRender: false, showLabel: true, showBuildingBlock: true, mapStyle: 'amap://styles/e1e78509de64ddcd2efb4cb34c6fae2a', features: ['bg', 'road'], pitch: 0, // 地图俯仰角度,有效范围 0 度- 83 度 viewMode: '3D', // 地图模式 resizeEnable: true, center: [121.603928, 31.252955], zooms: [3, 18], zoom: 14 }) // 添加卫星地图 satellite = new AMap.TileLayer.Satellite() 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, onMapMounted, map, AMap, mouseTool, object3Dlayer, isDragging }