zoukankan      html  css  js  c++  java
  • vue 腾讯地图webServiceAPI 和 javaScriptAPI GL 选点 (2)

    地图选点 就干两个事儿        一:点击地图 出现marker(具体看自己的需求,我记录的是有且只有一个) 并记录经纬度   二:通过点击地图获取经纬度并且 逆地址解析 (通过经纬度查询出具体地址)

    1、点击地图 出现marker(有且只有一个) 文档中并没有明确说怎么做

          我个人做法是 既然选择是有且只有一个 ,每次点击地图时,先移除所有marker 后 再创建一个marker

     2、在我上篇(1)中的 initMap 函数中加上下面代码可以实现点击地图marker有且只有一个

    var markerFlag = null;
    
    // 创建marker
    function createMarker(latLng) {
            if (!markerFlag) {
              markerFlag = new TMap.MultiMarker({
                id: "marker-layer",
                map: map,
                geometries: [
                  {
                    id: "marker",
                    styleId: "marker",
                    position: latLng
                  }
                ]
              });
            }
          }
    
    
    //移除marker
    function removeMarker() {
                if (markerFlag) {
                    markerFlag.setMap(null);
                    markerFlag = null;
                }
            }
    
    
    map.on("click", ev => {
      console.log(ev) // 可以打印看看,ev.latLng 这个获取的经纬度是已经 new TMap.LatLng(latitude, longitude)  处理过的
      removeMarker()
      createMarker(ev.latLng);
    })

    3、根据点击地图获取经纬度 并进行 逆地址解析  (使用的是WebServiceAPI) 

    // 在methods中写
    
    // 既然marker有且 只有一个 那每次点击地图时获取的经纬度可以 赋值给data里面的 latitude 和 longitude   因为需要经纬度参数
    getAddress() {
          const KEY = "写你自己的key"; //写你自己的key
          let url = "https://apis.map.qq.com/ws/geocoder/v1";
          this.$jsonp(url, {
            key: KEY,
            get_poi: 0,
            output: "jsonp",
            location: `${this.latitude},${this.longitude}` // 经纬度  String类型
          }).then(json => {
            console.log(json)  //这里你就可以看得到请求回来的东西啦   想怎么存取 自己的事儿
    console.log(json.result.formatted_addresses.recommend) }).
    catch(error => { console.log(error) }) } // 在上一步中的 地图点击事件中写 map.on("click", evt => { this.latitude = evt.latLng.lat; this.longitude = evt.latLng.lng this.getAddress() removeMarker() createMarker(evt.latLng); });
  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/TreeCTJ/p/13215710.html
Copyright © 2011-2022 走看看