Google Maps
Думаю, стоит заметить, что до написания этого проекта я ни разу не использовал карты google в работе. Я, конечно же, работал с сервисами на их основе, но никогда не использовал их сам. Начало работыПрежде всего идем на домашнюю страницу api гуглокарт. Чтобы использовать карты на своем сайте, вам необходимо зарегистрироваться и получить специальный ключ (он уникален для каждого домена). Стоит отметить, что если вы пока работаете на локалхосте, то ключ необязателен. Далее нужно подключить скрипт google карт к вашей странице и вывести карту в определенный блок. Делается это следующим образом: Функция initialize() проверяет, справится ли браузер с картами, и, если да, то помещает карту в блок с id="map_canvas". Далее центр карты (map.setCenter(...)) ставится в точку c широтой 59.94 и долготой 30.3. Масштаб карты — 13. Еще парочка моментов. На google картах есть подписи, язык которых по умолчанию зависит от языка вашего браузера. Если вы хотите, чтобы карты всегда были на каком-то одном языке и не зависили от языка браузера, то подключать google карту к странице нужно вот так (параметр hl отвечает за язык): КонтролыЕсть дефолтные (их положение и внешний вид фиксированы), а есть свои. Дефолтные можно подключить вот так (модифицированная функция initialize()): Дефолтные контролы нас не устраивали, поэтому я стал искать, как сделать свои. В итоге я нашел вот такой клевый мануал по google картам на русском (перевод официальных мануалов от гугла): Документация по Google Maps на русском PDF, 960КБ Среди методов изменения google карты есть и нужные нам:
Эти действия можно повесить на любой элемент вашей страницы, который потом можно стилизовать по своему вкусу. Маркеры и иконкиЭто отметки на карте. На любой маркер можно повесить любой действие. Вот так добавляется маркер на google карту: Если вы хотите, чтобы ваш маркер можно было перетаскивать, то добавляйте маркер на карту вот так: На месте алертов можно вставить свои функции. Теперь будем ставить свои иконки на маркеры (гугловские тоже ничего, но свои-то лучше ;-). Определяем объект tinyIcon, который и будет отвечать за иконку маркера: И чтобы сделать маркер с иконкой tinyIcon: ИнфоокнаОпять же, можно использовать встроенные инфоокна (что проще) и свои (которые можно сделать по своему вкусу). Стандартные инфоокна вызываются вот так: Мы решили пойти сложным и красивым путем и начали искать библиотеки для реализации собственных окон. В итоге нашли набор вспомогательных утилит для google карт и среди них ExtInfoWindow. Штука довольно хорошая (хотя тяжелая) — все просто и понятно. После подключения скрипта к странице само окошко вызывается вот так: А что делать, если много маркеров?Мы задали себе этот вопрос когда на карте Москвы у нас было около 700 точек. При таких количествах Ослик (и 6-ой, и 7-ой) вис в лучшем случае минуты на 2 (в худшем вис намертво), после чего дико тормозил. Сначала мы попробовали выводить точки по очереди (по несколько штук с таймаутом). Получилось красиво, но так же долго и фатально для Осла. Затем я нашел на Хабре статью, в которой приводились разные способы оптимизации. Надо сказать, что все они, конечно, интересные, но довольно запарные. В ходе поисков я нашел отличный скрипт под названием кластерер. Вот, что умеет эта хитрая штука:
Посмотрим, как это добро использовать: Да, это все. Вы просто добавляете маркер не сразу на карту, а пропускаете его через кластерер. Единственное, что я переделал в скрипте кластерера это событие при клике на сгруппированный маркер. По умолчанию выводится окошко со списком маркеров в этой группе. Это мне показалось не очень удобным, поэтому я сделал так, что при клике карта увеличивается на 1 деление и центр карты ставится на центр группы. Ссылки в тему
Спасибо за внимание и до новых встреч! Автор статьи: Павел МарковнинПонаписал еще 38 статей.
Понравилась статья?Тогда подпишись на обновления через RSS или воспользуйся
|
Поиск по сайтуСпонсоры
Случайные статьи
Блогорол
|
||
|
|||