Использовать mapkit для расчета расстояния между двумя адресами? - PullRequest
6 голосов
/ 03 февраля 2010

Можно ли использовать mapkit в iphone SDK для расчета расстояния между двумя адресами?

Ответы [ 4 ]

3 голосов
/ 16 марта 2010

Как насчет использования платформы Core Location:

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location

Вам понадобятся широта / долгота для обоих адресов.

Редактировать: устарело в iOS 3.2. Вместо этого используйте метод distanceFromLocation:.

2 голосов
/ 24 октября 2013

С iOS7 вы получаете полные указания в API

Взгляните на этот урок Урок .

1 голос
/ 03 февраля 2010

Нет, но если у вас есть долгота / широта, тогда довольно легко рассчитать расстояние. Это математическое расстояние между этими точками, конечно. Не фактическое расстояние вождения или ходьбы, основанное на фактическом маршруте.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...