Calculando a distância de condução no iPhone
-
21-09-2019 - |
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.
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:
e o JSON inclui
....
route_summary: {
total_distance: Distance in meters,...
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.