Создание случайной координаты широты / долготы, которая расположена в физически достижимом месте - PullRequest
1 голос
/ 20 августа 2011

У меня есть приложение, которое генерирует некоторое количество токенов вокруг текущего местоположения пользователя, используя определенный радиус расстояния.Затем пользователю придется бежать в некоторые из этих мест.Проблема в том, что некоторые токены могут быть созданы в озере, лесу, океане или в другом физически недоступном месте.В качестве быстрого решения я просто генерирую дополнительные токены и увеличиваю расстояние сближения, которое определяет, достиг ли пользователь определенного местоположения.Теперь я хочу улучшить это, чтобы каждый токен находился в доступном месте.

Единственное решение, которое мне удалось найти, - это использование Google Directions API для определения пути от пользователя до токена.и использовать последнюю координату в полилинии в качестве нового достижимого местоположения токена.Моя проблема заключается в том, что мне, возможно, придется одновременно публиковать до 30 запросов в службу маршрутов, и я беспокоюсь, что могу достичь предела частоты запросов.Я не нашел ничего определенного об ограничении частоты запросов.

Так что мой вопрос в том, знает ли кто-нибудь о лучшем решении или может дать какой-либо вклад в ограничение частоты запросов Направления?Ожидание 1 секунды между каждым запросом и принуждение пользователя ждать до 30 секунд не является разумным решением.Спасибо.

ОБНОВЛЕНИЕ Использование решения, которое я описал в этом вопросе, приводит к OVER_QUERY_LIMIT, даже если я жду 1 секунду между каждым запросом.Кроме того, логика была здравой, и токены, которые получили запрос, появлялись в местах, доступных для пеших прогулок.

Ответы [ 3 ]

0 голосов
/ 20 августа 2011

Пределы использования

Использование API-маршрутов Google ограничено 2500 запросами в день. Индивидуальные запросы направлений могут содержать до 8 промежуточных точек в запросе.

Клиенты Google Maps Premier могут запрашивать до 100 000 запросов маршрутов в день с разрешением до 23 путевых точек в каждом запросе.

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

Одним из способов было бы посмотреть, сможете ли вы увидеть возвышение, чтобы увидеть, утес это или нет. Однако просто посмотреть, озеро это или нет, довольно сложно. Это может быть какая-то служба поиска GPS, кроме Google Maps.

Если вы просто хотите узнать расстояние между точками, просто используйте Location.distanceTo () или статический distanceBetween () Получение информации, если это дорога или нет, это другой вопрос.

0 голосов
/ 21 августа 2011

Через 8 часов я наконец-то заработал.Таким образом, используя тот факт, что каждый запрос может иметь до 8 путевых точек, я могу технически задать направления до 9 мест в одном запросе.Вот что я делаю сейчас:

Генерируем 9 случайных локаций одновременно.Передайте местоположения моему DirectionsComputer, который возвращает путь ломаной линии, проходящий через все 9 координат в виде списка координат.Затем я выбираю 9 мест на пути и устанавливаю их в качестве мест расположения моих жетонов.Теперь все мои токены генерируются полуслучайно, всегда появляются на дороге, и мне нужно только сделать 4 последовательных запроса, чтобы сгенерировать 36 токенов.

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

0 голосов
/ 20 августа 2011

Вы можете рассчитать расстояние между двумя широтами с помощью Location.distanceBetween ().Это статический удобный API-вызов.Количество расчетов не ограничено.

...