翻了挺多教程,都是给下面的 url,通过快捷指令,来直接实现目的地的导航。
iosamap://navi?sourceApplication=applicationName&poiname=fangheng&poiid=BGVIS&lat=36.547901&lon=104.258354&dev=1&style=2
但我从高德拾取的经纬度直接套回去,却出现了位置的偏移。
(拾取经纬度 https://lbs.amap.com/console/show/picker )
◡ ヽ(`Д´)ノ ┻━┻ 自己一点一点改了若干位的小数点,最后试到了想要的接近位置。
但刚刚突然睡醒的我,在想为啥偷懒没看每个参数是干什么的……
就去看了下开发指南,发现 dev 指示了“国测加密”。
(开发指南: https://developer.amap.com/api/amap-mobile/guide/ios/navi )
把 1 改为 0 后,通过拾取器获得的经纬度就不会出现那个“偏移”。
╭(°A°`)╮ 可为啥经历了这一步偏移……? 使用谷歌或 CarPlay 的时候,偏移会不会也是受了这个影响?
1
wd 2021-03-25 06:10:08 +08:00 via iPhone
因为坐标其实有几个标准,可以搜搜火星坐标系..
|
2
gavindexu OP @wd #1 有搜到这个坐标系。
但在高德拾取的坐标,用来导航的时候还配置国测加密为 1,那是不是经过了 2 次偏移? |
3
imtyz001 2021-03-25 09:22:22 +08:00
@gavindexu 我感觉是这样的:
设某地 WGS84 坐标(x,y) GCJ02 坐标为(x1,y1) 通过高的拾取的坐标应该已经是 GCJ02 坐标了(即(x1,y1)) 所以传入参数的时候应该是(x1,y1,dev=1) iPhone 指南针上的经纬度应该是 WGS84, 可以测试一下用这个坐标搭配 dev=0 |
4
imtyz001 2021-03-25 09:27:56 +08:00
#3 最后两行说反了, dev=0:lat 和 lon 是已经加密后的,不需要国测加密; dev=1:需要国测加密
所以传入参数的时候应该是(x1,y1,dev=0) iPhone 指南针上的经纬度应该是 WGS84, 可以测试一下用这个坐标搭配 dev=1 |
6
gavindexu OP |
7
imtyz001 2021-03-25 10:00:34 +08:00
我自己测试了一下
iPhone 指南针上显示的 WGS84 经纬度(x,y)搭配参数 dev=1 和(x,y)通过转换工具( https://tool.lu/coordinate/) 后生成的 GCJ02 经纬度(x1,y1)搭配参数 dev=0 导航效果是一样的 |
8
imtyz001 2021-03-25 10:03:59 +08:00
我感觉这个手册的示例没什么大问题 因为 iOS 上通过 CLLocationCoordinate2D( https://developer.apple.com/documentation/corelocation/cllocationcoordinate2d)获取定位信息时,获取的经纬度坐标系是 WGS84 地球坐标
|