Question

Je dois trouver la distance de conduite entre 2 emplacements. Je ne ai pas besoin d'afficher les directions dans une carte, juste besoin de calculer la distance, que je dois utiliser dans mon application.

Est-ce que MapKit permet cela? Y at-il une alternative qui peut être utilisé?

Je suis en mesure d'obtenir en avant géocodage en utilisant CloudMade, mais il ne semble pas être une option pour obtenir la conduite à distance.

Appréciez toute aide.

Était-ce utile?

La solution

CloudMade propose également des itinéraires. Si vous ne souhaitez que la distance, ignorez simplement les instructions.

ressemble à une API-Call ceci:

  

http://navigation.cloudmade.com/YOUR-API-KEY-GOES-HERE/api/0.3/47.25976,9.58423,47.26117,9.59882/car/shortest.js

et le JSON comprend

....
route_summary: {
total_distance: Distance in meters,...

Source

Autres conseils

Dans mes applications je MKDirections pour obtenir la conduite (marche) distance entre deux emplacement.

CLLocationCoordinate2D startCoordinates = YOUR_START_COORDINATES;
CLLocationCoordinate2D endCoordinates = YOUR_END_COORDINATES;

MKPlacemark *startPoint = [[MKPlacemark alloc] initWithCoordinate:startCoordinates];
MKPlacemark *endPoint = [[MKPlacemark alloc] initWithCoordinate:endCoordinates];

MKMapItem *startItem = [[MKMapItem alloc] initWithPlacemark:startPoint];
MKMapItem *endItem = [[MKMapItem alloc] initWithPlacemark:endPoint];

MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];

request.source = startItem;
request.destination = endItem;
request.transportType = MKDirectionsTransportTypeAutomobile; //here you can choose a transport type you need

MKDirections *direction = [[MKDirections alloc] initWithRequest:request];

[direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse * _Nullable response, NSError * _Nullable error) {

          if (response) {
              for (MKRoute *route in response.routes) {
                  NSLog(@"Distance : %f", route.distance);
              }
          }

 }];

si vous avez-vous lieu comme une adresse, vous pouvez utiliser la méthode de CLGeocoder, qui vous donnera la latitude et la longitude de votre adresse

- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;

Si vous comparez un résultat à distance de conduite en utilisant MKDirections avec une aide de Google Maps, vous verrez qu'ils diffèrent. Je cherchais à ce sujet et suis tombé sur le lien suivant http://www.macworld.co.uk/review/reference-education/apple-maps-vs-google-maps-3464377/

Même si Apple a été l'amélioration de leur service de carte, ils concèdent encore la précision de Google (OMI), au moins dans une question concernant la distance de conduite. Donc, si la précision est pas très important dans votre cas, vous pouvez suivre avec Apple. Sinon, je recommande de vérifier l'API Google.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top