Catalog und Google Maps verknüpfen (z.B. mit dlh_googlemaps)
Hallo,
ich stehe momentan vor dem Problem, Katalogeinträge in irgendeiner Weise mit Google Maps zu verknüpfen, so dass diese später als "Karte der Katalogobjekte" angezeigt werden können.
Die Wege dahin sind sicherlich vielfältig - aus Gründen der schnellen Umsetzbarkeit habe ich aber vor dies mit Hilfe von bereits verfügbaren Modulen zu machen. Der Katalog bildet die Datenbasis, und für Google Maps habe ich mal dlh_googlemaps auserkoren, da es mit dem Template für dynamische Icons im Prinzip alles mitbringt.
Mein konkretes Problem ist nun die beiden Dinge zusammen zu bringen. Zum einen müssten Daten aus dem Katalog idealerweise geocodiert werden (aus Gründen der Usability) zum anderen fehlt mir trotz langer Suche hier im Forum der Hinweis wie ich Daten aus "fremden" Tabellen in einem Template verarbeiten kann...
Ich geb dazu mal ein Beispiel, als Basis dient das Template für glh_googlemaps, das hier (http://www.contao-community.de/showt...ps-Modul-0.1.4) beschrieben wird. Dort wird übrigens auch der Katalog als mögliche Quelle erwähnt.
HTML-Code:
<script type="text/javascript">
//<![CDATA[
mapdata = new Array();
mapdata['dlh_googlemap_ID'] = new Array();
mapdata['dlh_googlemap_ID']['marker'] = new Array();
mapdata['dlh_googlemap_ID']['marker'][0] = new Array();
mapdata['dlh_googlemap_ID']['marker'][0]['coords'] = '47.2,-2.6';
mapdata['dlh_googlemap_ID']['marker'][0]['icon'] = '';
mapdata['dlh_googlemap_ID']['marker'][0]['icon_position'] = '';
mapdata['dlh_googlemap_ID']['marker'][0]['icon_size'] = '';
mapdata['dlh_googlemap_ID']['marker'][0]['shadow'] = '';
mapdata['dlh_googlemap_ID']['marker'][0]['shadow_size'] = '';
mapdata['dlh_googlemap_ID']['marker'][0]['infotext'] = 'Dieser Marker ist<br />dynamisch eingefügt worden!';
mapdata['dlh_googlemap_ID']['marker'][0]['info_position'] = '';
mapdata['dlh_googlemap_ID']['marker'][0]['autoinfo'] = false;
mapdata['dlh_googlemap_ID']['marker'][1] = new Array();
mapdata['dlh_googlemap_ID']['marker'][1]['coords'] = '47.5,-2.6';
mapdata['dlh_googlemap_ID']['marker'][1]['icon'] = '';
mapdata['dlh_googlemap_ID']['marker'][1]['icon_position'] = '';
mapdata['dlh_googlemap_ID']['marker'][1]['icon_size'] = '';
mapdata['dlh_googlemap_ID']['marker'][1]['shadow'] = '';
mapdata['dlh_googlemap_ID']['marker'][1]['shadow_size'] = '';
mapdata['dlh_googlemap_ID']['marker'][1]['infotext'] = 'Noch ein freier Text';
mapdata['dlh_googlemap_ID']['marker'][1]['info_position'] = '';
mapdata['dlh_googlemap_ID']['marker'][1]['autoinfo'] = false;
//]]>
</script>
Ich würde nun im Prinzip gerne die Elemente aus dem Katalog auslesen, diese bei Google Geocodieren lassen und dann als Marker einfügen. Mir fehlt aber einfach das Wissen, ob es z.B. möglich ist auf Katalog-Elemente zuzugreifen (z.B. in der Art $catalog = this->catalog;)..
Mich würde es freuen, wenn mir jemand einen Schubser in die richtige Richtung geben könnte - evtl. ist das Ganze ja auch für mehrere Leute hier interessant.
Merci
Florian
Mehrere Marker mit Version 1.0.1
Hallo,
mit Hilfe des folgenden Beispiels von cubano und den Informationen aus der Datei DYNAMISCHE_MARKER.TXT habe ich versucht auf einer Map mehrere Marker anzuzeigen.
Zitat:
Zitat von
cubano
PHP-Code:
<?php if (count($this->entries)): ?>
<?php
$mark = 0;
?>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
mapdata = new Array();
mapdata['dlh_googlemap_20'] = new Array();
mapdata['dlh_googlemap_20']['marker'] = new Array();
<?php foreach ($this->entries as $entry): ?>
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>] = new Array();
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>]['coords'] = '<?php echo $entry[data]['googlemap']['value']; ?>';
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>]['icon'] = '';
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>]['icon_position'] = '';
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>]['icon_size'] = '';
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>]['shadow'] = '';
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>]['shadow_size'] = '';
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>]['infotext'] = '<?php echo $entry[data]['title']['value']; ?>';
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>]['info_position'] = '';
mapdata['dlh_googlemap_20']['marker'][<?php echo $mark; ?>]['autoinfo'] = false;
<?php $mark++; ?>
<?php endforeach; ?>
//--><!]]>
</script>
<?php endif; ?>
Ergebnis:
PHP-Code:
<script type="text/javascript">
//<![CDATA[
var gmap2_marker = newArray();
<?php $nr = 0; ?>
<?php foreach ($this->entries as $entry): ?>
function gmap2_dynmap(gmap2) {
gmap2_marker[<?php echo $nr; ?>] = new google.maps.Marker({
position: new google.maps.LatLng(<?php echo $entry[data]['koordinaten']['value']; ?>),
map: gmap2
});
}
<?php $nr++; ?>
<?php endforeach; ?>
//]]>
</script>
Leider wird damit nur der Marker des letzen Eintrages im Katalog angezeigt :( Es wäre nett wenn mir jemand, der es vielleicht sogar schon selbst zum laufen bekommen hat, weiterhelfen könnte.
Danke & Gruß
Recco