Android Kotlin调用Mapbox flyTo时相机定位至错误位置问题
问题根因
Point.fromLngLat() 方法的参数顺序传反了。该方法固定要求第一个入参为经度(longitude),第二个入参为纬度(latitude),你的代码中把location.latitude放在第一个参数位、location.longitude放在第二个参数位,经纬度错位直接导致定位位置完全偏离预期。
葡萄牙的坐标范围大致为西经6°9°、北纬36°42°,传反参数后,相当于把经度设置为北纬30+的数值、纬度设置为西经个位数的数值,对应落点刚好在马达加斯加周边区域,和你描述的异常现象完全匹配。
修正后实现代码
map.flyTo( cameraOptions { // 严格按照经度在前、纬度在后的顺序传参 center(Point.fromLngLat(location.longitude, location.latitude)) }, MapAnimationOptions.mapAnimationOptions { duration(7000) } )
核心使用要点
- Mapbox所有经纬度传参接口统一遵循「经度在前、纬度在后」的规则,不要和日常表述习惯里的“经纬度”(先提纬度、后提经度)顺序混淆
- 除参数顺序外,坐标位置偏移问题还需要额外校验坐标系匹配:Mapbox默认使用WGS84坐标系,直接传入GCJ02(国测局坐标)、BD09(百度坐标)的坐标值也会出现百米到公里级的位置偏移,需要提前做坐标系转换
内容的提问来源于stack exchange,提问作者Afonso Fonseca
相关产品推荐
相关产品推荐

