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();
}
Функция инициализации:
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();
}