代码之家  ›  专栏  ›  技术社区  ›  Alfonso Tesauro

在CocoaMacOS应用程序中,如何获取mkmapview左下角的度数坐标?

  •  1
  • Alfonso Tesauro  · 技术社区  · 6 年前

    我在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。我已经确定它的原始成员指向可见矩形的左上角。我的问题是,虽然存在转换为mkmappoint成员原点坐标的mkcoordinateformappoint函数,但大小成员的宽度和高度没有转换为度数坐标的函数,也没有以度数表示,但根据文档,是以映射点表示的。如何获取当前可见地图左下角和右上角的度数坐标?

    非常感谢您的帮助,谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Alfonso Tesauro    6 年前

    我已经成功地从左下角到右上角找到了可见的地图矩形坐标,调用了地图可见矩形上的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];
    
    
    }