Вопрос

Мне нужно найти расстояние вождения между 2 местами. Мне не нужно отображать указания на карте, просто нужно рассчитать расстояние, которое мне нужно использовать в своем приложении.

Mapkit разрешает это? Есть ли альтернатива, которую можно использовать?

Я могу продвинуться вперед геокодинг с помощью CloudMade, но, похоже, нет возможности получить расстояние вождения.

Цените любую помощь.

Это было полезно?

Решение

Cloudmade также предлагает направления вождения. Если вы заинтересованы только в расстоянии, просто игнорируйте инструкции.

Похоже на API выглядит так:

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

и JSON включает

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

Источник

Другие советы

Нашел это в группах Google, это полезно?

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

В своих приложениях я использовал MKDiections, чтобы проехать (ходьба) расстояние между двумя местами.

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

 }];

Если у вас есть местоположение в качестве адреса, чтобы вы могли использовать метод Clgeocoder, который даст вам широту и долготу вашего адреса

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

Если вы сравните результат расстояния вождения, используя MKDirections с использованием Google Maps, вы увидите, что они различаются. Я искал по этому вопросу и наткнулся на следующую ссылку http://www.macworld.co.uk/review/reference-education/apple-maps-vs-google-maps-3464377/

Несмотря на то, что Apple улучшает свой сервис карты, они все еще признают Google (IMO), по крайней мере, в вопросе о расстоянии вождения. Поэтому, если в вашем случае не очень важна точность, поэтому вы можете следовать Apple. В противном случае я бы порекомендовал проверить Google API.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top