GoogleMap aus HTML Tabelle erstellen
Da ich nichts wirklich einfaches gefunden hab wie man aus einer einfachen HTML Tabelle welche irgendwelche Orte enthält eine GoogleMap erstellen kann, hab ich selbst mal ein bisschen rumprobiert.
Zutaten:
- jquery
- einen Teelöffel Javascript
- eine html tabelle
Zunächst habe ich eine einfache Tabelle erstellt und die wichtigen Daten mit eindeutigen class Namen kenntlich gemacht. In meiner Map will ich die Informationen "Name", "Beschreibung" und natürlich die Lage (Latitude, Longitude) unterbringen. Daher sieht meine Html Tabelle so aus:
Die angegebenen Punkte sind hier übrigens nur Beispielhaft angegeben, ich hab keine Ahnung was es dort gibt ;-)
-
<table id="data">
-
<th>name</th>
-
<th>description</th>
-
<th>lat</th>
-
<th>lng</th>
-
</tr>
-
<td class="name">Punkt 1</td>
-
<td class="desc">Eine ganz tolle Beschreibung für Punkt 1</td>
-
<td class="lat">37.4419</td>
-
<td class="lng">-122.3419</td>
-
</tr>
-
<td class="name">Punkt 2</td>
-
<td class="desc">Eine ganz tolle Beschreibung für Punkt 2</td>
-
<td class="lat">37.5419</td>
-
<td class="lng">-122.1419</td>
-
</tr>
-
<td class="name">Punkt 3</td>
-
<td class="desc">Eine ganz tolle Beschreibung für Punkt 3</td>
-
<td class="lat">37.3419</td>
-
<td class="lng">-122.2419</td>
-
</tr>
-
<td class="name">Punkt 4</td>
-
<td class="desc">Eine ganz tolle Beschreibung für Punkt 4</td>
-
<td class="lat">37.6419</td>
-
<td class="lng">-122.2419</td>
-
</tr>
-
</table>
Dann mein zusätzliches Javascript welches alle Zeilen der Tabelle in die Map einfügen soll sieht dank jquery so aus:
-
//<!--[CDATA[
-
function createMarker(lat, lng, name, desc)
-
{
-
var point = new GLatLng(lat, lng);
-
var marker = new GMarker(point);
-
GEvent.addListener(marker, "click", function()
-
{
-
marker.openInfoWindowHtml("<b>" + name + "</b>" + desc);
-
});
-
return marker;
-
}
-
-
function load()
-
{
-
if (GBrowserIsCompatible())
-
{
-
var map = new GMap2(document.getElementById("map"));
-
map.setCenter(new GLatLng(37.4419, -122.1419), 10);
-
getTableData(map);
-
}
-
}
-
-
function getTableData(map)
-
{
-
var data=new Array();
-
$("#data").find('tr').each(function(i)
-
{
-
if(i>0) {
-
map.addOverlay(
-
createMarker(
-
parseFloat(Number($(this).find('.lat').html())),
-
parseFloat(Number($(this).find('.lng').html())),
-
$(this).find('.name').html(),
-
$(this).find('.desc').html())
-
);
-
}
-
});
-
}
-
-
$(load);
-
//]]-->
Das Javascript sucht zunächst nach einem Element mit der id Data und fügt anschließend jedes "tr" in die Map ein. Zu guter letzt sagen wir noch mit "$(load)" das der Browser sobald alles geladen wurde die Funktion load aufrufen soll.
Um das Beispiel local laufen zu lassen oder auf eurer Seite müsst ihr euch noch einen eigenen GoogleMaps Api key holen (für lokales testen einfach einen ApiKey für http://localhost beantragen) und diesen im HTML Quelltext des Beispiels anpassen. Ebenso muss noch jquery inkludiert werden.
Zusammen mit jquery und dem GoogleMaps Javascript sieht das so aus: Beispiel
Mehr Infos: