2011-11-03 13 views
5

Trong ứng dụng iPhone, bạn có thể tính khoảng cách giữa hai điểm trong MKMapView như trong hình dưới đây?Làm cách nào để tính khoảng cách giữa hai điểm trong MkMapview?

Điểm đầu tiên sẽ là điểm trung tâm của bản đồ hiển thị trong chế độ xem bản đồ.

Điểm thứ hai sẽ là bất kỳ góc nào của hình chữ nhật có thể nhìn thấy của chế độ xem bản đồ (ở đây, ví dụ: tôi đã lấy điểm trên cùng bên trái).

enter image description here

Tôi muốn tính khoảng cách tính bằng mét. Làm thế nào tôi có thể đạt được điều đó?

Mục tiêu của tôi là tính tỷ lệ hình chữ nhật Bản đồ có thể nhìn thấy trong MKMapview.

Trả lời

29

Bạn có thể nhận lat/lon của trung tâm với:

convertPoint:toCoordinateFromView: 

loc1 và loc2 đều objs CLLocation.

CLLocationDistance dist = [loc1 distanceFromLocation:loc2]; 

Vì vậy, hai mẹo này sẽ giúp bạn. nếu bạn cần một số mã, cho tôi biết :-)

+0

Cảm ơn trả lời u có thể nói tôi làm thế nào để có được lat-long hoặc phối hợp của các điểm góc (2 điểm) Tôi có thể nhận được tọa độ của điểm trung tâm (điểm 1) – ios

+0

[Câu trả lời này] (http://stackoverflow.com/questions/2081753/getting-the- bounds-of-an-mkmapview/2082247 # 2082247) cho biết cách để có được vĩ độ/lon của poin góc ts. – progrmr

+0

Khi tôi kiểm tra chéo với google. tìm khoảng cách sử dụng mapKit không chính xác. –

1

Đây là cách bạn có thể tính toán khoảng cách truy nã:

// You first have to get the corner point and convert it to a coordinate 
MKMapRect mapRect = self.mapView.visibleMapRect; 
MKMapPoint cornerPointNW = MKMapPointMake(mapRect.origin.x, mapRect.origin.y); 
CLLocationCoordinate2D cornerCoordinate = MKCoordinateForMapPoint(cornerPointNW); 

// Then get the center coordinate of the mapView (just a shortcut for convenience) 
CLLocationCoordinate2D centerCoordinate = self.mapView.centerCoordinate 

// And then calculate the distance 
CLLocationDistance distance = [cornerCoordinate distanceFromLocation:centerCoordinate]; 
+7

centerCoordinate và cornerCoordinate cần có loại CLLocation cho distanceFromLocation để làm việc – Daniel

0

Swift 3+

let distance: CLLocationDistance = location1.distance(from: location2)