Ответ 1
Вот JSFiddle Demo, в котором показано, как установить маркер карты Google с помощью Lat Lng, а также когда щелчок даст вам информационное окно (пузырь):
Вот наш базовый HTML с 3 гиперссылками при щелчке добавляет маркер на карту:
<div id="map_canvas"></div>
<a href='javascript:addMarker("usa")'>Click to Add U.S.A</a><br/>
<a href='javascript:addMarker("brasil")'>Click to Add Brasil</a><br/>
<a href='javascript:addMarker("argentina")'>Click to Add Argentina</a><br/>
Сначала мы устанавливаем 2 глобальных переменных. один для карты и другой массив для хранения наших маркеров:
var map;
var markers = [];
Это наша инициализация для создания карты google:
function initialize() {
var latlng = new google.maps.LatLng(40.77627, -73.910965);
var myOptions = {
zoom: 1,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
Затем мы создаем 3 латинских местоположения, где хотим разместить наши маркеры:
var usa = new google.maps.LatLng(37.09024, -95.712891);
var brasil = new google.maps.LatLng(-14.235004, -51.92528);
var argentina = new google.maps.LatLng(-38.416097, -63.616672);
Здесь мы создаем функцию для добавления наших маркеров на основе того, что передается на нее. myloc будет либо usa, brasil или argentina, и затем мы создадим маркер на основе пройденного параметра. С помощью функции addMarker мы проверяем и не создаем дублирующий маркер на карте, вызывая цикл for, и если мы уже прошли пропущенный параметр, мы возвращаемся из функции и ничего не делаем, иначе мы создаем маркер и надавить на массив глобальных маркеров. После создания маркера мы добавляем информационное окно с его ассоциированным маркером, делая markers[markers.length-1]['infowin']
markers.length-1, просто получая только новый маркер в массиве. В информационном окне мы устанавливаем контент с помощью html. Это в основном информация, которую вы вводите в пузырь или информационное окно (это может быть информация о погоде, которую вы можете заполнить, используя API погоды и т.д.). После того, как информационное окно будет добавлено, мы добавим прослушиватель событий onclick с помощью API добавления API Google Map и, когда щелкнуть маркер, мы хотим открыть связанное с ним информационное окно, набрав this['infowin'].open(map, this)
, где карта является нашей глобальной картой, и это это маркер, с которым мы в настоящее время ассоциируем событие onclick.
function addMarker(myloc) {
var current;
if (myloc == 'usa') current = usa;
else if (myloc == 'brasil') current = brasil;
else if (myloc == 'argentina') current = argentina;
for (var i = 0; i < markers.length; i++)
if (current.lat() === markers[i].position.lat() && current.lng() === markers[i].position.lng()) return;
markers.push(new google.maps.Marker({
map: map,
position: current,
title: myloc
}));
markers[markers.length - 1]['infowin'] = new google.maps.InfoWindow({
content: '<div>This is a marker in ' + myloc + '</div>'
});
google.maps.event.addListener(markers[markers.length - 1], 'click', function() {
this['infowin'].open(map, this);
});
}
Когда все будет сделано, мы в основном присоединяем событие window.onload
и вызываем функцию инициализации:
window.onload = initialize;