在 Cocoa macOS 应用程序中,如何获取 MKMapView 左下角的度数坐标?
Posted
技术标签:
【中文标题】在 Cocoa macOS 应用程序中,如何获取 MKMapView 左下角的度数坐标?【英文标题】:In a Cocoa macOS App, how can I get the degree coordinates of the bottom left corner of a MKMapView? 【发布时间】:2018-09-20 14:22:40 【问题描述】:我在 Objective-C 中为 macOS 开发了一个应用程序,我在主窗口中有一个 MKMapView。当我单击一个按钮时,我想计算可见地图左下角和右上角的度坐标。我知道 MKMapView 有一个 visibleRect 属性,所以我的代码是:
- (IBAction)userDidPressConvertButton:(id)sender
MKMapRect mapRect = self.mapView.visibleMapRect;
CLLocationCoordinate2D coordinates = MKCoordinateForMapPoint(mapRect.origin);
NSLog(@"Latitude %f Longitude: %f", coordinates.latitude, coordinates.longitude);
NSLog(@"size width = %f, size height = %f",mapRect.size.width,mapRect.size.height);
根据文档,该属性的类型为 MKMapRect。我已经确定它的 origin 成员指向可见 Rect 的左上角。我的问题是,虽然有 MKCoordinateForMapPoint 函数可以转换为 MKMapPoint 成员原点的坐标,但 size 成员的宽度和高度没有转换为度数坐标的函数,并且不以度数表示,但是,根据文档,在地图点。如何获取当前可见地图左下角和右上角的度数坐标?
非常感谢任何帮助,谢谢
【问题讨论】:
【参考方案1】:我已经成功地找到了从左下角到右上角的可见地图矩形坐标,在地图的可见矩形上调用 MKCoordinateRegionForMapRect。这是我的代码:
- (IBAction)userDidPressFillCoordinates:(id)sender
MKMapRect mapRect = self.mapView.visibleMapRect;
CLLocationCoordinate2D coordinates = MKCoordinateForMapPoint(mapRect.origin);
NSLog(@"Latitude %f Longitude: %f", coordinates.latitude, coordinates.longitude);
NSLog(@"size width = %f, size height = %f",mapRect.size.width,mapRect.size.height);
NSLog(@"%@",MKStringFromMapRect(mapRect));
MKCoordinateRegion region = MKCoordinateRegionForMapRect(mapRect);
CLLocationCoordinate2D center = region.center;
MKCoordinateSpan span = region.span;
CLLocationCoordinate2D topRightCoordinates = coordinates;
coordinates.latitude -= span.latitudeDelta;
topRightCoordinates.longitude += span.longitudeDelta;
self.coordinatesString = [NSString stringWithFormat:@"%f,%f,%f,%f",coordinates.longitude,coordinates.latitude,topRightCoordinates.longitude,topRightCoordinates.latitude];
【讨论】:
以上是关于在 Cocoa macOS 应用程序中,如何获取 MKMapView 左下角的度数坐标?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Cocoa MacOS Webview 中显示简单的文本消息(toasts/alerts)?