在 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)?

在 macOS/Cocoa 应用程序中启动 GCDWebServer 会冻结应用程序

MacOS应用cocoa application问题

MacOS 上的 Qt/Cocoa - 移除进度条动画

如何允许用户将文件拖出 Cocoa 应用程序

我如何在 Cocoa 中获取应用程序菜单