Запросить маршрутизацию на iPhone / iPod без GPS - PullRequest
0 голосов
/ 09 января 2011

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

Поскольку я ожидаю, что многие пользователи с iPod touch не смогут использовать GPS для этого.

На StackOverflow и ServerFault я нашел следующие возможные решения:

  1. Использование технологии Anycast для маршрутизации пользователей => Я не могу использовать этот метод, потому что само устройство должно маршрутизировать запросы и знать, куда они направляются.

  2. Получите код страны и используйте API-адрес Google для определения ближайшего сервера.

  3. Получить местоположение по IP (GeoDNS и т. Д.) И сделать то же самое (см. Выше).

Метод 2 кажется хорошим, но у меня есть три вопроса к этому:

  1. API отправляет мне весь маршрут от точки x до точки z. Я просто хочу иметь расстояние. Есть ли способ сделать это?

  2. Google говорит, что у них есть ограничение на использование 2500 запросов в день. Как они это контролируют? По IP? Я спрашиваю об этом, потому что они говорят, что вам не нужно использовать ключ API - как они тогда контролируют?

  3. Является ли хорошей идеей использовать Google без каких-либо проблем позже? Само мое приложение будет бесплатным, но в нем будут встроенные покупки. Это имеет значение?

Надеюсь, у кого-то есть опыт в этом. Заранее спасибо!

Пол

1 Ответ

0 голосов
/ 09 января 2011

Во многих случаях iOS по-прежнему возвращает местоположение при запросе на устройствах без GPS. Помните, что в первом поколении iPhone не было GPS, но он все еще мог оказывать услуги на основе определения местоположения. iOS будет использовать ряд методов (геолокация IP, skyhook и т. д.), чтобы найти местоположение пользователя, в дополнение к GPS.

В любом случае, чтобы ответить на некоторые ваши вопросы:

2500 запросов в день - на конечного пользователя или, как правило, на IP-адрес. Так что вам не нужно беспокоиться о том, чтобы вас закрыли. Однако вы должны знать, что вам нужно отобразить карту Google, чтобы использовать API, поэтому, если вы используете их API и не используете mapView, у вас могут возникнуть проблемы.

Я не совсем уверен, зачем вам в первую очередь использовать API направлений Google. Если вы можете получить координаты широты / долготы как текущего местоположения пользователя, так и ваших серверов, вы можете просто использовать встроенные в iOS методы CoreLocation, чтобы определить расстояние между ними и принять соответствующее решение ( [CLLocation getDistanceFromLocation] ).

...