Laya 版本 : 1.7.18
TypeScript : 5.6.0
关于定位
Laya引擎已经很友好的集成了定位服务,因此一般情况下不需要其他第三方的地图服务,另外值得注意的一点是Laya的定位服务底层是使用的高德地图服务,开发时需要考虑兼容性问题。
如何获取当前经纬度
先贴出核心代码,在慢慢介绍:
import Handler = Laya.Handler;
class LoacltionTool{
public getCurPosition (onSucces : Handler , onErro : Handler){
if (Laya.Geolocation.supported)
{
Laya.Geolocation.enableHighAccuracy = true;
Laya.Geolocation.getCurrentPosition(onSucces, onErro);
}
else
{
console.error("[LoacltionTool]浏览器不支持使用HTML5来获取地理位置服务");
onErro.run();
}
}
}
该工具类作用是获取当前的精确位置并返回其经纬度,当定位失败或错误时会执行onErro回调反之执行onSucces回调。
Laya.Geolocation介绍
Laya.Geolocation是官网提供的定位API,其中会用到几个关键方法,如下
- Laya.Geolocation.supported : 判断定位服务是否可用
- Laya.Geolocation.enableHighAccuracy : 是否启用高精度模式,默认关闭,如果启动会增加定位时长同时更加耗电
- Laya.Geolocation.getCurrentPosition(onSucces, onErro) :获取当前位置,需分别传入成功和失败的回调Handler。
以上就是常用的几个核心方法,还需要了解其他请前往官网API查看Laya.Geolocation类。
定位回调
成功回调需要注意 其回调参数类型是 Laya.GeolocationInfo
其中longitude表示经度,latitude表示纬度,坐标格式是原始坐标
如果需要将经纬度调用在其他第三方地图服务中,请先进行坐标转换
示例代码
代码使用了上文中的工具类
new LoacltionTool().getCurPosition(
Handler.create(this , (pos)=>{
alert("定位成功: " + pos.longitude.toString() + "," +pos.latitude.toString());
}),
Handler.create(this , (err)=>{
alert("定位失败: " + err);
}));
如有错误请指正,如有帮助请点赞!