请教一下 MKMapView 的问题

2021-03-16 10:51:31 +08:00
 szuhwz

以下是获取用户定位的 Delegate

extension MapViewController: CLLocationManagerDelegate {
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        if let location = locations.first{
            let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
            let span = MKCoordinateSpan(latitudeDelta: 0.075, longitudeDelta: 0.075)
            let region = MKCoordinateRegion(center: center, span: span)
            self.mapView.setRegion(mapView.regionThatFits(region), animated: false)
            locationManager.stopUpdatingLocation()
        }
    }
}

MKCoordinateSpan 的 latitudeDelta 和 longitudeDelta 数值越小地图的放大系数应该越高,但是有个问题就是用户定位(小蓝点)无法居中,并且放大系数越大,偏移量越大,如下图所示,请问一下大家有什么好的办法解决这个问题?

1843 次点击
所在节点    iDev
5 条回复
leon0918
2021-03-16 11:06:46 +08:00
看着不是地图中间点,用绝对中间点。另外,看看你的地图的范围,有没有被遮盖的部分。
xoioao
2021-03-16 15:47:45 +08:00
CLLocationManager 获取到的是原始 GPS 坐标( WGS-84 ),国内使用的话,转成国测局坐标(也就是常说的火星坐标)后再赋值使用。
szuhwz
2021-03-18 10:20:41 +08:00
@leon0918 谢谢回复
szuhwz
2021-03-18 10:21:02 +08:00
@xoioao 好像是这个问题 感谢
loveuqian
2021-04-14 15:01:52 +08:00
好家伙,打开图片,我还以为我的黑苹果竟然有定位功能了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/762013

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX