Вот Jsfiddle , который показывает вам, как выполнить "внешнее" взаимодействие JavaScript с картой с маркерами. Да, вам нужно сохранить маркеры и соответствующее информационное окно в массиве, чтобы вы могли получить к нему доступ. Я создал два случайных маркера и использую координаты из массива кораблей.
Ниже приведен HTML-код с двумя общими ссылками, в котором при щелчке по ссылке можно было бы отцентрировать создатель 1 и открыть его информационное окно, а для маркера 2 наоборот:
<div id='map_canvas'></div>
<a href='#' onClick="gotoPoint(1);">Click for marker 1</a><br/>
<a href='#' onClick="gotoPoint(2);">Click for marker 2</a>
В createMarker я сохраняю созданного производителя вместе с его ассоциированным InfoWindow и помещаю его в массив маркеров глобальной области видимости. При наведении на маркер откроется соответствующее информационное окно:
function createMarker(lat, lon, html) {
var newmarker = new google.maps.Marker({
position: new google.maps.LatLng(lat, lon),
map: map,
title: html
});
newmarker['infowindow'] = new google.maps.InfoWindow({
content: html
});
google.maps.event.addListener(newmarker, 'mouseover', function() {
this['infowindow'].open(map, this);
});
marker.push(newmarker);
}
Здесь, в gotoPoint, я просто задаю номер маркера в качестве параметра. Я в основном устанавливаю центр карты на центр маркера, используя new google.maps.LatLng
и использую lat и lng маркера, вызывая marker[myPoint-1].position.lat();
и marker[myPoint-1].position.lng();
, и открываю ассоциированное InfoWindow с помощью marker[myPoint-1]['infowindow'].open(map, marker[myPoint-1]);
:
function gotoPoint(myPoint){
map.setCenter(new google.maps.LatLng(marker[myPoint-1].position.lat(), marker[myPoint-1].position.lng()));
marker[myPoint-1]['infowindow'].open(map, marker[myPoint-1]);
}
Дайте мне знать, если у вас есть вопросы по поводу этого примера.