Próbuję stworzyć mapkę na podstawie google maps API, chciałbym wyświetlać na niej markery, których pozycje są zapisane w bazie danych MySQL i aktualizowane co kilka sekund, potrafię pobrać dane z bazy i wyświetlić współrzędne ostatnio dodanego markera ale gdy do bazy zostanie dodany kolejny rekord z aktualnymi współrzędnymi to trzeba ręcznie wciskać odświerz stronę. Moje pytanie brzmi jak ustawić automatyczne odświeżanie pozycji markerów (nie odświeżać całej mapy). Próbowałem w ten sposób:
Kod
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<!--skrypty-->
<script src='http://maps.google.com/maps?file=api&v=2&key=' type='text/javascript'></script>
</head>
<body onload='mapaStart()' onunload='GUnload()'>
<script type='text/javascript'>
<!--
function mapaStart()
{
if(GBrowserIsCompatible())
{
var mapa = new GMap2(document.getElementById('mapka'),{mapTypes: [G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP]});
mapa.enableDoubleClickZoom(); // włączenie zoomu przy podwójnym kliknięciu
mapa.addControl(new GLargeMapControl());
var typyMapy = mapa.getMapTypes();
typyMapy[0].getName= function() { return "Mapa";}
typyMapy[1].getName = function() { return "Satelita";}
typyMapy[2].getName = function() { return "Hybryda";}
mapa.addControl(new GMapTypeControl());
mapa.addControl(new GOverviewMapControl());
mapa.addControl(new GScaleControl());
<?php
$link = mysql_connect("localhost", "root", "Sql") or die("Could not connect: " . mysql_error());
mysql_selectdb("tab1",$link) or die ("Can\'t use dbmapserver : " . mysql_error());
$result = mysql_query("SELECT * FROM tab1 ORDER BY id DESC LIMIT 0,1",$link);
if (!$result)
{
echo "no results ";
}
while($row = mysql_fetch_array($result))
{
echo "var point = new GLatLng(".$row['lat'].",".$row['lon'].");\n";
echo "mapa.setCenter(point,12);\n";
echo "var marker = new GMarker(point,{title: 'cos'});\n";
echo "mapa.addOverlay(marker);\n";
}
mysql_close($link);
?>
odswiezMarker();
}
}
function odswiezMarker()
{
<?php
$link = mysql_connect("localhost", "root", "Sql") or die("Could not connect: " . mysql_error());
mysql_selectdb("tab1",$link) or die ("Can\'t use dbmapserver : " . mysql_error());
$result = mysql_query("SELECT * FROM tab1 ORDER BY id DESC LIMIT 0,1",$link);
if (!$result)
{
echo "no results ";
}
while($row = mysql_fetch_array($result))
{
echo "var point = new GLatLng(".$row['lat'].",".$row['lon'].");\n";
echo "var marker = new GMarker(point,{title: 'cos'});\n";
echo "mapa.addOverlay(marker);\n";
}
mysql_close($link);
?>
setTimeout('odswiezMarker()',1000);
}
-->
</script>
<div id='mapka' style='width: 700px; height: 550px; border: 1px solid black; background: gray;'>
</div>
</body>
</html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<!--skrypty-->
<script src='http://maps.google.com/maps?file=api&v=2&key=' type='text/javascript'></script>
</head>
<body onload='mapaStart()' onunload='GUnload()'>
<script type='text/javascript'>
<!--
function mapaStart()
{
if(GBrowserIsCompatible())
{
var mapa = new GMap2(document.getElementById('mapka'),{mapTypes: [G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP]});
mapa.enableDoubleClickZoom(); // włączenie zoomu przy podwójnym kliknięciu
mapa.addControl(new GLargeMapControl());
var typyMapy = mapa.getMapTypes();
typyMapy[0].getName= function() { return "Mapa";}
typyMapy[1].getName = function() { return "Satelita";}
typyMapy[2].getName = function() { return "Hybryda";}
mapa.addControl(new GMapTypeControl());
mapa.addControl(new GOverviewMapControl());
mapa.addControl(new GScaleControl());
<?php
$link = mysql_connect("localhost", "root", "Sql") or die("Could not connect: " . mysql_error());
mysql_selectdb("tab1",$link) or die ("Can\'t use dbmapserver : " . mysql_error());
$result = mysql_query("SELECT * FROM tab1 ORDER BY id DESC LIMIT 0,1",$link);
if (!$result)
{
echo "no results ";
}
while($row = mysql_fetch_array($result))
{
echo "var point = new GLatLng(".$row['lat'].",".$row['lon'].");\n";
echo "mapa.setCenter(point,12);\n";
echo "var marker = new GMarker(point,{title: 'cos'});\n";
echo "mapa.addOverlay(marker);\n";
}
mysql_close($link);
?>
odswiezMarker();
}
}
function odswiezMarker()
{
<?php
$link = mysql_connect("localhost", "root", "Sql") or die("Could not connect: " . mysql_error());
mysql_selectdb("tab1",$link) or die ("Can\'t use dbmapserver : " . mysql_error());
$result = mysql_query("SELECT * FROM tab1 ORDER BY id DESC LIMIT 0,1",$link);
if (!$result)
{
echo "no results ";
}
while($row = mysql_fetch_array($result))
{
echo "var point = new GLatLng(".$row['lat'].",".$row['lon'].");\n";
echo "var marker = new GMarker(point,{title: 'cos'});\n";
echo "mapa.addOverlay(marker);\n";
}
mysql_close($link);
?>
setTimeout('odswiezMarker()',1000);
}
-->
</script>
<div id='mapka' style='width: 700px; height: 550px; border: 1px solid black; background: gray;'>
</div>
</body>
</html>
Niestety nie odświeża pozycji markera.
Prosze o jakieś sugestie.
Pozdrawiam