腾讯地图的使用

JavaScript017

腾讯地图的使用,第1张

1.ak名,ak

我的-android

UYMBZ-GFZ3G-GZOQX-IPVIH-IMQTF-EAFKD

2.public/index.html

<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=UYMBZ-GFZ3G-GZOQX-IPVIH-IMQTF-EAFKD"></script>

<script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>

3.使用的页面:

<template>

  <div>

    <div id="container"></div>

    <div>

      经:

      <input type="text" ref="j" />

    </div>

    <div>

      纬:

      <input type="text" ref="w" />

    </div>

    <div>

      缩放级别:

      <input type="text" ref="z" />

    </div>

  </div>

</template>

script:

mounted(){

  var qq = window.qq

    var _this = this

    var map = new qq.maps.Map(document.getElementById("container"), {

      center: new qq.maps.LatLng(37.80789920419703, 112.56275080159814), // 地图的中心地理坐标

      zoom: 18, // 地图缩放级别

      mapStyleId: "style1" // 该key绑定的style1对应于经典地图样式,若未绑定将弹出无权限提示窗

    })

    var geolocation = new qq.maps.Geolocation(

      "UYMBZ-GFZ3G-GZOQX-IPVIH-IMQTF-EAFKD", //ak,ak名

      "我的-android"

    )

    geolocation.getLocation(showPosition, () =>{

      console.log("获取位置失败,如果是PC,请设置模拟器,Sensors,more tools>more")

    })

    function showPosition(position) { //成功后的回调

      console.log(position)

      var lnglat = new qq.maps.LatLng(position.lat, position.lng)

      map.setCenter(lnglat)//成功后根据经纬度设置中心点

      map.setZoom(10)//设置缩放级别

      var marker = new qq.maps.Marker({

        //设置Marker的位置坐标

        position: lnglat,

        //设置显示Marker的地图

        map: map

      })

      //设置Marker是否可以被拖拽,为true时可拖拽,false时不可拖拽,默认属性为false

      marker.setDraggable(true)

      //设置Marker停止拖动事件

      qq.maps.event.addListener(marker, "dragend", function() {

        var position = marker.getPosition()

        var zoom = map.getZoom()

        console.log(position, zoom)

        _this.$refs.j.value = position.lng//分别把拖动后显示的位置赋值给经纬度,缩放级别

        _this.$refs.w.value = position.lat

        _this.$refs.z.value = zoom

        //https://lbs.qq.com/javascript_v2/doc/geocoder.html

        //地址和经纬度之间进行转换服务

        var geocoder = new qq.maps.Geocoder()

        //对指定经纬度进行解析

        geocoder.getAddress(position)

        //设置服务请求成功的回调函数

        geocoder.setComplete(function(result) {

          console.log(result.detail)      //拖动停止后返回的详细地址

        })

      })

    }

}

----------------------------------------------------------------

//只获取定位的情况下:

  var qq = window.qq

    var _this = this

    var geolocation = new qq.maps.Geolocation(

      "UYMBZ-GFZ3G-GZOQX-IPVIH-IMQTF-EAFKD", //ak,ak名

      "我的-android"

    )

    geolocation.getLocation((position)=>{

      _this.$refs.dw.innerHTML=position.city//成功时赋值

    }, () =>{

      console.log("获取位置失败,如果是PC,请设置模拟器,Sensors,more tools>more")

    })

--------------------------------------------------------------------

<style scoped lang="scss">

#container {

  min-width: 100%

  min-height: 300px

}

</style>

遇到了同样的问题,腾讯地图的js地址解析只是解析到了门牌号,就忽略了后面的详细地址,可能出现极大偏差,中国很多地方的街道门牌号只是代表一块区域,并非特指某一个具体的大厦地址,已经提交工单到腾讯地图还没处理,这个问题得不到处理,估计很多使用到该功能的开发者会去寻找其他替代品了。使用百度地图的解析倒不会出现此问题,后期可能会转移到百度地图。