Зачастую, при работе с API картами Google, требуется вводить заранее известные координаты (широта, долгота), чтобы построить маркер. Это бывает терпимым, когда у нас 1 объект. Но что, если их больше сотни?
Узнавать вручную широту и долготу каждого объекта - очень долгая процедура. Воспользуемся методами, которые предлагает нам Google.
С помощью php:
<?php
$address = "http://maps.google.com/maps/api/geocode/json?address=Москва";
echo htmlspecialchars(file_get_contents($address));
?>
Здесь мы запрашиваем данные объекта, а на выходе получаем подробнейший отчет в json формате (название, координаты, страну, область и т.д.). С таким количеством данных можно не только построить объект в картах, но и вывести дополнительные свойства.
Также можно получать данные в xml формате, для этого в запросе замените json на xml.
С помощью JavaScript:
var Mapss = function geoadres(adress) {
var resultlat = ''; var resultlng = '';
$.ajax({
async: false,
dataType: "json",
url: 'http://maps.google.com/maps/api/geocode/json?address=' + adress,
success: function(data){
for (var key in data.results) {
resultlat = data.results[key].geometry.location.lat;
resultlng = data.results[key].geometry.location.lng;
} }
});
return { lat: resultlat, lng: resultlng}
}
Здесь я создал функцию geoadres, в которую передается всего один запрос - адрес объекта. На выходе мы получаем широту и долготу в переменных: lat: resultlat, lng: resultlng. Запрос идет синхронно. Учтите это.
Проверить, как запускается и работает скрипт очень просто вот так:
alert(new Mapss('Москва ул. Ленина').lat);
alert(new Mapss('Москва ул. Ленина').lng);
По очереди появятся всплывайки с нужными координатами.
Теперь можно легко интегрировать данную функцию при построении маркера, например так:
var marker = new google.maps.Marker({
position: new google.maps.LatLng(new Mapss('Москва ул. Ленина').lat, new Mapss('Москва ул. Ленина').lng),
map: map,
title: 'Заголовок',
animation: google.maps.Animation.DROP
});
Этот способ неплох там, где нужно быстро построить карту или записать координаты в БД. Кстати, именно последний способ я рекомендую вам использоваться. В идеале координаты для карты должны браться из БД (т.е. быть заранее известными). В этом как раз и поможет один из вариантов их записи, который я описал.