google maps marker

  • Creatore Discussione Creatore Discussione rikka@3
  • Data di inizio Data di inizio

rikka@3

Nuovo Utente
13 Nov 2013
6
0
0
Salve sto cercando di creare una mappa con dei markers partendo da degli indirizzi
ma ho un problema su tutti i marker che creo mi riporta come tag lo stesso .. ovvero l'ultima descrizione che ho caricato nell'array e non capisco il motivo ?!
vi riporto sotto lo script
HTML:
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Geocoding Simple</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  var geocoder;
  var map;
  var tag =""; 
  var address ="";
  var indirizzo = [ 'San Diego, CA', 'Firenze, Italia','Cortona, Italia','Perugia, Italia','Roma, Italia'		];
  var descrizione = [ '1111', '222222','333333','444444','55555'		];  
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
    mapTypeControl: true,
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
    navigationControl: true,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    for (var i = 0; i < indirizzo.length; i++) { 		address=indirizzo[i];       tag = descrizione[i];
      geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
          map.setCenter(results[0].geometry.location);

            var infowindow = new google.maps.InfoWindow(
                { content: '<b>'+tag+'</b>',
                  size: new google.maps.Size(150,50)
                });
    
            var marker = new google.maps.Marker({
                position: results[0].geometry.location,
                map: map, 
                title:tag
            }); 
            google.maps.event.addListener(marker, 'click', function() {
                infowindow.open(map,marker);
            });

          } else {
            alert("No results found");
          }
        } else {
          alert("Geocode was not successful for the following reason: " + status);
        }
      });
    }
  }
</script>
</head>
<body style="margin:0px; padding:0px;" onload="initialize()">
 <div id="map_canvas" style="width:100%; height:100%">
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-162157-1";
urchinTracker();
</script>
</body>
</html>
 
Ultima modifica di un moderatore:
Ciao, non ho capito il motivo ma potresti risolvere incrementando un'altra variabile all'interno della funzione geocode() e usarla poi per prendere la descrizione dall'array
Codice:
y = 0;
 for (i in indirizzo) {

   // etc etc

tag = descrizione[y];
var marker = new google.maps.Marker({
     position: results[0].geometry.location,
     map: map, 
     title: tag
 }); 
 y++;

// etc etc
 
Ciao, non ho capito il motivo ma potresti risolvere incrementando un'altra variabile all'interno della funzione geocode() e usarla poi per prendere la descrizione dall'array
Codice:
y = 0;
 for (i in indirizzo) {

   // etc etc

tag = descrizione[y];
var marker = new google.maps.Marker({
     position: results[0].geometry.location,
     map: map, 
     title: tag
 }); 
 y++;

// etc etc


scusa l'ignoranza .. ma cosi ho un for dentro ad un altro.. non mi moltiplica esponenzialmente l'inserimento dei marker?
 
il cilco è uno solo, ho postato solo le porzioni di codice interessate, questo è lo script intero
Codice:
<script type="text/javascript">
            var geocoder;
            var map;
            var tag =""; 
            var address ="";
            var indirizzo = [ 'San Diego, CA', 'Firenze, Italia','Cortona, Italia','Perugia, Italia','Roma, Italia'];
            var descrizione = [ '1111', '222222','333333','444444','55555'];  
            function initialize() {
                geocoder = new google.maps.Geocoder();
                var latlng = new google.maps.LatLng(-34.397, 150.644);
                var myOptions = {
                    zoom: 8,
                    center: latlng,
                    mapTypeControl: true,
                    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
                    navigationControl: true,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
                y = 0;
                for (i in indirizzo) { 		
                    address=indirizzo[i];      
                    
                    geocoder.geocode( { 'address': address}, function(results, status) {
                        
                        if (status == google.maps.GeocoderStatus.OK) {
                            if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
                                map.setCenter(results[0].geometry.location);

                                var infowindow = new google.maps.InfoWindow(
                                { content: '<b>'+ tag +'</b>',
                                    size: new google.maps.Size(150,50)
                                });
                                tag = descrizione[y];
                                var marker = new google.maps.Marker({
                                    position: results[0].geometry.location,
                                    map: map, 
                                    title: tag
                                }); 
                                y++;
                                google.maps.event.addListener(marker, 'click', function() {
                                    infowindow.open(map,marker);
                                });

                            } else {
                                alert("No results found");
                            }
                        } else {
                            alert("Geocode was not successful for the following reason: " + status);
                        }
                    });
                }
            }
        </script>
 
GRAZIE MILLE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

visto che sei disponibile ( cosa rara :) )
ti chiedo un'altra cosa..
adesso la nuvoletta sopra il marker mi viene solo o con il tag quando ci vado sopra oppure facendo click sul marker..
se io la volessi visualizzata fissa sempre senza bisogno di passarci o cliccarci come devo fare?

grazie ancoira
 
Basta aggiunger questo nel punto giusto
Codice:
infowindow.open(map,marker);
In quello di prima avevo posizionato male le altre istruzioni
provalo cosi
HTML:
<script type="text/javascript">
            var geocoder;
            var map;
            var tag =""; 
            var address ="";
            var indirizzo = [ 'San Diego, CA', 'Firenze, Italia','Cortona, Italia','Perugia, Italia','Roma, Italia'];
            var descrizione = [ '1111', '222222','333333','444444','55555'];  
            function initialize() {
                geocoder = new google.maps.Geocoder();
                var latlng = new google.maps.LatLng(-34.397, 150.644);
                var myOptions = {
                    zoom: 8,
                    center: latlng,
                    mapTypeControl: true,
                    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
                    navigationControl: true,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
                y = 0;
                for (i in indirizzo) { 		
                    address=indirizzo[i];      
                    
                    geocoder.geocode( { 'address': address}, function(results, status) {
                        
                        if (status == google.maps.GeocoderStatus.OK) {
                            if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
                                map.setCenter(results[0].geometry.location);                                
                                tag = descrizione[y];                                
                                var infowindow = new google.maps.InfoWindow(
                                { content: '<b>'+ tag +'</b>',
                                    size: new google.maps.Size(150,50)
                                });                                
                                var marker = new google.maps.Marker({
                                    position: results[0].geometry.location,
                                    map: map, 
                                    title: tag
                                });                                 
                                infowindow.open(map,marker);
                                google.maps.event.addListener(marker, 'click', function() {
                                    infowindow.open(map,marker);
                                });
                                y++;
                            } else {
                                alert("No results found");
                            }
                        } else {
                            alert("Geocode was not successful for the following reason: " + status);
                        }
                    });
                }
            }
        </script>
 
altro problemino

ciao ho cantato vittoria troppo presto!!!!!

adesso mi visualizza tutto correttamente nuvoletta compresa.. ho un solo piccolissimo problema che mi visualizza massimo 12 marker dopo mi restituisce questo errore

geocode not successful -reason OVER_QUERY_LIMIT

ho provato a mettere uno sleep(2) nel mezzo ma non cambia nulla..
hai qualche suggerimento?:book:
 
ancora problemi

Basta aggiunger questo nel punto giusto
Codice:
infowindow.open(map,marker);
In quello di prima avevo posizionato male le altre istruzioni
provalo cosi
HTML:
<script type="text/javascript">
            var geocoder;
            var map;
            var tag =""; 
            var address ="";
            var indirizzo = [ 'San Diego, CA', 'Firenze, Italia','Cortona, Italia','Perugia, Italia','Roma, Italia'];
            var descrizione = [ '1111', '222222','333333','444444','55555'];  
            function initialize() {
                geocoder = new google.maps.Geocoder();
                var latlng = new google.maps.LatLng(-34.397, 150.644);
                var myOptions = {
                    zoom: 8,
                    center: latlng,
                    mapTypeControl: true,
                    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
                    navigationControl: true,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
                y = 0;
                for (i in indirizzo) { 		
                    address=indirizzo[i];      
                    
                    geocoder.geocode( { 'address': address}, function(results, status) {
                        
                        if (status == google.maps.GeocoderStatus.OK) {
                            if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
                                map.setCenter(results[0].geometry.location);                                
                                tag = descrizione[y];                                
                                var infowindow = new google.maps.InfoWindow(
                                { content: '<b>'+ tag +'</b>',
                                    size: new google.maps.Size(150,50)
                                });                                
                                var marker = new google.maps.Marker({
                                    position: results[0].geometry.location,
                                    map: map, 
                                    title: tag
                                });                                 
                                infowindow.open(map,marker);
                                google.maps.event.addListener(marker, 'click', function() {
                                    infowindow.open(map,marker);
                                });
                                y++;
                            } else {
                                alert("No results found");
                            }
                        } else {
                            alert("Geocode was not successful for the following reason: " + status);
                        }
                    });
                }
            }
        </script>



ciao ho cantato vittoria troppo presto!!!!!

adesso mi visualizza tutto correttamente nuvoletta compresa.. ho un solo piccolissimo problema che mi visualizza massimo 12 marker dopo mi restituisce questo errore

geocode not successful -reason OVER_QUERY_LIMIT

ho provato a mettere uno sleep(2) nel mezzo ma non cambia nulla..
hai qualche suggerimento?
 

Discussioni simili