ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

百度地图定位

2020-04-23 17:55:38  阅读:298  来源: 互联网

标签:定位 geolocation point 地图 map BMap var new 百度



在Vue2.0里,不要用 import BMap from 'BMap' 

class Geolocation {

  constructor() {
    this.cityName = ''
    this.address = ''
  }

  /**
   * 浏览器定位
   */
  getGeolocation(callback) {
    try{
      let self = this
      var map = new BMap.Map("allmap")
      var point = new BMap.Point(116.331398,39.897445)
      map.centerAndZoom(point,12)
      var geolocation = new BMap.Geolocation();
      geolocation.getCurrentPosition(function(r){
        if(this.getStatus() == BMAP_STATUS_SUCCESS){
          var mk = new BMap.Marker(r.point)
          map.addOverlay(mk)
          map.panTo(r.point)
          Toast('您的位置:'+r.point.lng+','+ r.point.lat);
          var gc = new BMap.Geocoder();
          let addressReal = gc.getLocation(r.point, (rs)=>{
            var addComp = rs.addressComponents;
            var address =  addComp.province + ' ' + addComp.city + ' ' + addComp.district;
            callback(address)
            return address
          });
        }
        else {
          Toast('浏览器定位失败')
          self.getSDK()
        }
      })
    } catch (e) {
      console.log(e)
    }
  }
  /**
   * 辅助百度SDK定位
   */
  getSDK() {
    var map = new BMap.Map("allmap")
    var point = new BMap.Point(116.331398,39.897445)
    map.centerAndZoom(point,12)
    var geolocation = new BMap.Geolocation()
    // 开启SDK辅助定位
    geolocation.enableSDKLocation()
    geolocation.getCurrentPosition(function(r){
      if(this.getStatus() == BMAP_STATUS_SUCCESS){
        var mk = new BMap.Marker(r.point)
        map.addOverlay(mk)
        map.panTo(r.point)
        Toast('您的位置:'+r.point.lng+','+r.point.lat)
      }
      else {
        Toast('百度地图定位失败')
      }
    });
  }
  /**
   * IP 定位
   */
  getIP() {
    try {
      let promise = new Promise((resolve, reject) => {
        var map = new BMap.Map("allmap")
        var point = new BMap.Point(116.331398,39.897445)
        map.centerAndZoom(point,12)

        function myFun(result){
          var cityName = result.name
          map.setCenter(cityName)
          resolve(result)
          // Toast("当前定位城市:"+ cityName)
        }
        var myCity = new BMap.LocalCity()
        myCity.get(myFun)
      })
      return promise
    } catch(e) {
      Toast('IP定位失败')
      return null
    }
  }

}

export default Geolocation
调用:
     let geolocation = new Geolocation();
     geolocation.getGeolocation((res) => {
            console.log(res)   //拿到地址
     });    

 

   

标签:定位,geolocation,point,地图,map,BMap,var,new,百度
来源: https://www.cnblogs.com/init00/p/12762477.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有