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];
一切正常
我正在尝试将 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];
一切正常