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
Codeschnipsel für Cataloglister + Infobox - Frage zu unterschiedliche Marker
Hallo zusammen,
hab ein bisschen rumprobiert und poste hier mal mein Ergebnis. Als Pixelschubser hab ich im Code nicht so die Erfahrung deshalb meine Bitte: Kann sich das von den erfahrenen Leuten mal jemand anschauen - funktionieren tut's zumindest:
Mit folgendem Code lässt sich im Listermodul neben der bloßen Markierung auch die Infobox zum jeweiligen Punkt öffnen:
Code:
<script type="text/javascript">
//<![CDATA[
<?php if (count($this->entries)): ?>
<?php $i = 0; ?>
function gmap1_dynmap(gmap1) {
<?php foreach ($this->entries as $entry): ?>
var myLatlng_<?php echo $i; ?> = new google.maps.LatLng(<?php echo $entry['data']['googlemap']['value']; ?>);
var gmap1_<?php echo $i; ?>_marker = new google.maps.Marker({
position: new google.maps.LatLng(<?php echo $entry['data']['googlemap']['value']; ?>),
map: gmap1
});
var gmap1_<?php echo $i; ?>_infowindow = new google.maps.InfoWindow({
content: '<?php echo $entry['data']['name']['value']; ?></br><?php echo $entry['data']['picture']['value']; ?></br><?php echo $entry['data']['int_link']['value']; ?>',
});
google.maps.event.addListener(gmap1_<?php echo $i; ?>_marker, 'click', function() {
gmap1_<?php echo $i; ?>_infowindow.open(gmap1,gmap1_<?php echo $i; ?>_marker);
});
<?php $i++; ?>
<?php endforeach; ?>
}
<?php endif; ?>
//]]>
</script>
Nun meine Frage: kann ich über dieses Template auch für verschiedene Kategorien unterschiedliche Marker anzeigen lassen? (z.B. Museen / Gastronomie / Einkaufsmöglichkeiten etc.)
Gruß
Hauge
Maximale Einträge > Begrenzung?
Hallo zusammen,
ich arbeite aktuell wieder an der Thematik und habe wie oben bereits beschrieben einige Einträge aus dem Catalog mit dem Listermodul in die googlemap integriert.
Aktuell stehe ich vor dem Problem, dass ich bei mehr als 62 Katalogeinträgen keine Anzeige mehr erhalte.
Ich habe mehrere Varianten getestet und aktuell das Limit des Listers auf 62 Einträge eingestellt. Ab 63 Einträgen erhalte ich keine Einträge mehr.
Es macht zwar wenig Sinn, zu viele Einträge auf einer Seite anzeigen zu lassen, ich habe jedoch vor, verschiedene Filter in eine Gesamtübersicht der Einträge einzubauen und dann kann es ggf. ab und an zu mehr als 62 Einträgen kommen. Der User hat dann aber eine leere map vor sich und erhält erst nach der Filterung entsprechende Anzeigen in der Map. Da es sich um ca. 1000 Einträge handelt kann es sein, dass er mehrmals filtern muss bevor er eine Anzeige erhält...
Meine Frage(n): gibt es da von Haus aus ein Limit oder kann das Problem auch Serverseitig sein?
Das bringt mich noch auf eine Idee: kann ich ggf. auch pro Zoom-Ebene unterschiedliche Einträge anzeigen lassen >>> Zeige pro Zoomebene maximal 50 Einträge >>> Lister mit Bedingung >>> die "wichtigsten" immer anzeigen usw.