Как стать автором
Обновить

Комментарии 47

Некоторые вещи не актуальны для API 3.x.
В частности не надо получать свой ключ
а можно линк? мы у себя на сайте используем ключ, и если его не указывать карта не работает
Для третьей версии API ключ вроде бы не нужен уже.
Да, это было очень существенным плюсом, помнится:)
О да. У нас еще на тот момент у каждого разработчика был свой домен. Не поддомен на девелоперском сервере, а домен:)
не нужен
Спасибо за статью. А не появилось ли еще бесплатной cms, реализующей подобный функционал из коробки?
Задам простой вопрос на который (лично я) не могу найти ответ уже пару лет
Зачем? Это же в любом случае пара строчек + данные из cms которым на АПИ положить
Блин, увидел pushkino.org на главной Хабра с пометочкой Гугл.Мапс.Апи и сразу паранойя — думал, что меня нашли (я ж в Пушкино живу)…
Зачем паранойя когда сам рассказываешь все :)
Позор на мои седины!
У яндекса вроде на геокодинг лимиты гораздо выше.
В 10 раз.
Количество обращений к функции геокодирования ограничено 25000 запросов для одного API-Ключа в сутки. Отсюда: api.yandex.ru/maps/form.xml
Тогда в два раза. В гугле 16к в день.
И в обоих случаях — «для одного API ключа+IP»
Есть это не сайт может дать пользователям 20к раз что-то найти, а лично ВЫ лично на этом сайте… клава развалиться?
а в сумме это 41000!
ещё одна деталь — в третьей версии GmapAPI инфоокна ( InfoWindow ) перестали автоматически закрываться при открытии другого инфоокна… чтобы избежать этого нужно использовать одно инфоокно и обновлять контент и позицию соответственно по клику на маркере :)
Можно и так :-)
ну а как более экономно по части ресурсов сделать и чтобы последнее инфоокно закрывалось при открытии нового? :)
Можно ли получать данные об изменении информации на маркерах? Т.е. кто-то поменял инфу, а вы хотите об этом знать.
смотря какую инфу о маркерах… :)
вообще есть обработчики событий, и там есть например событие title_changed…
полный список тут…
code.google.com/apis/maps/documentation/javascript/reference.html#Marker

то есть при обновлении инфы о маркере можно менять тайтл и уже по этому событию что-то делать
Открытие инфоокна вешается на событие клика по маркеру, нужно повесить еще один обработчик, чтобы сначала показанное ранее окно закрывалось.
для этого каждый маркер должен знать о других маркерах и их инфоокнах… в любом случае придётся выносить инфу об инфоокне в глобальную область — получаем моё решение с общим инфоокном для всех маркеров… клик по маркеру закрывает текущее инфоокно, меняет контент и позицию и показывает на новом месте :)
если у вас есть предложения интереснее — с удовольствием выслушаю ;)
У карты есть метод closeInfoWindow(), вызываем его перед показом нового инфоокна и все открытые до этого окна закроются. Так как это метод класса карты, то нам не нужно знать то знать о других маркерах и окнах нам не нужно.
Вы хотели сказать «был метод» :) во второй версии… в третьей его нет, о том и разговор
Черт, вы правы :) Не обращал, что в третьей версии реализовано по-другому. Интереснее тут предложения думаю нет, потому что даже у самого гугла в примерах реализовано примерно также, как описываете вы
А можете подсказать куда рыть чтобы сделать что-то похожее на то что в ссылочке в плане открытия окошек и их натсройки
www.booking.com/city/it/rome.html?sid=4389551beee6c27cd1ec26b1417c2f67;city=-126693
а чего ж не могу — могу :)
есть в гугломапсах кастомные оверлеи — их и будем использовать…
pastebin.com/hvBJ6NLu
вот простой код — там класс Label ( вот он наш произвольный html для маркеров ) и пару строчек вверху как им пользоваться…
событие «мышка проплывает над маркером» добавите сами, я думаю :)
Спасибки, буду разбираться, хотя конечно наделся чт оест ьвариант како-нибудь чтобы все это не перерисовывалось, но так тоже думаю ок
да незачто :)
Но самый главный прикол в том что оригинальный maps.google.com работает на версии АПИ 2!
А кластеризация в примере работает под третью версию api?
Когда есть необходимость отображать большое количество маркеров на карте одновременно и кластеризация не подходит, есть вариант использовать «облегченные маркеры» (Marker Light). Это обычные overlay слои с заданным изображением. Они едят в разы меньше ресурсов и вполне прилично работают когда из около 1000 штук на карте. Если хабраюзерам интересно, могу написать статью по этому поводу, пока в рунете не много материала на эту тему.
Для отображения всплывающих окон есть отличный класс ExtInfoWindow. Правда он тоже под вторую версию, но возможность визуального оформления окна в нем намного больше чем у стандартного, можно попробовать переписать под v3.
Пардон, про кластеры невнимательно прочитал.
Для себя ExtInfoWindow подправил, но в публичный доступ выкладывать стыдновато. Но поделиться не жалко, пишите в личку.
Спасибо за предложение, но я пока вторую использую )
Посмотрел ваш код, для вычисления центра можно использовать bounds.getCenter(), а не считать его руками.
Собственно, всё то же реализуется при помощи OpenLayers, только у OpenLayers API более продуманное и универсальное, и работает оно не только с Google Maps, но и с любым другим провайдером как растровых, так и векторных данных.
Спасибо! Очень полезным оказалось!
Забавно, что гугл требует в яваскриптах указывать координаты через точку, а сам отдает

[Point] => Array
(
[coordinates] => Array
(
[0] => 4,8951679
[1] => 52,3702157
[2] => 0
)

)
А есть технология, когда в базе маркеров под 1 миллион, а отображать на карте нужно те меркеры, которые видит пользователю и с зумом более 10
И при передвижении картой добавлять маркеры которые стали «видимы»
Должно быть.

В данный момент статья не особо актуальна, так как гугл-мапс выпустили новую версию API. Исследуйте в примерах.
Какой клевый и простой апи у Яндекса. Но вот печалька: соглашение запрещает юзать его для мониторинга автотранспорта, а именно это и хочется, с геокодингом. Но цены доя "очень малого бизнеса" неадекватны.

Кто читал гугловское соглашение, там тоже запрещено юзать это? В закрытых системах?

Есть открытые для коммерческих целей сервисы со схожим функционалом?
Чтобы геокодирование работало если набирать адрес задней пяткой левой ноги..
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации