2014-01-10 2 views
0

У меня есть карта, в центре которой находится текущее местоположение браузера пользователя (если пользователь разрешил делиться своей позицией).Центр карты позволяет пользователю панорамировать всего несколько километров или миль

Я собираюсь представить маркеры «вокруг», и я думаю, как я могу ограничить панорамирование до 2 км с четырех сторон (2 км - это всего лишь пример, чтобы идея не позволяла пользователям заходить слишком далеко от центра).

Я уже установил предел масштабирования, который поможет немного, но он вообще не решает ситуацию.

ответ

0

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

В качестве альтернативы вы можете взять границы карты и добавить буфер в координаты, а затем нарисовать маркеры, которые лежат внутри многоугольника, образованного прямоугольником, используя containsLocation() из геометрии геометрии Google Maps (давая прямоугольную область маркеров.Тогда вы также можете проверить, пропущен ли буфер и создать новую буферную зону, так что вы обновляете только маркеры на карте, если пользователь начинает панорамирование слишком далеко.

+0

Это больше о том, как я могу установить ограничение 2 км на четырех сторонах. Добавление буфера немного сложнее. – user1225730

+0

Мне удалось получить новые Bounds, установленные на расстоянии 2 км от границ карты с позицией пользователя в ее центре. Проблема в том, что я не могу остановить панорамирование на новых границах + 2 км. Любая идея? – user1225730

+0

Я не уверен, но я был бы очень удивлен, если бы вы могли остановить пользователя, проходящего мимо этого буфера. Вы можете установить для параметра карты «draggable» значение false, когда буфер достигнут, но тогда пользователь не смог вернуться назад. Единственный другой вариант, который приходит на ум, - это прослушать dragend, и если они затянутся слишком далеко (скажем, что-то вроде нового центра не содержится в прямоугольнике в 2 км вокруг местоположения пользователя, таким образом, имитируя ваш примерный буфер примера 2), вы можете сбросить центр к ближайшему краю этого прямоугольника. Они смогут перетащить буфер, но вернутся к нему. – MatthewH

Смежные вопросы