2012-05-14 2 views
3

Кто-нибудь еще обнаружил, что проблема в том, что Карты Google (теперь) позволяют вам перемещаться за полюсами. Он останавливался у полюсов, верно?google map сковывает «край» земли

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

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

Благодаря

скриншот: edge of the earth!

+0

Вы можете сделать это на сайте Google Maps тоже, так что это вполне нормально –

+2

Вы всегда можете сообщить пользователю о том, что мир в квартиру и что «здесь быть драконы». –

+0

Да, драконы. Это или ничего. Хорошее решение. – smabbott

ответ

3

Один из способов избежать серой области, чтобы ограничить панорамирование пользователя, следуя этому примеру, «Range Предельной»; Однако, это написано для версии 2.

http://econym.org.uk/gmap/range.htm

Это просто, чтобы он работать в версии 3, http://jsfiddle.net/44e6y/9/ но есть недостатки:

  • он опирается на центр карты, находясь внутри , поэтому
  • масштабирование дополнительно ограничит область видимости (не имеет значения, если вас не интересуют полюса, но вы можете иметь массив LatLngBounds для различных масштабирования, это становится необходимым для просмотра Гренландии)
  • в результате последней точки, я заставляю минимальный зум быть 2 для размера iframe JSFiddle. Если на карте будет отображаться весь экран, минимальное масштабирование может быть выше, чтобы избежать отображения серой области. В общем, чем выше мин. увеличение, более предсказуемое поведение.
+0

Спасибо. Я попробую это. Похоже, он должен быть встроен в карты Google, но нет? – smabbott

+0

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

+0

Наконец, вернемся к этому. Ваше решение отлично работает. Благодарю. – smabbott

0

Так как у меня была та же проблема, и только для целей с достижением цели только 2 уровня (другие уровни масштабирования не срабатывают в примере), я попытался найти формулу, но не получился, поэтому мне сложно - закодировано в первых 8 уровнях масштабирования со значениями. Очевидно, это можно было бы расширить до полностью работающего примера, но я думаю, что это достаточно хорошо для 99% случаев.

JSFiddle here

Я также добавил еще один слушатель, чтобы сделать его лучше работать.

google.maps.event.addListener(map, 'zoom_changed', function() { 
     checkBounds();}); 
Смежные вопросы