Различное расстояние между двумя точками на iOS и Android - PullRequest
7 голосов
/ 09 февраля 2012

Я пытаюсь измерить расстояние между двумя точками (долгота, широта).Моя проблема в том, что я получаю разные результаты на iOS, чем на Android.

Я проверил это на этом сайте , и в результате были получены правильные значения Android.

Я использую этот метод MapKit, чтобы получить расстояние в iOS: distanceFromLocation:

Вот мои тестовые местоположения:

P1 : 48.643798, 9.453735 P2 : 49.495150, 9.782150

Расстояние iOS : 97717 м Расстояние Android : 97673 м

Как это возможно и как я могуисправить это?

Ответы [ 3 ]

9 голосов
/ 11 февраля 2012

Итак, у меня возникла другая проблема, и я наткнулся на ответ на оба наших вопроса:

На iOS вы можете сделать следующее:

 meters1 = [P1 distanceFromLocation:P2]
 // meters1 is 97,717

 meters2 = [P2 distanceFromLocation:P1]
 // meters2 is 97,630

Я искал и искал, но не смог найти причину разницы. Поскольку они представляют собой одинаковые точки, они должны показывать одинаковое расстояние независимо от того, в какую сторону вы путешествуете. Я отправил его в Apple как ошибку, и они закрыли его как дубликат, но до сих пор не исправили. Я бы посоветовал всем, кто хочет, чтобы это было исправлено, также отправлять его как ошибку.

Между тем, среднее из двух значений на самом деле является правильным:

 meters = (meters1 + meters2)/2
 // meters (the average of the first two) is 97,673

Видимо, у Android нет этой проблемы.

3 голосов
/ 09 февраля 2012

Существует более одного способа вычисления расстояния между координатами long / lat на основе того, как вы компенсируете кривизну земли, и нет правильного или неправильного подхода. Скорее всего, две платформы используют немного другую модель.

Вот некоторые формулы для его расчета. http://www.movable -type.co.uk / скрипты / latlong.html

Если вам абсолютно необходимо, чтобы они были одинаковыми, просто выполните свои собственные расчеты с помощью одной из этих формул, и вы сможете обеспечить одинаковый результат на обеих платформах.

3 голосов
/ 09 февраля 2012

Долгота и широта - это не все, что вам нужно.Вы должны использовать ту же опорную модель, что и WGS84 или ETRS89.Земля не является точным эллипсоидом, поэтому вам нужны модели, ни одна из моделей не является абсолютно точной, и в зависимости от используемой модели расстояния могут быть различными.

Пожалуйста, убедитесь, что вы используете ту же ссылку для iOSи Android.

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