vue-cli使用高德地图

①注册高德地图开发者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>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值