1. 程式人生 > 實用技巧 >vue實現座標拾取器功能demo

vue實現座標拾取器功能demo

需求

1、搜尋具體地址,自動填寫經緯度,並在地圖上標記

2、點選地圖上一點,可重新填寫經緯度並且標記

程式碼

  • 在dom新建div渲染地圖
<el-form-item label="店鋪地址" prop="address">
  <el-input v-model="fristForm.address"></el-input>
  <el-input
    class="long-lat"
    v-model="fristForm.longitude"
    placeholder="經度"
  ></el-input>
  <el-input
    class="long-lat"
    v-model="fristForm.latitude"
    placeholder="緯度"
  ></el-input>
  <el-button size="mini" type="primary" @click="searchKeyword"
    >搜尋</el-button
  >
</el-form-item>
<span class="changeAddress">點選地圖更換分店定位地址</span>
<!-- 渲染地圖的div容器 -->
<div id="container" class="mapbox"></div>
  • js定義地圖變數並設定需求
var searchService,geocoder,map,markersArray = [];
<script>
export default {
    mounted() {
      this.init();
    },
    methods:{
        init() {
          var that = this;
          var center = new qq.maps.LatLng(39.916527, 116.397128);
          var map = new qq.maps.Map(document.getElementById("container"), {
            center: center,
            zoom: 13
          });
          var latlngBounds = new qq.maps.LatLngBounds();
          qq.maps.event.addListener(map, "click", function(event) {
            console.log(event);
            that.fristForm.longitude = event.latLng.getLng(); // 經度
            that.fristForm.latitude = event.latLng.getLat(); // 緯度

            if (markersArray) {
              for (let i in markersArray) {
                markersArray[i].setMap(null);
              }
            }
            var marker = new qq.maps.Marker({
              map: map,
              position: event.latLng
            });
            markersArray.push(marker);
          });

          geocoder = new qq.maps.Geocoder({
            complete: function(result) {
              console.log(result);
              that.fristForm.longitude = result.detail.location.lng;
              that.fristForm.latitude = result.detail.location.lat;
              map.setCenter(result.detail.location);
              var marker = new qq.maps.Marker({
                map: map,
                position: result.detail.location
              });
              markersArray.push(marker);
            }
          });
        },
    },
    // 搜尋地址
    searchKeyword() {
      var keyword = this.fristForm.address;
      this.clearOverlays(markersArray);
      //根據輸入的城市設定搜尋範圍
      // searchService.setLocation("北京");
      //根據輸入的關鍵字在搜尋範圍內檢索
      if (keyword) {
        // searchService.search(keyword);
        geocoder.getLocation(keyword);
      } else {
        alert("請輸入地址");
      }
    },
}
</script>

文件參考

以上程式碼使用的是jsapi功能,目前對應功能已升級JavaScript API GL,地址解析功能可直接調取介面使用,歡迎大家體驗!

地址解析(地址轉座標)

JavaScript API GL參考手冊

作者:houqq

連結:https://segmentfault.com/a/1190000022211912

來源:segmentfault

著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。