Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Google maps api балун. (http://forum.oszone.net/showthread.php?t=237540)

veter48 29-06-2012 12:21 1942632

Google maps api балун.
 
Здравствуйте, сделал не большую карту на 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 1944248

Почему если я после «$('#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);

                        }
                });



Время: 10:18.

Время: 10:18.
© OSzone.net 2001-