Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1

    Problemi con markerclusterer delle API di Google Maps

    Salve a tutti,
    ho una pagina che visualizza più marker su una google maps richiamati da un xml generato dinamicamente.
    Quando provo a creare un raggruppamento con markerclusterer, sulla mappa si visualizza un solo marker.
    Qualcuno può aiutarmi a capire dove sbaglio?
    Grazie

    allego il codice utilizzato
    codice:
    <head>
    <title>clustering marker</title>
    <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
    <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js"></script>
    <script type="text/javascript">
        
        //<=!=[=C=D=A=T=A=[
    
    function load() {
              var map = new google.maps.Map(document.getElementById("map"), {
                  center: new google.maps.LatLng(40.9, 16.7),
                zoom: 8,
                mapTypeId: 'roadmap'
                 });
              var infoWindow = new google.maps.InfoWindow;
    
                  downloadUrl(xml.asp, function(data) { 
                    var xml = data.responseXML;
                    var markers = xml.documentElement.getElementsByTagName("marker");
                    for (var i = 0; i < markers.length; i++) {
                           var label = markers[i].getAttribute("label");
                           var lat = markers[i].getAttribute("lat");
                         var lng = markers[i].getAttribute("lng");
                         var data = markers[i].getAttribute("data");
                          var point = new google.maps.LatLng(
                              parseFloat(markers[i].getAttribute("lat")),
                              parseFloat(markers[i].getAttribute("lng")));
                          var html = "<b>" + label + "</b> <br/>" + markers[i].getAttribute("data");
                           var marker = new google.maps.Marker({
                               map: map,
                            position: point,
                              });
                        markers.push(marker); // istruzione non funzionante
    
                   bindInfoWindow(marker, map, infoWindow, html);
                }
                        var mcOptions = {gridSize: 5, maxZoom: 15}; // istruzione non funzionante
                         var markerCluster = new MarkerClusterer(map, markers, mcOptions); // istruzione non funzionante
          });
    
        }
    
        function bindInfoWindow(marker, map, infoWindow, html) {
          google.maps.event.addListener(marker, 'click', function() {
            infoWindow.setContent(html);
            infoWindow.open(map, marker);
          });
        }
    
        function downloadUrl(url, callback) {
          var request = window.ActiveXObject ?
              new ActiveXObject('Microsoft.XMLHTTP') :
              new XMLHttpRequest;
    
          request.onreadystatechange = function() {
            if (request.readyState == 4) {
              request.onreadystatechange = doNothing;
              callback(request, request.status);
            }
          };
    
          request.open('GET', url, true);
          request.send(null);
        }
    
        function doNothing() {}
    
        //]=]=>
    
      </script>
    
      </head>

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, ho usato poco le v3 ma dalla documentazione mi pare che il tuo presunto array markers sia in realta già qualcos'altro, ossia il documento xml che cicli. A questo fai aggiungi un elemento ma non è un array.
    Quindi dovresti avere var gMapsMarkers = []; e poi fare il push su di questo e passarlo al makerCluster.
    Il problema magari è tutto qui.

  3. #3
    Grazie mille, ci proverò anche se temo che sia complesso per le mie capacità.


    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Ciao, ho usato poco le v3 ma dalla documentazione mi pare che il tuo presunto array markers sia in realta già qualcos'altro, ossia il documento xml che cicli. A questo fai aggiungi un elemento ma non è un array.
    Quindi dovresti avere var gMapsMarkers = []; e poi fare il push su di questo e passarlo al makerCluster.
    Il problema magari è tutto qui.

  4. #4
    prova cosi:

    codice:
    var markersArr = [];
    
    function load() {
              var map = new google.maps.Map(document.getElementById("map"), {
                  center: new google.maps.LatLng(40.9, 16.7),
                zoom: 8,
                mapTypeId: 'roadmap'
                 });
              var infoWindow = new google.maps.InfoWindow;
    
                  downloadUrl(xml.asp, function(data) { 
                    var xml = data.responseXML;
                    var markers = xml.documentElement.getElementsByTagName("marker");
                    for (var i = 0; i < markers.length; i++) {
                           var label = markers[i].getAttribute("label");
                           var lat = markers[i].getAttribute("lat");
                         var lng = markers[i].getAttribute("lng");
                         var data = markers[i].getAttribute("data");
                          var point = new google.maps.LatLng(
                              parseFloat(markers[i].getAttribute("lat")),
                              parseFloat(markers[i].getAttribute("lng")));
                          var html = "<b>" + label + "</b> <br/>" + markers[i].getAttribute("data");
                           var marker = new google.maps.Marker({
                               map: map,
                            position: point,
                              });
                        markersArr.push(marker); // istruzione non funzionante
    
                   bindInfoWindow(marker, map, infoWindow, html);
                }
                        var mcOptions = {gridSize: 5, maxZoom: 15}; // istruzione non funzionante
                         var markerCluster = new MarkerClusterer(map, markersArr, mcOptions); // istruzione non funzionante
          });
    
        }
    Questa volta, più che un voto.. è favoreggiamento.

  5. #5
    Grazie, ci ho provato ma il risultato non cambia.
    Ho provato ad aggiungere il rigo da te suggerito anche a vari livelli nel codice ma non funziona comunque.
    Grazie lo stesso.

    Quote Originariamente inviata da Al_katraz984 Visualizza il messaggio
    prova cosi:

    codice:
    var markersArr = [];
    
    function load() {
              var map = new google.maps.Map(document.getElementById("map"), {
                  center: new google.maps.LatLng(40.9, 16.7),
                zoom: 8,
                mapTypeId: 'roadmap'
                 });
              var infoWindow = new google.maps.InfoWindow;
    
                  downloadUrl(xml.asp, function(data) { 
                    var xml = data.responseXML;
                    var markers = xml.documentElement.getElementsByTagName("marker");
                    for (var i = 0; i < markers.length; i++) {
                           var label = markers[i].getAttribute("label");
                           var lat = markers[i].getAttribute("lat");
                         var lng = markers[i].getAttribute("lng");
                         var data = markers[i].getAttribute("data");
                          var point = new google.maps.LatLng(
                              parseFloat(markers[i].getAttribute("lat")),
                              parseFloat(markers[i].getAttribute("lng")));
                          var html = "<b>" + label + "</b> <br/>" + markers[i].getAttribute("data");
                           var marker = new google.maps.Marker({
                               map: map,
                            position: point,
                              });
                        markersArr.push(marker); // istruzione non funzionante
    
                   bindInfoWindow(marker, map, infoWindow, html);
                }
                        var mcOptions = {gridSize: 5, maxZoom: 15}; // istruzione non funzionante
                         var markerCluster = new MarkerClusterer(map, markersArr, mcOptions); // istruzione non funzionante
          });
    
        }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.