Pergunta

Eu preciso encontrar a distância de condução entre 2 locais. Não preciso exibir as instruções em um mapa, só preciso calcular a distância, que preciso usar no meu aplicativo.

O MAPKIT permite isso? Existe uma alternativa que pode ser usada?

Sou capaz de avançar a codificação geográfica usando o CloudMade, mas não parece haver uma opção para obter uma distância de carro.

Aprecie qualquer ajuda.

Foi útil?

Solução

Cloudmade também oferece instruções de direção. Se você estiver interessado apenas à distância, basta ignorar as instruções.

Uma API-Call se parece com o seguinte:

http://navigation.cloudmade.com/your-api-key-goes-here/api/0.3/47.25976,9.58423,47.26117,9.59882/car/shorst.js

e o JSON inclui

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

Fonte

Outras dicas

Encontrou isso nos grupos do Google, isso é útil?

http://groups.google.com/group/google-maps-api/msg/4dc2fad4f74e3314?pli=1

Nas minhas aplicações, usei o MKDirections para obter uma distância (caminhada) entre dois locais.

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);
              }
          }

 }];

Se você tiver sua localização como endereço, para que você possa usar o método de Clgeocoder, o que lhe dará latitude e longitude do seu endereço

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

Se você comparar um resultado de distância de condução usando o MKDirections com o que usa o Google Maps, verá que eles diferem. Eu estava procurando sobre esse assunto e me deparei com o seguinte link http://www.macworld.co.uk/review/reference-education/apple-maps-vs-google-maps-3464377/

Embora a Apple tenha melhorado seu serviço de mapa, eles ainda concedem precisão ao Google (IMO), pelo menos em uma pergunta sobre a distância de condução. Portanto, se a precisão não for altamente importante no seu caso, você pode acompanhar a Apple. Caso contrário, eu recomendaria verificar a API do Google.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top