Plot-Koordinaten aus der Datenbank in google maps, keep smiling für neue Werte
Erstelle ich eine map-Anwendung, wo ein Gerät sendet Koordinaten in einer web-Datenbank, die alle 10 Sekunden. Habe ich aufgetragen Sie auf google maps. Aber das problem ist, ich brauchen, um neu zu laden der Karte alle 5 Sekunden zum laden, die neuen Koordinaten, die gekommen waren. Dabei kann ich die setTimeout () - javascript-Funktion. Ich bin mir nicht sicher, ob ich diese Abfrage verwenden, um Abfragen, die Letzte eingefügte Zeile.. SELECT lat, lon FROM map ORDER BY id DESC LIMIT 1
('id' auto-Schritten). Ich weiß, dass es vielleicht etwas besser. Jegliche Hilfe würde sehr geschätzt werden. Danke. Das ist mein code bisher.
<?php $db = mysql_connect("localhost","root","qwerty");
mysql_select_db("test", $db); ?>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(37.386339,-122.085823);
var myOptions = {
zoom: 13,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var WalkingPathCoordinates = [];
<?php $coordinates="SELECT * FROM map";
$Result1 = mysql_query($coordinates, $db)or die(mysql_error());
while(list($id,$lat,$long) = mysql_fetch_row($Result1))
{
echo "var latlng = new google.maps.LatLng(".$lat.",".$long.")\n";
echo "WalkingPathCoordinates.push(latlng);\n";
}
?>
var WalkingPath = new google.maps.Polyline({
path: WalkingPathCoordinates,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
WalkingPath.setMap(map);
}
</script>
- Betrachten Sie diese Methode: stackoverflow.com/questions/2625556/...
- danke! Ich habe gerade setTimeout(initialisieren,10000); nur oben WalkingPath.setMap(map); und die Seite beginnt erfrischend. Gibt es eine Möglichkeit, zu aktualisieren, die nur den Marker und nicht die ganze Seite?
- whoa! warten Sie eine Sekunde! Aufrufen von initialize fn im Timeout bringt nur wieder die Seite aus dem cache! wir müssen die Lage.reload(true) statt!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht möchten, dass die gesamte Karte aktualisiert werden, Sie können trennen Sie die initialize-Funktion in zwei Funktionen. Zum Beispiel, können Sie haben eine Funktion aufgerufen, initializeMap (), die nicht der Teil, der zeigt die Karte auf der Seite, so etwas wie dieses:
Anderen Funktion aufgerufen werden könnte refreshMarkers (), und führen Sie die Bestellung im Zusammenhang mit der Marker. Mit
map
deklariert, die außerhalb der initializeMap () - Funktion, es ist zugänglich von der refreshMarkers () - Funktion.Den initializeMap () - Funktion sollte dann nur einmal aufgerufen werden, während die refreshMarker() gesendet werden soll, setTimeout (), wie Sie es initialisieren Sie in Ihrem Beispiel. In dieser Weise werden nur die refreshMarker() Zeug wird gemacht auf jeden timeout.
Leider habe ich nicht die Möglichkeit hatte, diesen zu testen, so bin ich nicht sicher, ob Sie brauchen, um auch das löschen der alten Marker in der refreshMarker Funktion.
Lassen Sie mich wissen, ob das hilft