| 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: 12 let
|
|||
0