mapkit如何確定1000英尺或1/2英里的距離?來自某個引腳的半徑或兩個引腳之間的距離。使用mapkit確定距離
例如,我將地圖居中在銷A上。銷B,C和D也位於地圖上與銷A不同的距離處.B和C距離A 1英里內,但D 1英里遠。我想知道B和C距離A半英里之內。我怎麼能計算出來?
mapkit如何確定1000英尺或1/2英里的距離?來自某個引腳的半徑或兩個引腳之間的距離。使用mapkit確定距離
例如,我將地圖居中在銷A上。銷B,C和D也位於地圖上與銷A不同的距離處.B和C距離A 1英里內,但D 1英里遠。我想知道B和C距離A半英里之內。我怎麼能計算出來?
既然你已經說過兩個不同點是「引腳」,我會假設你正在使用MKPinAnnotationView(或其他一些註解視圖)。如果沒有,你將不得不以其他方式獲得位置。
如果你有一個指針爲這些位置上標註的對象,那麼你可以很容易地呼籲他們-coordinate
,創建(使用-initWithLatitude:longitude:
)從這些座標CLLocations,然後使用方法-getDistanceFrom
來檢索米的距離。從那裏,這是一個很容易轉換爲英里。總而言之,代碼將是這個樣子:
CLLocationCoordinate2D pointACoordinate = [pointAAnnotation coordinate];
CLLocation *pointALocation = [[CLLocation alloc] initWithLatitude:pointACoordinate.latitude longitude:pointACoordinate.longitude];
CLLocationCoordinate2D pointBCoordinate = [pointBAnnotation coordinate];
CLLocation *pointBLocation = [[CLLocation alloc] initWithLatitude:pointBCoordinate.latitude longitude:pointBCoordinate.longitude];
double distanceMeters = [pointALocation getDistanceFrom:pointBLocation];
double distanceMiles = (distanceMeters/1609.344);
你會最終在英里的距離,並且可以從那裏進行比較。希望這可以幫助。
好吧,但這樣我們就可以得到這兩點之間的直線距離...不是實際的一個如何找到這個實際的距離.... – AJPatel 2011-04-15 10:49:39
getDistanceFrom
現在已棄用,所以對於任何想要這樣做的人來說,這裏有一個備選答案。
CLLocationCoordinate2D pointACoordinate = [pointAAnnotation coordinate];
CLLocation *pointALocation = [[CLLocation alloc] initWithLatitude:pointACoordinate.latitude longitude:pointACoordinate.longitude];
CLLocationCoordinate2D pointBCoordinate = [pointBAnnotation coordinate];
CLLocation *pointBLocation = [[CLLocation alloc] initWithLatitude:pointBCoordinate.latitude longitude:pointBCoordinate.longitude];
float distanceMeters = [pointALocation distanceFromLocation:pointBLocation];
float distanceMiles = (distanceMeters/1609.344);
[pointALocation release];
[pointBLocation release];
如上,你可以使用float
代替double
,你可以將結果轉換爲int,如果你不需要的float
像這樣的精度:
int distanceCastToInt = (int) [pointALocation distanceFromLocation:pointBLocation];
的int
是如果您想在註釋中給出對距離的粗略概念,如:
pointAAnnotation.title = @"Point A";
pointAAnnotation.subtitle = [NSString stringWithFormat: @"Distance: %im",distanceCastToInt];
字幕t例如,他的註釋將會讀作「距離:50米」。
這是斯威夫特3相當於給出答案:
let pointACoordinate = pointAAnnotation.coordinate
let pointALocation = CLLocation(latitude: pointACoordinate.latitude, longitude: pointACoordinate.longitude)
let pointBCoordinate = pointBAnnotation.coordinate
let pointBLocation = CLLocation(latitude: pointBCoordinate.latitude, longitude: pointBCoordinate.longitude)
let distanceMeters = pointALocation.distance(from: pointBLocation)
let distanceMiles = (distanceMeters/1609.344)
你能解釋一下你的問題比較多,所以我們可以理解的確切要求? – 2010-03-10 05:44:58
我編輯了這個問題。讓我知道你是否需要更多信息。 – user230949 2010-03-10 07:06:18