2015-10-23 25 views
28

Voglio fare in modo che mostrerà la quantità di distanza tra due coordinate CLLocation. C'è un modo per farlo senza una complessa formula matematica? Se non c'è come lo faresti con una formula?Come scoprire la distanza tra le coordinate?

+6

Si prega di leggere il documento prima di chiedere – Cosyn

+1

@Cosyn Bene, lo farò la prossima volta. Mi dispiace per quello –

risposta

100

CLLocation ha un metodo distanceFromLocation così dato due CLLocations:

CLLocationDistance distanceInMeters = [location1 distanceFromLocation:location2]; 

o in Swift 4:

//: Playground - noun: a place where people can play 

import CoreLocation 


let coordinate₀ = CLLocation(latitude: 5.0, longitude: 5.0) 
let coordinate₁ = CLLocation(latitude: 5.0, longitude: 3.0) 

let distanceInMeters = coordinate₀.distance(from: coordinate₁) // result is in meters 

si arriva qui distanza in metro così 1 miglia = 1609 metri

if(distanceInMeters <= 1609) 
{ 
// under 1 mile 
} 
else 
{ 
// out of 1 mile 
} 
+0

Come convertire questo in miglia? –

+0

Oh aspetta ho capito! Grazie. (: –

+2

Secondo Google, ci sono 0.000621371 miglia in un metro, quindi suggerirei di moltiplicarlo per 0.000621371. –

0

Per Objective-C

È possibile utilizzare distanceFromLocation per trovare la distanza tra due coordinate.

Frammenti di codice:

CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:lat1 longitude:lng1]; 

CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:lat2 longitude:lng2]; 

CLLocationDistance distance = [loc1 distanceFromLocation:loc2]; 

L'output verrà in metri.

+0

la domanda qui è didascalia con 'rapido'. Quindi forse è necessario aggiornare la risposta o aggiungere "Per obiettivo-c:" @Vijay –

4

Prova questo fuori:

distanceInMeters = fromLocation.distanceFromLocation(toLocation) 
distanceInMiles = distanceInMeters/1609.344 

Da Apple Documentation:

Valore di ritorno: La distanza (in metri) tra le due posizioni.

+0

È in miglia? –

+0

No - è in metri. Si prega di consultare il mio post aggiornato. – Abhinav

+0

C'è un modo per trasformarlo in miglia? –