根据CoreLocation返回的数据在map view上标出大头针,但为什么总是与地图显示的userlocation有一段距离

发布于 2022-09-02 10:16:20 字数 601 浏览 9 评论 0

我用了CoreLocation获取经纬度,在收到经纬度数据后使用下面的代码配置地图:

var Map = MKMapView()
let Center = CLLocationCoordinate2D(纬度数据, 精度数据)
let Span = MKCoordinateSpanMake(0.02, 0.02)
let annotation = MKPointAnnotation()
annotation.coordinate = Center
annotation.title = "当前位置"
Map.showsUserLocation = true
Map.region = MKCoordinateRegionMake(Center, Span)
Map.addAnnotation(annotation)

图片描述

为啥会差这么一点呢?mapview不也是用CoreLocation的数据吗?但是如我我吧经纬度数据复制出来,放到OS X的地图应用里面搜索,却能得到我当前的位置。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

静谧幽蓝 2022-09-09 10:16:20

1、 GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。我们国家是不允许使用wgs-84的,原因好像是为了保密

2、 GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。
3、 其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系就根据每个公司的不同,坐标体系都不一样了。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。
所以你的mpview的话,应该是百度地图的坐标肯定有偏差的

年华零落成诗 2022-09-09 10:16:20

CoreLocation 的坐标在国内有一定偏移,貌似是为了国家安全什么的。但有近似的修正算法。你搜一下『火星坐标』之类的。

酒与心事 2022-09-09 10:16:20

用CoreLocation拿到的坐标是wgs84坐标,而国内的坐标系统采用的是国测局坐标,需要采用一个算法进行坐标转换,网上有相应的转换算法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文