Все мы знаем, что есть широта и долгота у каждой точки на планете Земля. Да и на других планетах тоже :) И существуют сервисы, позволяющие по адресу вычислить координаты места — широту и долготу, и после этого еще и показать где это место находится. Два из этих сервиса известны широкой аудитории — это Google и Yandex. И на примере Google я покажу как использовать эту возможность.
Однако, зачем это может быть нужно? Это может быть нужно для многих случаев:
- например, ваш клиент на сайте заполняет форму заказа товара и пишет адрес, и он автоматически может увидеть: правильно ли он заполняет или нет по карте, где отобразится точка доставки груза.
- Или например, у вас в базе куча адресов и вы хотите вывести на сайте их все с маленькими картами.
var geocoder = new GClientGeocoder();
var address = "Санкт-Петербург, Невский пр.100";
geocoder.getLatLng(
address,
function(point) {
if (!point) {
alert(address + " не обнаружен");
} else {
alert(point.toString());
}
}
);
var map = new GMap2(document.getElementById("map_canvas"));
var geocoder = new GClientGeocoder();
var address = "Санкт-Петербург, Невский пр.100";
geocoder.getLatLng(
address,
function(point) {
if (!point) {
alert(address + " not found");
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindow(document.createTextNode(address));
}
}
);
Таким образом, мы получаем вывод карты в тег <div id=»map_canvas»></div>. Не забудьте его поставить.
Если вы хотите вывести несколько карт на одной странице, то следует вывести несколько тегов div с разными идентификаторами и к каждому подключить свою карту:
<div id=»map_canvas1″></div>
<div id=»map_canvas2″></div>
<div id=»map_canvas3″></div>
var map1 = new GMap2(document.getElementById("map_canvas1"));
var map2 = new GMap2(document.getElementById("map_canvas2"));
var map3 = new GMap2(document.getElementById("map_canvas3"));
Соответственно, нужно будет и изменить код вывода точки на карту, чтобы вывод точки шел на нужную карту.
Если интерес к этой теме у читателей блога будет, то я напишу продолжение, рассказывающее о том, как можно подправить шаблон к компоненту catalog.section, чтобы для свойства, где хранится адрес, автоматически рисовалась карта с точкой.
А можно где-то посмотреть пример. Как это работает?
Я это использовал на этом сайте для списков адресов http://www.outsors.ru/library/notify_for_you/mvd_of_st_petersburg.php
Используется специальный компонент. В принципе через какое-то время я его выпущу в продажу.