Google AJAX API
Многие уже слышали про эту новинку от google, как и я, но конкретной информации на русском я нашел очень мало. Поэтому и решил заполнить этот пробел, написав полное описание этой технологии.
Итак, Google Ajax API предоставляет пользователям интерфейс для доступа к google`овским сервисам через javascript. Отличительной особенностью такого подхода является то, что для работы со всеми этими удобствами нет необходимости писать обработчики на php и других серверных языках (скрипты которых обрабатываются на стороне сервера). Все что нужно – это просто использовать нужные методы уже готовых javascript-классов.
Все сервисы гугла сосредоточены в нескольких модулях (модуль поиска, модуль карт и т.л.). Кроме этого, компания google учла широкое распространение таких js-фрейморков как jquery, dojo, prototype, mootools и т.д., и добавила возможность их использования как отдельных модулей.
Другими словами, если вы используете библиотеку jquery у себя на сайте, то все что Вам нужно – это загрузить ее с гугла методом
google.load(‘jquery’, ‘1.2.3’);
И дальше уже работать с ними как с обычными их версиями, но обо всем по порядку. Для начала работы с Google Ajax API вам необходимо сделать две вещи:
- Получить специальный ключ.
- Подключить библиотеку загрузчика на странице Вашего сайта.
После получения персонального API ключа, на странице нужно разместить следующий код:
<script type="text/javascript" src=https://www.google.com/jsapi?key=YOUR_KEY></script>
где YOUR_KEY – это API-ключ.
После выполнения этого кода, станет доступным объект google. С помощью этого объекта можно подключать любые доступные модули, например модуль поиска или модуль карт:
<script type="text/javascript"> google.load("maps", "2"); google.load("search", "1"); </script>
Как видите, для подключения модулей используется метод load с двумя параметрами.
Первый – имя модуля, а второй – версия модуля.
Общий синтаксис этого метода выглядит так:
google.load(moduleName, moduleVersion, optionalSettings);
moduleName – имя модуля,
moduleVersion – версия модуля,
optionalSettings – возможные опции для модулей.
Возможны следующие опции:
- callback: функция, которую нужно запустить сразу после загрузки модуля.
- language: язык для локализации API и интерфейса элементов управления. Формат записи языка - ISO639 (en_EN или ru_RU и т.д.).
- nocss: true / false. Указывает, загружать ли css-файл со стандартным оформлением элементов управления. Можно указать false, если хотите использовать собственное оформление.
- packages: Массив строк, указывающий какие связанные с модулем пакеты так же необходимо загрузить. Непример, можно загрузить пакеты “piechart” и “table” вместе с модулем Visualization.
- base_domain: Имя домена, с которого загружать библиотеку. Например, можно загрузить бибилиотеку с “ditu.google.cn” с модулей maps для использования китайской версии Maps API.
- other_params: Другие параметры, специфичные для каждого модуля.
Например, так можно загрузить китайскую версию google maps 2:
google.load("maps", "2", {"language" : "ja_JP"});
Пространства имен
Имена библиотек, которые Вы загружаете, также являются пространствами имен. Например, при загрузке модуля maps, все методы и поля этого модуля будут доступны как методы и поля google.maps.
Управление версиями.
Вторым параметром google.load передается версия модуля. Версии всех модулей состоят их двух частей полной версии и номера ревизии в виде ВЕРСИЯ.РЕВИЗИЯ. Каждый раз, когда появляется новая версия модуля, номер ревизии увеличивается на один. Если версия модуля search была 2.23, и его обновили, то его версия станет 2.24.
При этом версия 2.23 будет называться стабильной (stable), а версия 2.24 – тестовой (test).
Теперь несколько слов о синтаксисе указаний версий. Например, если вы указали версию 2 во втором параметре для модуля search, то будет загружена последняя stable версия этого модуля. Если нужно загрузить test версию, то ее нужно будет указать полностью (2.24 например) или указать 2.x, что будет эквивалентно.
Динамическая загрузка.
В самом начале я писал, что для загрузки нужных модулей нужно вызывать google.load с соответствующими параметрами, но не сказал, что это совсем не обязательно делать вместе с подключением загрузчика. Нужные модули можно подгружать тогда, когда в них есть необходимость (например, в ответ на какие-то действия пользователя). Например, так:
function mapsLoaded() { var map = new google.maps.Map2(document.getElementById("map")); map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13); } function loadMaps() { google.load("maps", "2", {"callback" : mapsLoaded}); }
А функцию loadMaps забиндить на событие onClick.
Более того, сам загрузчик тоже может быть загружен динамически. Делается это так:
function mapsLoaded() { var map = new google.maps.Map2(document.getElementById("map")); map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13); } function loadMaps() { google.load("maps", "2", {"callback" : mapsLoaded}); } function initLoader() { var script = document.createElement("script"); script.src = "https://www.google.com/jsapi?key=ABCDEFG&callback=loadMaps"; script.type = "text/javascript"; document.getElementsByTagName("head")[0].appendChild(script); }
Обратите внимание на то, что в основе всех этих примеров лежит дополнительный параметр callback, который значительно упрощает жизнь.
Местоположение клиента
Когда ваша страница обращается к загрузчику, то он пытается определить ваше местоположение по IP, от которого пришел запрос. Данные о местоположении сохраняются в свойстве google.loader.ClientLocation. В случае, если нестоположение определить не удалось, то это свойство будет содержать null.
Само свойство ClientLocation содержит следующие поля:
- ClientLocation.latitude — широта ассоциированная с IP клиента.
- ClientLocation.longitude — долгота ассоциированная с IP клиента.
- ClientLocation.address.city — город
- ClientLocation.address.country — название государства
- ClientLocation.address.country_code — код государства в формате ISO 3166-1
- ClientLocation.address.region — регион для заданного IP (специфичный для каждого государства).
На сегодня все. В ближайших постах рассмотрю поподробнее некоторые из этих модулей.
Большое спасибо! Автору Респект!
большущее спс , круть )!!!!!!!!!!!!!!!!!
Только искал, как динамически подгрузить карту гуугл, спасибо
[…] туралы жазбамды жазып отырмын. Сайт ?ателеспесем GoogleAjax м?мкіншілін ?олданып Гуглды? серверінен іздеу […]
Ключ больше не требуется