Autor | Zpráva | ||
---|---|---|---|
Honza Z Profil |
#1 · Zasláno: 17. 11. 2013, 20:32:13
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); |
||
Schamann Profil * |
#2 · Zasláno: 18. 11. 2013, 02:20:26
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 |
#3 · Zasláno: 18. 11. 2013, 10:54:46
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 * |
#4 · Zasláno: 18. 11. 2013, 12:02:31
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 |
#5 · Zasláno: 18. 11. 2013, 13:46:10
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. |
||
Časová prodleva: 10 let
|
0