高德地图 爬坑之旅

这一节主要是针对高德地图的定位来说,我的需求是利用高德地图来做详细的定位,那么因为它的定位是异步执行,并且定位成功后 做回调,这里我就在想,把数据拿出来,做全局共享。

因为是第一次接触,所以我傻乎乎的直接利用块作用域去取值,结果就是,在值还没有取回来之前,函数已经执行完毕,导致后面的数据并没有被返回,为此我为这个问题纠结了2个小时,在朋友的提示下,

异步

对的,异步,那么我尝试使用Promse来包容它的运行,然后在需要用到它的时候配合async/await来等待它完成取值,不言而喻。

完美解决了我取值的要求



export function Map(AMap){
  return new Promise((resolve,rejects) => {
    var map = new AMap.Map('container', {
      resizeEnable: true
    })
    map.plugin('AMap.Geolocation', function() {
      var geolocation = new AMap.Geolocation({
        // 是否使用高精度定位,默认:true
        enableHighAccuracy: true,
        // 设置定位超时时间,默认:无穷大
        timeout: 10000,
        // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
        buttonOffset: new AMap.Pixel(10, 20),
        //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
        zoomToAccuracy: true,     
        //  定位按钮的排放位置,  RB表示右下
        buttonPosition: 'RB'
      })
    
      geolocation.getCurrentPosition()
      AMap.event.addListener(geolocation, 'complete', onComplete)
      AMap.event.addListener(geolocation, 'error', onError)
    
    })
    function onComplete (data) {
      // data是具体的定位信息
      resolve(data);
    }
  
    function onError (data) {
      // 定位出错
      rejects(data);
    }

  })
}

使用


import {Map} from '../map/map';
 
 site = async () => {
    try {
      let result = await Map(window.AMap);
      console.log(result);
    } catch(err) {
      console.log(err);
    }
  }

 

获得完美的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高德地图是一款非常常用的地图应用程序,它提供了丰富的地理信息数据,包括POI(兴趣点)数据。然而,高德地图对于虫有一些限制。 首先,高德地图对于取其POI数据设置了一些访问频率限制。如果虫以非常快速的速度进行请求,高德地图的服务器可能会判定该请求为异常行为,然后返回错误信息或者封禁对应的IP地址。因此,虫在进行数据取时,需要遵循高德地图的访问频率限制,合理控制请求的速度,以避免触发这些限制。 其次,高德地图对于POI数据的取进行了一定的隐私保护。某些敏感数据,如用户个人信息或者商家的详细信息,高德地图可能不会提供。这是为了保护用户的隐私和商家的利益。因此,虫在获取高德地图上的POI数据时,需要注意遵守相关法律法规和隐私保护的原则,不应获取和使用与隐私相关的信息。 最后,高德地图有可能对外部虫进行技术限制。高德地图的服务器可能会针对虫的请求进行一些技术层面的限制,如验证机制、反虫策略等。因此,虫在进行高德地图POI数据的取时,需要了解高德地图的相关规则,并选择适当的技术手段,以确保可以正常获取数据。 总而言之,高德地图对于虫的POI数据进行了一些访问限制和隐私保护,虫需要遵守高德地图的相关规则,并合理控制访问频率,确保数据获取的合法性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值