Избранное | Русский | Войти

Руководство разработчика маплетов Google

Маплеты — это мини-приложения, выполняемые в Картах Google.Сотни разработчиков уже создали маплеты, которые содержат наложенную графику в виде таких данных для карт, как фотографии, погодные условия и цены на газ. Эти маплеты и многое другое можно найти в каталоге карт Google.

Маплеты — это недавнее изобретение, поэтому мы просим вас сообщать о проблемах с их использованием. Приглашаем вас присоединиться к группе обсуждений API Карт и высказать свое мнение.

  1. Для кого предназначено данное руководство
  2. Что такое маплеты?
  3. Основные инструменты разработчика
  4. Создание маплета
  5. Публикация маплета
  6. Установка и выполнение маплета
  7. Совместное использование маплетов
  8. Отправка маплета в каталог
  9. Отличия маплетов от стандартного API Карт
    1. Упрощенная инициализация
    2. Запрет нестандартного поведения
    3. Асинхронное взаимодействие с картой
    4. Вопросы безопасности и очистка информационного окна
    5. Проксирование запросов удаленных данных со стороны Google
    6. Преобразование существующего мэшапа API Карт в маплет

Для кого предназначено данное руководство

Эта документация предназначена для пользователей, знакомых с программированием на языке JavaScript и понятиями объектно-ориентированного программирования.Маплеты — это особый тип гаджетов Google, поэтому рекомендуется ознакомиться и с документацией по API гаджетов Google.

Недавно документация была реорганизована — теперь она стала еще более содержательной, а все обсуждения были разделены на следующие основные темы:

Всем новым разработчикам следует ознакомиться с этим документом, где описывается процедура установки и публикации маплетов, а также с документом Простейшие примеры маплетов, в котором объясняется способ их создания.Пользователям, знакомым с API Карт Google, рекомендуется ознакомиться с разделом Отличия маплетов от стандартного API Карт .Это руководство не предполагает знакомства пользователя с API гаджетов Google или с API Карт Google.

Что такое маплеты?

Маплет — это XML-файл, служащий оболочкой для мини-страницы.В эту мини-страницу можно поместить любое содержание, которое используется для обычной веб-страницы, включая HTML, Javascript и Flash. Google предоставляет API Javascript, обеспечивающий взаимодействие маплетов с сайтом Карт Google, прием содержания с удаленных веб-сайтов и хранение пользовательских настроек.

Когда пользователь выполняет маплет, Google получает исходный код маплета с вашего веб-сервера и затем обслуживает мини-страницу в IFrame на сайте Карт Google.Из соображений безопасности мини-страница размещается на сайте gmodules.com.

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

Основные инструменты разработчика

Перед созданием маплета необходимо перейти в раздел Инструменты разработчика в каталоге Карт Google и добавить следующие инструменты.

  • Маплет разработчика.После установки этого инструмента к каждому выполняемому маплету добавляется ссылка "Перезагрузить".Это позволяет обойти автоматическое кэширование исходного кода маплета.Поверьте, Маплет разработчика — это тот инструмент, без которого вы не сможете обойтись.
  • Блокнот маплетов.Функции этого инструмента включают интерактивное написание кода маплета и мгновенный предварительный просмотр. В Блокнот маплетов можно вырезать и вставить все примеры из этого руководства.

Создание маплета

Выполнив настройку среды разработки, можно приступать к созданию непосредственно маплета.Маплет — это код JavaScript, размещаемый с помощью специального гаджета Google и предназначенный для взаимодействия с главной картой на сайте maps.google.com.Подробное пошаговое руководство по написанию первого маплета представлено в разделе Простейшие примеры маплетов документа Основные сведения о маплетах.

Публикация маплета

Созданный маплет необходимо сохранить на открытом веб-сайте.Если у вас нет своей страницы, воспользуйтесь Google Page Creator.Однако не следует использовать визуальный редактор (WYSIWYG).Перейдите к Диспетчеру сайтов и справа нажмите на ссылку Загрузить.Затем в разделе Загруженные файлы нажмите на название файла, чтобы получить URL-адрес маплета.

Установка и выполнение маплета

Перед выполнением маплета его необходимо установить. Для этого перейдите в каталог Карт Google и нажмите на ссылку Добавить по URL-адресу рядом с кнопкой Поиск содержания Карт Google внизу страницы.Затем введите URL маплета и нажмите на кнопку Добавить.При возврате на страницу Карт Google маплет появится на вкладке Мои карты.

Совместное использование маплетов

Чтобы другие пользователи могли выполнять ваш маплет, воспользуйтесь следующим URL:

http://maps.google.com/ig/add?synd=mpl&pid=mpl&moduleurl=< URL of your mapplet>

Если нажать на этот URL, будет выполнен переход на страницу с предложением установить маплет.Например, если исходный код маплета расположен по адресу http://www.google.com/mapfiles/mapplets/distance/distance.xml, то URL будет иметь следующий вид:

http://maps.google.com/ig/add?synd=mpl&pid=mpl&moduleurl=http://www.google.com/mapfiles/mapplets/distance/distance.xml

Отправка маплета в каталог

Если вы хотите поместить ваш маплет в каталог Карт Google, воспользуйтесь следующей формой для отправки.Наша цель — создать каталог с высококачественными маплетами, удобными и привлекательными для пользователей.Пока мы не можем включать в каталог все отправляемые маплеты, но мы стремимся к тому, чтобы их было как можно больше.

Отличия маплетов от стандартного API Карт

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

Упрощенная инициализация

Тег <Require feature="sharedmap"/> автоматически инициализирует API, поэтому вам не потребуется вручную загружать библиотеку Javascript или предъявлять ключ к API.Вам не нужно передавать элемент <div> конструктору объекта GMap2, поскольку он всегда возвращает ссылку на главную карту.

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

В API Карт Google необходимо инициализировать карту путем позиционирования с помощью метода setCenter().Для маплетов это позиционирование не требуется, поскольку они создаются на основе уже инициализированной карты.

Запрет нестандартного поведения

Маплеты не должны изменять стандартное поведение Карт Google, поэтому из них были удалены методы отключения перетаскивания, масштабирования по двойному клику и т. п.

Асинхронное взаимодействие с картой

Маплет и сайт Карт Google взаимодействуют асинхронно.В результате поведение ряда методов отличается от их стандартных аналогов в API Карт Google.Большинство операций изменения карты (например, setCenter(), addOverlay()) идентичны операциям в API Карт.Однако для операций, получающих возвращенное картой значение, требуется функция обратного вызова.В маплетах код Async добавлен к именам всех требуемых методов API Карт, и вместо этого их возвращаемые значения передаются функции обратного вызова в качестве аргумента.

Например, в API Карт запись будет следующая:

var zoom = map.getZoom();
alert("Текущий коэффициент масштаба " + zoom);
alert("Это произойдет после вывода сообщения о коэффициенте масштабирования");

Тогда как в маплете:

map.getZoomAsync(function(zoom) {
  alert("Текущий коэффициент масштаба " + zoom);
});  
alert("Это может произойти до или после вывода сообщения о коэффициенте масштаба");

Иногда может потребоваться одновременно выполнить несколько асинхронных запросов.Вместо выполнения последовательных или вложенных запросов функция-утилита GAsync(), используемая в маплетах, позволяет сделать несколько запросов за один вызов.Для использования функции GAsync() передайте ей объект, после него — заключенные в кавычки методы и в качестве последнего аргумента — функцию обратного вызова:

GAsync(map, 'getZoom', 'getCenter', function(zoom,center) {
  // место для кода
}

Чтобы выполнить запросы на нескольких объектах, передайте дополнительные объекты и заключенные в кавычки методы сразу после объектов:

GAsync(map, 'getZoom', 'getCenter', marker, 'getPoint',
  function(масштаб,центр,точка) {
  // code here
}

Вопросы безопасности и очистка информационного окна

Данный маплет выполняется в кадре iframe, размещенном на сайте gmodules.com, поэтому он не обращается к файлам cookie пользователя Google и не нарушает Javascript сайта Карт Google.Однако карта (и все отображаемые на ней элементы) расположена в домене maps.google.com, поэтому, когда маплет запрашивает вывод диалогового окна, выполняется очистка его содержания и только после этого оно передается карте.В информационных окнах Javascript запрещен и разрешены лишь некоторые элементы, указанные в списке разрешенных HTML-тегов и CSS.

Более того, такие операции, как добавление новых элементов управления картой и типов карт, в настоящее время требуют выполнения в карте стороннего кода Javascript, поэтому пока они запрещены.

Проксирование запросов удаленных данных со стороны Google

Маплеты обслуживаются с сайта gmodules.com, расположенного на управляемом сервере Google.Модель безопасности браузера не разрешает выполнение Javascript на сайте gmodules.com для запроса данных с любого другого домена, поэтому метод GDownloadUrl (или GXml) нельзя использовать внутри маплета для приема данных с вашего сервера.

Вместо этого в API гаджетов Google используются следующие вызовы, получающие содержание с помощью прокси-сервера на сайте gmodules.com:

  • _IG_FetchContent(url, callback) — возврат содержания url в виде текста. С помощью этой функции выполняется прием HTML-содержания или простого текста.
  • _IG_FetchXmlContent(url, callback) — возврат и обработка XML-содержания url в виде DOM-объекта. Эта функция служит для приема XML-содержания, подлежащего синтаксическому анализу.

Отличие поведения этих методов от GDownloadUrl и GXml заключается в следующем.

  • Вызовы _IG_FetchContent и _IG_FetchXmlContent служат для приема данных с любого веб-сайта в Интернете.
  • Вызов _IG_FetchXmlContent более строгий, чем GXml и требует, чтобы XML-файл начинался со строки <?xml version="1.0" encoding="UTF-8"?>
  • Вызовы _IG_FetchContent и _IG_FetchXmlContent автоматически кэшируют содержание, чтобы снизить нагрузку на серверы.Сведения о том, как изменить длительность кэширования или отключить его, см. в разделе Обновление кэша документации по API гаджетов.

Преобразование существующего мэшапа API Карт в маплет

Если у вас уже есть сайт, созданный с помощью API Карт Google, ознакомьтесь со статьей Преобразование мэшапа API Карт в маплет.

Перейти к разделу Основные сведения о программировании маплетов.