Войти

Показать полную графическую версию : Google maps api балун.


veter48
29-06-2012, 12:21
Здравствуйте, сделал не большую карту на Google maps api, надо сделать так чтоб одновременно мог быть открыт только один балун.

Функция инициализации:
function initialize() {
var myLatlng = new google.maps.LatLng(56.32,24.004);
var myOptions = {
zoom: 7,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}

map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

$('#markerTypes input[type="checkbox"]').bind('click', function () {

var markersType = $(this).val();

if($(this).attr("checked")) {

if(!gmarkers[markersType]) {

gmarkers[markersType] = [];

$.getJSON("get.php", {markersType:markersType}, function(data){

setMarkers(data, markersType);

});

}
else {
show(markersType);
}

}
else {
hide(markersType);

}
});
}



Функция установки маркеров:
function setMarkers(data, category) {
var infoWindow = new google.maps.InfoWindow;
var baseIcon = customIcons[category];
var marker_point = new Array();
var html = new Array();

for(var i = 0; i < data.markers.length; i++) {
marker_point[i] = new google.maps.LatLng(data.markers[i].lat, data.markers[i].lon);
html[i] = '<div style="font-weight:bold; background-color:#CCFFCC; line-height:30px">'+data.markers[i].mname+'</div>' +data.markers[i].desc +'<br />'+data.markers[i].novads + ' novads, '+data.markers[i].apdzvieta+', '+data.markers[i].address;
createMarker(marker_point[i], html[i], baseIcon, infoWindow, category);
}
}

function createMarker(point, html, icon, infoWindow, category) {
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});

marker.mycategory = category;

google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(map, marker);
});
gmarkers.push(marker);
return marker;
}

Показать маркеры одной категории:
function show(category) {
for (var i=0; i<gmarkers.length; i++) {
if (gmarkers[i].mycategory == category) {
gmarkers[i].setVisible(true);
}
}
document.getElementById(category+"box").checked = true;
}
Скрыть маркеры одной категории:
function hide(category) {
for (var i=0; i<gmarkers.length; i++) {
if (gmarkers[i].mycategory == category) {
gmarkers[i].setVisible(false);
}
}
document.getElementById(category+"box").checked = false;
infowindow.close();
}

veter48
02-07-2012, 11:59
Почему если я после «$('#markerTypes input[type="checkbox"]').bind('click', function () {
» ставлю infoWindow.close(); то маркеры вообще не появляются?

$('#markerTypes input[type="checkbox"]').bind('click', function () {
infoWindow.close();
var markersType = $(this).val();

if($(this).attr("checked")) {

if(!gmarkers[markersType]) {

gmarkers[markersType] = [];

$.getJSON("upload.php", {markersType:markersType}, function(data){

setMarkers(data, markersType);

});

}
else {
show(markersType);
}

}
else {
hide(markersType);

}
});




© OSzone.net 2001-2012