У меня есть карта, которая имеет флажки для пользователей, чтобы выбрать, что они хотели бы отображать на карте. Все работает хорошо, за исключением следующих двух элементов.Google Maps v3 Централизация и управление Infowindow
Когда пользователь выбирает элемент из списка маркер делает изображение на карте, однако карта не повторно центр на маркер. Это необходимо для маркера, который находится за пределами видимой области карты при загрузке страницы.
Когда у меня есть несколько маркеров, открытых на карте, я хотел бы иметь только 1 открытое окно, в настоящее время, если я нажму 10 маркеров, откроется 10 инфоокен. Я хотел бы иметь его там, где, если infowindow открыт, и нажимается другой маркер, тогда закрывается первое закрытие.
Я наклеил фрагмент кода для одного из маркеров ниже, любая помощь будет принята с благодарностью!
jQuery(document).ready(function(){
/**
* The Map object.
* @type {google.maps.Map}
*/
var mapOptions = {
center: new google.maps.LatLng(36.812946,-119.746953),
zoom: 16,
mapTypeId: google.maps.MapTypeId.SATELLITE
};
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
/**
* The markers array.
* @type {Object}
*/
var markers = {};
markers.building37 = [];
var marker0237 = new google.maps.Marker({
visible: false,
icon: new google.maps.MarkerImage("images/website/brown_Marker.png",new google.maps.Size(32,37),null,null),
title: 'Building',
position: new google.maps.LatLng(36.80694607313768,-119.73590791225433),
center: position,
map: map
});
markers.building37.push(marker0237);
var info_window0237 = new google.maps.InfoWindow({
content: '<div id="infobubble"><div id="img"><img src="images/buildings/Foundation001.jpg" alt="Foundation Building"></div><div id="desc"><h3>Foundation</h3></div></div>',
maxWidth:350,
});
google.maps.event.addListener(marker0237, "click", function() {
info_window0237.open(map,marker0237);
});
var showBuilding37 = false;
var mgrBuilding37 = null;
/**
* Toggles Building 37 Marker Group visibility.
*/
function toggleBuilding37()
{
showBuilding37 = !showBuilding37;
if (showBuilding37)
for (var i=0; i < markers.building37.length; i++)
markers.building37[i].setVisible(true);
if (mgrBuilding37)
{
if (showBuilding37)
{
mgrBuilding37.addMarkers(markers.building37, 0);
mgrBuilding37.refresh();
}
else
{
mgrBuilding37.clearMarkers();
mgrBuilding37.refresh();
}
}
else
{
mgrBuilding37 = new MarkerManager(map, {trackMarkers: true, maxZoom: 15});
google.maps.event.addListener(mgrBuilding37, "loaded", function() {
if (showBuilding37)
{
mgrBuilding37.addMarkers(markers.building37, 0);
mgrBuilding37.refresh();
}
else
{
mgrBuilding37.clearMarkers();
mgrBuilding37.refresh();
}
});
}
}
google.maps.event.addDomListener(
document.getElementById("building37-cb"),"click", toggleBuilding37);
});
У меня есть вызов для начальных карт, чтобы быть центром «вар MapOptions = { центра: новый google.maps.LatLng (36,812946, -119,746953),» Я попытался добавить атрибут map.center для маркера, и он либо не автоцентрирован, либо вообще не отображает маркер 2. Я не уверен, как закодировать список инфо-окон и достичь цикла через – J4s0nn3w
Когда вы добавляете маркер к коллекции маркеров. Вызовите map.setCenter (marker.location); для обновления центра карты. Я обновлю свой ответ и помогу вам со списком за секунду. – Jason
CCCason, благодарю вас за обновление и за помощь в этом. Когда я добавил map.setCenter (marker0237.position), но когда я делаю это, он центрирует карту на это место при загрузке страницы не тогда, когда пользователь выбирает здание. Я с нетерпением жду вашего обновленного кода и помощи. Thank You – J4s0nn3w