Расчет пробега в iPhone - PullRequest
       22

Расчет пробега в iPhone

3 голосов
/ 21 января 2010

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

MapKit это позволяет? Есть ли альтернатива, которая может быть использована?

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

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

Ответы [ 3 ]

3 голосов
/ 21 января 2010

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,...

Источник

2 голосов
/ 05 мая 2010

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

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

0 голосов
/ 29 июля 2017

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

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.

...