微信小程序开发可根据 getLocation 获取用户的地理位置信息,包含经纬度、移动速度、海拔信息,也可使用 onLocationChange 实时获取位置。测试了一下,坐标和海拔还是比较准确的。
鉴于部分同学提到坐标误差大的问题:其一,可能是在开发者工具中遇到该问题,原因是电脑中没有gps模块,无法准确获取位置,一般通过ip定位到行政区域;其二,坐标格式没有正确使用,微信提供了两种格式 wgs84 和 gcj02 ,前者是全球GPS系统使用的标准格式,后者是中国测绘局公布的国标,两者定位有一定偏差。这就要求开发者以何种方式获取的坐标,就应以何种方式解析;也可对坐标转换后再解析。
对于用户已授权定位的可直接通过以下方式获取:
对于不确定用户是否已开启定位权限的,应该分两种情况处理:
1、用户从未同意或拒绝授权定位权限的,可直接通过 authorize 发起授权,授权成功后即可获取位置信息。
2、由于微信为了更好的用户体验,当用户第一次放弃授权定位权限后,在此后使用的过程中,不会再向用户发起授权。这就需要引导用户开启定位权限。若 authorize 时提示 authorize:fail ... ,可通过 openSetting 引导用户开启授权,用户授权后即可获取位置信息
实时位置信息同样需要用户授权;
微信提供了 onLocationChange 来监听实时位置信息,需要结合 stopLocationUpdate ( 小程序前台运行时监听 )、 startLocationUpdateBackground ( 小程序前后台运行时监听 ) 使用,如下:
注:实时定位反应稍微慢一点,一般五秒后才能返回新的坐标,原因是多方面的,比如天气、建筑物、数据传输、数据处理等等。
微信小程序支持地理位置定位,可以通过获取用户所在地理位置,来实现小程序相关功能。你可以使用微信小程序API(wx.getLocation)来获取用户的地理位置,然后再根据获取的经纬度,通过百度地图提供的api调取服务,来获取用户具体地址信息。1.在微信小程序中,可以使用wx.getLocation API来获取用户的实时位置信息,但是可能会受到用户当前的移动性的影响,所以可以使用虚拟定位的方式来实现。2.首先,需要在小程序中设置一个按钮来控制用户的虚拟定位,这个按钮可以是一个开关,用户每次点击它就可以切换到不同的位置,可以在小程序中设置一个数组来存储不同的位置信息,比如经纬度、地址等。
3.然后,就可以使用wx.getLocation API来获取用户虚拟定位的位置信息了,API的参数中需要传入一个type参数,表示获取用户的位置信息类型,如果使用虚拟定位,需要将type设置为“gcj02”,这样就可以获取用户虚拟定位的位置信息了。
4.最后,可以使用wx.openLocation API来打开用户虚拟定位的位置,API的参数中需要传入一个latitude和longitude参数,分别表示用户虚拟定位的经纬度,就可以在微信小程序中虚拟定位了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)