Mapkit에서 왼쪽과 오른쪽 바닥 위도 및지도의 경도를 얻는 방법

StackOverflow https://stackoverflow.com/questions/1831634

  •  11-09-2019
  •  | 
  •  

문제

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)
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top