①注册高德地图开发者api ②创建项目获取key ③在publice下index.html引入
<script type="text/javascript" src="https://webapi.amap.com/maps?v="key"></script>④创建idnex.vue
<template> <div> <div> <span>搜索:</span> <input type="text" id="keyword" value="请输入关键字:(选定后搜索)" onfocus="this.value=''" /> </div> <div id="mapContainer"></div> <div> <span>定位:</span> <input type="text" v-model="selectAddress" /> </div> <div> <span>经纬度:</span> <input type="text" v-model="selectLngLat" /> </div> </div> </template> <script> export default { name: "index", data() { return { cityLocation: "", lnglat: [116.397428, 39.90923], zoom: 11, selectAddress: "", selectLngLat: "", }; }, created() {}, mounted() { this.searchAddressMethod(); }, methods: { searchAddressMethod() { const self = this; AMap.plugin( [ "AMap.CitySearch", "AMap.Autocomplete", "AMap.PlaceSearch", "AMap.Geocoder", "AMap.ToolBar", ], function () { var citySearch = new AMap.CitySearch(); var map; // 搜索插件 var placeSearch; // 城市定位 begin citySearch.getLocalCity(function (status, result) { if (status === "complete" && result.info === "OK") { // 查询成功,result即为当前所在城市信息 // console.log(result); let rectangle = result.rectangle.split(";")[1].split(","); self.lnglat = rectangle.map(Number); // 初始化地图 begin map = new AMap.Map("mapContainer", { resizeEnable: true, // center: self.lnglat,//地图中心点 zoom: self.zoom, //地图显示的缩放级别 keyboardEnable: false, }); map.addControl(new AMap.ToolBar()); // 初始化地图 end // 绑定点击事件 begin let marker, geocoder; AMap.event.addListener(map, "click", function (e) { console.log(e); // 创建标记 begin if (marker != null) { marker.setMap(null); } marker = new AMap.Marker({ icon: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png", position: e.lnglat, offset: new AMap.Pixel(-13, -30), }); marker.setMap(map); // 创建标记 end // 解析位置 begin // 获取经纬度 self.selectLngLat = e.lnglat.lat + "," + e.lnglat.lng; if (!geocoder) { geocoder = new AMap.Geocoder({ // city: "010", //城市设为北京,默认:“全国” radius: 1000, //范围,默认:500 }); } geocoder.getAddress(e.lnglat, function (status, result) { if (status === "complete" && result.regeocode) { // console.log(result); //地址 var address = result.regeocode.formattedAddress; // console.log(address); self.selectAddress = address; } else { log.error("根据经纬度查询地址失败"); } }); // 解析位置 end }); // 绑定点击事件 end } }); // 城市定位 end // 搜索联想提示 begin var autoOptions = { input: "keyword", //使用联想输入的input的id }; var autocomplete = new AMap.Autocomplete(autoOptions); AMap.event.addListener(autocomplete, "select", function (e) { //TODO 针对选中的poi实现自己的功能 console.log(e); placeSearch = new AMap.PlaceSearch({ map: map, }); // placeSearch.search(e.poi.name); }); // 搜索联想提示 end } ); }, }, }; </script> <style scoped> input { width: 300px; height: 25px; padding-left: 10px; margin: 20px 0; } #mapContainer { width: 70vw; height: 50vh; } #mapContainer img { width: 20px; } </style>