Autor Zpráva
Honza Z
Profil
Dobrý den,
narazil jsem na problém, který je řešen např. tady: http://stackoverflow.com/questions/3158598/google-maps-api-v3-adding-an-infowindow-to-each-marker. Bohužel se s tím nedokážu vypořádat.
Jedná se o to, že se v InfoWindow zobrazí data posledního načteného bodu a nikoliv toho bodu, na který najedu myší.

function initialize() {                   
  var myLatlng = new google.maps.LatLng(49.7586,15.4956);
  var mapOptions = {
    zoom: 7,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.HYBRID
  };
        
   var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

var poloha = new google.maps.LatLng(java_b[j],java_l[j]);
  var marker = new google.maps.Marker({
      position: poloha,
      map: map,
      icon: {url:"HZ2.GIF",
      scaledSize: new google.maps.Size(7,7) }
      
  });
 
  var infowindow = new google.maps.InfoWindow({
      content: 'Stát: '+zeme + '<br>'+
               'HÚ: '+usek + '<br>'+
               'HZ: '+java_hz[j]+'<br>'+
               '<form action="index1.php"><input type="hidden" name="usek" value=11><input type="submit" value="zobrazit hraniční úsek (od začátku úseku)">'
 });
   
  google.maps.event.addListener(marker, 'mouseover', function() { 
                
                infowindow.open(map, this);  
  });         
                                     
}                                     
google.maps.event.addDomListener(window, 'load', initialize);
Děkuji předem za radu
Schamann
Profil *
Ahoj, resim totez, reseni je : kazdy marker musi byt jedinecny, kazde infowindow musis byt jedinecne
var marker1 = new google.maps.Marker({
      position: poloha,
      map: map,
      icon: {url:"HZ2.GIF",
      scaledSize: new google.maps.Size(7,7) }      
  });
 
  var infowindow1 = new google.maps.InfoWindow({
      content: 'Stát: '+zeme + '<br>'+
               'HÚ: '+usek + '<br>'+
               'HZ: '+java_hz[j]+'<br>'+
               '<form action="index1.php"><input type="hidden" name="usek" value=11><input type="submit" value="zobrazit hraniční úsek (od začátku úseku)">'
 });
   
  google.maps.event.addListener(marker1, 'mouseover', function() {                 
                infowindow1.open(map, this);  
  });  
v dalsim cyklu bude marker2, infowníndow2 atd atd,....

ja ted prave resim to jak to v tom JS udelat v cyklu tak, aby se ty prommene generovali automaticky.
Chamurappi
Profil
Reaguji na Schamanna:
dalsim cyklu bude marker2, infowníndow2 atd atd
Nesmysl. Stačí si správně pohlídat rozsahy platnosti proměnných. Není nutné užívat podobně hloupá řešení.


Reaguji na Honzu Z:
se v InfoWindow zobrazí data posledního načteného bodu
Jak a kde je načítán? To v uvedeném kódu není. Problém je v částech kódu, které jsi při vkládání sem vynechal.
Schamann
Profil *
nevim co je na tom za nesmysl, v developers.google to bezne pouzivaji jako vzor kodu napr tady:
http://gmaps-samples-v3.googlecode.com/svn/trunk/single-infowindow/single-infowindow.html
myslim ze to funguje zcela spolehlive.
Netvrdim, ze to nejde jinak, ale ja to takhle pouzivam a zadny problem s tim nemam a ani bych to nepovazoval za hloupe reseni.
Honza Z
Profil
Chamurappi, Chamurappi, Chamurappi, Chamurappi, Chamurappi:
Reaguji na Honzu Z:
„se v InfoWindow zobrazí data posledního načteného bodu“
Jak a kde je načítán? To v uvedeném kódu není. Problém je v částech kódu, které jsi při vkládání sem vynechal.


Data načítám pomocí php a Mysql databáze. Databáze má cca 150000 bodů.
Tohle je v podstatě celý kód
<!DOCTYPE html>
<html>
  <head>
      <meta http-equiv="content-type" content="text/html; charset=Windows-1250"/> 
    <title>Státní hranice</title>
    
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
   
  </head>
   <body bgColor="#008b00">                     
  
   <?php
  
  
$j=0;   
$cestaJe=0;                                     

if ($j!=0) $usek=$usek1;

 require("connect.php");
$vysledek = mysql_query("SELECT * FROM hranice
                                  where (substr(idz,3,1)=1) 
                                  order by (idz && PC) "  
                                  );
 
 if(!$vysledek):echo "Problémy ve spojení s databází 1 ";
 break;
 endif;                                 
$i=1;
while ($zaznam = mysql_fetch_array($vysledek) ): 

  $souradPC[$i]=$zaznam["PC"];
  $souradid[$i]=$zaznam["idz"];
  $souradhz[$i]=$zaznam["hz"];
  $souradx[$i]=$zaznam["x"];
  $sourady[$i]=$zaznam["y"];
  $souradh[$i]=$zaznam["h"];
  $souradb[$i]=$zaznam["b"];
  $souradl[$i]=$zaznam["l"];
  $souradhel[$i]=$zaznam["hel"];
  $souradfoto[$i]=$zaznam["foto"];
  $souradnlb[$i]=$zaznam["hvt_id"];
  $souradkatr[$i]=$zaznam["katastr"];
  $souradkatrvedl[$i]=$zaznam["katastr_vedl"];
  
  
  $i=$i+1;
endwhile;
if ($j>1) $j=$jj;
else $j=1; 
                      //konec cteni databaze hranice
  

mysql_close($mysql);  

?> 


  <script>
  
 <?php           
    require("prevod.php");          //prevod pole z php do java skriptu 
 ?>  
    
function initialize() {                      //ini
  var myLatlng = new google.maps.LatLng(49.7586,15.4956);
  var mapOptions = {
    zoom: 7,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.HYBRID
  };
        
   var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
   
 for(j=0;j< <?php echo (count($souradPC))-3; ?>; j++) 
  {                                                     //1
  
   var treti=java_id[j].substring(2,3);
   var idecko=java_id[j].substring(0,2);    
    
                if (idecko==41 || idecko==64 || idecko==11 || idecko==22 || idecko==81) usek="I"; 
               .
               .
               .
               if (idecko>80) zeme="Polsko";
               .  
               .
  
    
   
    
      
  var poloha = new google.maps.LatLng(java_b[j],java_l[j]);
  var marker = new google.maps.Marker({
      position: poloha,
      map: map,
      icon: {url:"HZ2.GIF",
      scaledSize: new google.maps.Size(7,7) }
      
  });   
  
  var infowindow = new google.maps.InfoWindow({
      content: 'Stát: '+zeme + '<br>'+
               'HÚ: '+usek + '<br>'+
               'HZ: '+java_hz[j]+'<br>'+
               '<form action="index1.php"><input type="hidden" name="usek" value=11><input type="submit" value="zobrazit hraniční úsek (od začátku úseku)">'
 });
  
  
      
  google.maps.event.addListener(marker, 'mouseover', function() { 
             //   infowindow.setContent(contentString);
                infowindow.open(map, this);  
  });         
 }                                     //1
}                                      // ini
google.maps.event.addDomListener(window, 'load', initialize);

    </script> 
    
    <div id="map-canvas"></div>
  </body>
</html>

Ve V2 mně to funguje. Tady je link na V2: www.statnihranice.cz, a tady na pokus převést to do V3. www.statnihranice.cz/index23.php.
Možná, že by ten cyklus vykreslení neměl být ve funkci initialize(), ale v samostatné funkci.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: