2012-09-17 39 views
5

Tôi muốn tạo tính toán Hộp giới hạn địa lý trong iOS. Nó có thể là aprox.Cách tính toán hộp giới hạn địa lý trong iOS?

Các thông số đầu vào:

vị trí bây giờ (Ví dụ: 41,145495, -73,994901)

Bán kính theo mét: (Ví dụ: 2000)

Output Yêu cầu:

MinLong : (Ví dụ: 41.9995495)

MinLat: (Ví dụ: -74,004901)

MaxLong: (Ví dụ: 41,0005495)

MaxLat: (Ví dụ: -73,004901)

Yêu cầu: Không có mạng Gọi

Bất kỳ ý tưởng ? Mapkit/CoreLocation dường như không cung cấp loại điều này?

Bất kỳ SDK địa lý nào khác mà tôi có thể sử dụng?

Cảm ơn

Trả lời

4

Tôi nghĩ rằng bạn có thể sử dụng chức năng MapKit tiêu chuẩn: MKCoordinateRegionMakeWithDistance, điều này sẽ trả về một MKCoordinateRegion, mà thực sự chỉ là một điểm trung tâm (lat, lon) và nhịp theo hướng vĩ độ và longitudal trong độ. Cộng/trừ một nửa khoảng cách từ vĩ độ và kinh độ tương ứng và bạn có các giá trị bạn đang tìm kiếm.

CLLocationCoordinate2D centerCoord = CLLocationCoordinate2DMake(41.145495, −73.994901); 
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(centerCoord, 2000, 2000); 

double latMin = region.center.latitude - .5 * startRegion.span.latitudeDelta; 
double latMax = region.center.latitude + .5 * startRegion.span.latitudeDelta; 
double lonMin = region.center.longitude - .5 * startRegion.span.longitudeDelta; 
double lonMax = region.center.longitude + .5 * startRegion.span.longitudeDelta; 

Nhân tiện: đây chỉ là đại diện cho kinh độ cho các nhịp nhỏ, theo thứ tự vài kilômét. Để quote Apple:

latitudeDelta
Lượng khoảng cách theo hướng bắc-nam (đo bằng độ) để sử dụng cho nhịp. Không giống như khoảng cách theo chiều dọc, mà thay đổi dựa trên vĩ độ, một mức độ vĩ độ khoảng 111 km (69 dặm) bất cứ lúc nào.

longitudeDelta
Lượng khoảng cách đông sang tây (đo bằng độ) để sử dụng cho nhịp. Số km được trải rộng bởi một phạm vi kinh độ khác nhau dựa trên vĩ độ hiện tại. Ví dụ, một mức độ kinh độ kéo dài khoảng cách khoảng 111 km (69 dặm) tại đường xích đạo nhưng co lại đến 0 km ở hai cực.

+0

Đây là hơi có vấn đề khi chồng chéo khung nhìn của bạn 0 nhãn kinh độ –

+1

Giá trị của startRegion trong phép tính ở trên là –

+0

@JamesBillingham hoặc ± 180 kinh độ ± 90 dấu vĩ độ – wyu

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