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); });
  • 相关阅读:
    STM32 HAL库学习笔记
    嵌入式Linux学习笔记
    AVR_Interrupt
    shutdown命令用法
    ULINK2 USB电脑无法识别(连接电脑后,设备管理器显示未知设备)
    MDK中编译程序后Program Size详解
    Keil(MDK-ARM)系列教程(三)_工程目标选项配置(Ⅰ)
    第48章 MDK的编译过程及文件类型全解
    Do not access Object.prototype method ‘hasOwnProperty’ from target object no-prototype-builtins
    让vscode按照eslint进行格式化
  • 原文地址:https://www.cnblogs.com/TreeCTJ/p/13215710.html
Copyright © 2011-2022 走看看