質問
MapKitで地図の左上と右下の緯度と経度を取得するにはどうすればよいですか?このコードを使用していますが、正しく動作しません。どのように修正すればよいでしょうか?
MKCoordinateRegion region = [map region];
double topL,topG,bottomL,bottomG;
//if latitude=55 and latitudeDelta=126 topL is 118 and it will be not at top, it will be at buttom of screen
topL = region.center.latitude + region.span.latitudeDelta/2;
topG = region.center.longitude - region.span.longitudeDelta/2;
CLLocationCoordinate2D lt;
lt.latitude=topL;
lt.longitude=topG;
annotation = [Annotation new];
annotation.coordinate = lt;
annotation.title = @"Left";
[map addAnnotation:annotation];
[annotation release];
//if latitude=55 and latitudeDelta=126 bottomL is -7.23 and it will be not at bottom, it will be at above bottom of screen
bottomL = region.center.latitude - region.span.latitudeDelta/2;
bottomG = region.center.longitude + region.span.longitudeDelta/2;
CLLocationCoordinate2D rb;
rb.latitude=bottomL;
rb.longitude=bottomG;
annotation = [Annotation new];
annotation.coordinate = rb;
annotation.title = @"Right";
[map addAnnotation:annotation];
[annotation release];
解決
これらの座標を取得する方がはるかに簡単なアプローチ...あなたのビューのポイントを使用して、変換があります:
CLLocationCoordinate2D topLeft, bottomRight;
topLeft = [mapView convertPoint:CGPointMake(0, 0) toCoordinateFromView:mapView];
CGPoint pointBottomRight = CGPointMake(mapView.frame.size.width, mapView.frame.size.height);
bottomRight = [mapView convertPoint:pointBottomRight toCoordinateFromView:mapView];
他のヒント
の拡張機能を作成しました MKMapView
スイフト4.2
extension MKMapView {
func topLeftCoordinate() -> CLLocationCoordinate2D {
return convert(.zero, toCoordinateFrom: self)
}
func bottomRightCoordinate() -> CLLocationCoordinate2D {
return convert(CGPoint(x: frame.width, y: frame.height), toCoordinateFrom: self)
}
}
スイフト2.0
extension MKMapView {
func topLeftCoordinate() -> CLLocationCoordinate2D {
return convertPoint(CGPoint.zero, toCoordinateFromView: self)
}
func bottomRightCoordinate() -> CLLocationCoordinate2D {
return convertPoint(CGPoint(x: frame.width, y: frame.height), toCoordinateFromView: self)
}
}
所属していません StackOverflow