2010-03-17 17 views
12

Tôi đã kiểm tra các thuộc tính trong tài liệu hướng dẫn cho MKCoordinateRegion, MKCoordinateSpanMKMapView để xem có một cách để có được những topleftBottomRight Lạt dài từ xem bản đồ và tôi không tìm thấy bất kì. Tôi biết rằng khoảng thời gian này mang lại cho tôi vùng đồng bằng dài Latinh nhưng có cách nào để có được các số liệu TopLeftBottomRight dài nhất từ ​​chế độ xem bản đồ mà không phải tính toán kỳ lạ?Nhận topleft và BottomRight từ MKCoordinateRegion MKMapView

Tôi đã tìm thấy this.

Không chắc liệu điều đó có đủ chính xác hay không. Bất kỳ phiếu bầu nào cho điều đó?

Trả lời

25

Tôi không nghĩ rằng những tính toán đủ điều kiện như lạ:

CLLocationCoordinate2D center = region.center; 
CLLocationCoordinate2D northWestCorner, southEastCorner; 
northWestCorner.latitude = center.latitude + (region.span.latitudeDelta/2.0); 
northWestCorner.longitude = center.longitude - (region.span.longitudeDelta/2.0); 
southEastCorner.latitude = center.latitude - (region.span.latitudeDelta/2.0); 
southEastCorner.longitude = center.longitude + (region.span.longitudeDelta/2.0); 
+0

cần phải chuyển +/- đây để làm cho nó đúng –

+1

Cảm ơn để điều chỉnh tôi, Andriy. Tôi đã cập nhật mã ở trên vì vậy nó phải chính xác ngay bây giờ. –

+0

Tuyệt vời. Cảm ơn! –

0

Bạn có chắc bạn đã nhận + - phải không? Tôi đã không nhận được kết quả hữu ích với điều đó. Khi tôi chuyển đổi + -, tôi đã làm. Có thể là mã của tôi thiếu sót ở một nơi khác, mặc dù;)

Kinh độ được đưa ra như một phép đo góc từ 0 ° tại kinh tuyến chính đến + 180 ° về phía đông và −180 ° về phía tây. Chữ cái Hy Lạp λ (lambda), [3] [4] được sử dụng để biểu thị vị trí của một địa điểm trên Trái đất phía đông hoặc phía tây của Kinh tuyến Chính.

Về mặt kỹ thuật, vĩ độ là một phép đo góc theo độ (được đánh dấu bằng °) từ 0 ° tại đường xích đạo (vĩ độ thấp) đến 90 ° ở cực (90 ° N hoặc + 90 ° đối với Bắc cực và 90 ° S hoặc −90 ° cho Nam Cực).

(Wikipedia)

tính toán
3

Đơn giản thực hiện trong Swift 3.0 như mở rộng:

extension MKCoordinateRegion { 
    var northWest: CLLocationCoordinate2D { 
     return CLLocationCoordinate2D(latitude: center.latitude + span.latitudeDelta/2, 
             longitude: center.longitude - span.longitudeDelta/2) 
    } 
    var northEast: CLLocationCoordinate2D { 
     return CLLocationCoordinate2D(latitude: center.latitude + span.latitudeDelta/2, 
             longitude: center.longitude + span.longitudeDelta/2) 
    } 
    var southWest: CLLocationCoordinate2D { 
     return CLLocationCoordinate2D(latitude: center.latitude - span.latitudeDelta/2, 
             longitude: center.longitude - span.longitudeDelta/2) 
    } 
    var southEast: CLLocationCoordinate2D { 
     return CLLocationCoordinate2D(latitude: center.latitude - span.latitudeDelta/2, 
             longitude: center.longitude + span.longitudeDelta/2) 
    } 
} 

Cách sử dụng:

var region: MKCoordinateRegion = ... some region here 
print("North - West", region.northWest) 
+0

sai. tôi đã kiểm tra mã. –

+1

@CarlHung Bạn có nghĩa là phía tây và phía đông đã được trộn lẫn? Nếu vậy tôi đã sửa nó. – Avt

Các vấn đề liên quan