我的项目中须要加载地图, 抉择应用高徳地图(更易懂易用稳固些)
1.首先须要在高徳地图官网申请一个开发者账号 失去一个key
2.在vue2 的index.html 中加载高徳js库
//AMap <script src="https://webapi.amap.com/maps?v=1.4.8&key=caaa086bdf5666322fba3baf5a6a2c03&plugin=AMap.DistrictSearch"></script>// AMapUI<script src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
3.在webpack.base.config.js 中内部库选项中引入
externals: { "AMap":"window.AMap", "AMapUI":"window.AMapUI", },
4.后果是这样的
5.开始你的地图代码了
<!-- 地图 --> <div class="flex"> <div style="width:80%; height:450px;border:1px solid #dcdcdc" id="map_container"> <!-- 地图显示区 --> </div> <div style="width:20%" class="flex-column margin-left-10"> <div id="searchBar"> <input id="keyword" placeholder="请输出关键字" style="width:276px;height:30px;" /> </div> <div id="searchResults"> <!-- 后果搜寻区 --> </div> </div> </div>
在mounted() 中初始化加载initMap
async initMap(){ this.map = await new AMap.Map('map_container', { resizeEnable: true }) this.map.plugin(["AMap.ToolBar"],()=> { //设置位置标记为自定义标记 let toolBar = new AMap.ToolBar(); this.map.addControl(toolBar); }); //这是map上减少的图层 AMapUI.loadUI(['misc/PoiPicker'], (PoiPicker)=>{ this.poiPicker = new PoiPicker({ input: 'keyword', //搜寻关键词id placeSearchOptions: { map: this.map, pageSize: 5 }, searchResultsContainer: 'searchResults' //搜寻后果区 }) //地图上减少信息窗体 this.infoWindow = new AMap.InfoWindow({ isCustom:true, offset: new AMap.Pixel(0, -20), content: this.$refs.lbsInfoComponent.$el, //窗体内容,应用vue 组件 }) //选中搜寻后果事件 this.poiPicker.on('poiPicked', (poiResult) =>{ this.poiPicker.hideSearchResults() let source = poiResult.source let poi = poiResult.item let info = { source: source, id: poi.id, name: poi.name, location: poi.location.toString(), address: poi.address } this.infoWindow.setMap(this.map) this.infoWindow.setPosition(poi.location) this.$refs.lbsInfoComponent.initialize(info, this.lbsDistance) if (source !== 'search') { this.poiPicker.searchByKeyword(poi.name) } else { } }) }) //行政区划查问 let opts = { subdistrict: 1, //返回下一级行政区 showbiz:false //最初一级返回街道信息 } this.district = new AMap.DistrictSearch(opts) this.district.search('中国', (status, result)=>{ if(status=='complete'){ this.getData(result.districtList[0]) //加载省份 } }) },getData(data) { let bounds = data.boundaries if (bounds) { for (let bound of bounds) { let polygon = new AMap.Polygon({ map: this.map, strokeWeight: 1, strokeColor: '#CC66CC', fillColor: '#CCF3FF', fillOpacity: 0.5, path: bound }) this.polygons.push(polygon) } this.map.setFitView()//地图自适应 } let level = "" let curList = [] if(data.districtList){ for(let item of data.districtList){ level = item.level curList.push({name: item.name, center:item.center, adcode: item.adcode, cityCode: item.cityCode, level:item.level}) } } if(level === "province"){ this.provinces = curList } else if(level === "city"){ this.cities = curList } else if(level === "district"){ this.districts = curList } else if(level === "street"){ this.streets = curList } },