MKMapView - mapView convertCoordinate: toPointToView: returns nan

MKMapView - mapView convertCoordinate: toPointToView: returns nan

我正在尝试将 MKMapview 上的坐标转换为视图内的 cgpoint。

这是我正在做的事情:

    CGPoint point = [map convertCoordinate:coord toPointToView:self.view];
    NSLog(@"lat = %f, lon = %f", coord.latitude, coord.longitude);
    NSLog(@"x = %f, y = %f", point.x, point.y);

我得到的输出是:

lat = 243568961.394369, lon = 165303343.177200 x = nan, y = nan

我已经查看了关于 SO 的其他问题,这似乎是解决问题的正确方法。

希望能帮到你。

编辑

我刚刚意识到正在记录的坐标 (coord) 不是我想要的实际坐标。

我是这样得到这个坐标的:

    CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(tileOverlay.mapRect.origin.x, tileOverlay.mapRect.origin.y);

所以我想问题更多的是从 MKTileOverlay 的 MKMapRect 获取坐标。

好的,所以问题是我试图使用 MKMapPoint 值来创建 CLLocationCoordinate2D。显然,这创建了一个无效坐标。这是我修复它的方法:

    MKMapPoint mp = MKMapPointMake(tileOverlay.mapRect.origin.x, tileOverlay.mapRect.origin.y);

    CLLocationCoordinate2D coord = MKCoordinateForMapPoint(mp);

    CGPoint point = [map convertCoordinate:coord toPointToView:self.view];

一切正常