tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
479
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Rayne Rayne ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Beiträge
    152
    Hallo liebe Leute und zunächst ein frohes und gesundes Jahr euch allen!

    Ich möchte auf meiner Seite eine Google-Karte einbinden, auf der per Marker/Pin Adressen angezeigt werden. Für eine Adresse ist das gar kein Problem, aber wie bekomme ich mehrere Marker dynamisch angezeigt? Man kann ja mehrere Marker fest in den Code schreiben, in meinem Fall müssten die allerdings dynamisch geladen werden.

    Ich benutze für die Website Wordpress und speichere die Koordinaten in Custom Fields.

    So sieht mein bisheriger Code aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    
    <script type="text/javascript">
    function initialize() {
     
    if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map_canvas"));
     
    <?php/* Ausgangsdaten konfigurieren: Längen und Breitenangabe des Karten-Mittelpunktes; Zoomfaktor, Kartentyp (G_NORMAL_MAP, G_HYBRID_MAP, G_SATELLITE_MAP)*/?>
    map.setCenter(new GLatLng(<?php echo get_post_meta($post->ID, 'lat', true); ?>, <?php echo get_post_meta($post->ID, 'lng', true); ?>), 13, G_NORMAL_MAP);
     
    function createMarker(point,html) {
    var marker = new GMarker(point);
     
    <?php/*Tooltip beim Klick auf den Marker anzeigen oder nicht*/?>
    GEvent.addListener(marker, 'click', function() {
    marker.openInfoWindowHtml(html);
    });
    return marker;
    }
     
    <?php/* Standort Anfang*/?>
    var point = new GLatLng(<?php echo get_post_meta($post->ID, 'lat', true); ?>, <?php echo get_post_meta($post->ID, 'lng', true); ?>);
    var marker = createMarker(point,'<?php echo get_post_meta($post->ID, 'store', true); ?><br><?php echo get_post_meta($post->ID, 'street', true); ?><br><?php echo get_post_meta($post->ID, 'zip', true); ?> <?php echo get_post_meta($post->ID, 'locality', true); ?>')
    map.addOverlay(marker);
    <?php/* Standort Ende*/?>
     
    <?php/* Standort Anfang*/?>
    var point = new GLatLng(<?php echo get_post_meta($post->ID, 'lat', true); ?>, <?php echo get_post_meta($post->ID, 'lng', true); ?>);
    var marker = createMarker(point,'<?php echo get_post_meta($post->ID, 'store', true); ?><br><?php echo get_post_meta($post->ID, 'street', true); ?><br><?php echo get_post_meta($post->ID, 'zip', true); ?> <?php echo get_post_meta($post->ID, 'locality', true); ?>')
    map.addOverlay(marker);
    <?php/* Standort Ende*/?>
     
    <?php/* Standort Anfang*/?>
    var point = new GLatLng(<?php echo get_post_meta($post->ID, 'lat', true); ?>, <?php echo get_post_meta($post->ID, 'lng', true); ?>);
    var marker = createMarker(point,'<?php echo get_post_meta($post->ID, 'store', true); ?><br><?php echo get_post_meta($post->ID, 'street', true); ?><br><?php echo get_post_meta($post->ID, 'zip', true); ?> <?php echo get_post_meta($post->ID, 'locality', true); ?>')
    map.addOverlay(marker);
    <?php/* Standort Ende*/?>
     
    <?php/* Standort Anfang*/?>
    var point = new GLatLng(<?php echo get_post_meta($post->ID, 'lat', true); ?>, <?php echo get_post_meta($post->ID, 'lng', true); ?>);
    var marker = createMarker(point,'<?php echo get_post_meta($post->ID, 'store', true); ?><br><?php echo get_post_meta($post->ID, 'street', true); ?><br><?php echo get_post_meta($post->ID, 'zip', true); ?> <?php echo get_post_meta($post->ID, 'locality', true); ?>')
    map.addOverlay(marker);
    <?php/* Standort Ende*/?>
     
    <?php/* Standort Anfang*/?>
    var point = new GLatLng(<?php echo get_post_meta($post->ID, 'lat', true); ?>, <?php echo get_post_meta($post->ID, 'lng', true); ?>);
    var marker = createMarker(point,'<?php echo get_post_meta($post->ID, 'store', true); ?><br><?php echo get_post_meta($post->ID, 'street', true); ?><br><?php echo get_post_meta($post->ID, 'zip', true); ?> <?php echo get_post_meta($post->ID, 'locality', true); ?>')
    map.addOverlay(marker);
    <?php/* Standort Ende*/?>
     
    <?php/* Navigationselemente einblenden*/?>
    map.addControl(new GSmallMapControl());
     
    <?php/* Kartentypen einblenden*/?>
    map.addControl(new GMapTypeControl());
     
    <?php/* Maßstab einblenden*/?>
    map.addControl(new GScaleControl());
     
    <?php/* Mouse Zoom aktivieren*/?>
    map.enableScrollWheelZoom(); map.enableContinuousZoom();
     
    }
    }
    </script>

    Die Koordinaten werden per

    Code :
    1
    
    <?php echo get_post_meta($post->ID, 'lat', true); ?>, <?php echo get_post_meta($post->ID, 'lng', true); ?>

    aus den Custom Fields geladen. Bei einer Adresse kein Problem, bei mehreren wird weiterhin nur ein Marker angezeigt.

    Nun ist es so, dass auf manchen Unterseiten der Website mal 5 Adressen, auf anderen Unterseiten 10 Adressen per Custom Fields angezeigt werden. Ich hätt auf jeder dieser Unterseiten gern eine Google-Karte mit der entsprechenden Anzahl an Markern.

    Habt ihr eine Lösung für dieses Problem?

    Vielen Dank schon im Voraus für eure Hilfe und einen guten Start in die Woche
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Hmm, könnte es sein, das deswegen nur einer angezeigt wird, weil die Koordinaten immer die gleichen sind?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    Rayne Rayne ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Beiträge
    152
    Zitat Zitat von saftmeister Beitrag anzeigen
    Hmm, könnte es sein, das deswegen nur einer angezeigt wird, weil die Koordinaten immer die gleichen sind?
    Der Aufruf für die Kooradinaten ist zwar immer derselbe, aber jede Post ID hat ihre eigenen Koordinaten in den Custom Fields gespeichert. Und durch $post->ID soll er ja die für die jeweilige ID spezifischen Koordinaten holen. Per HTML-Ausgabe klappt das nach diesem Prinzip einwandfrei, nur nicht in der Google-Map.

    Ich denke, hier müsste auch eine Schleife rein, da jede Unterseite auf meiner Website verschieden viele Post IDs besitzt. Die Schleife müsste also solange durchlaufen, bis sie bei dem letzten Post angekommen ist und die entsprechenden Koordinaten in den Code setzen. Leider bin ich in Sachen PHP nicht fit genug, um das entsprechend umzusetzen. Daher würde ich mich sehr freuen, wenn ihr mir dabei helfen könnt

    Dankeschön!
     

  4. #4
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Ich weiß jetzt erstmal nicht, was du mit "Custom Fields" meinst. Auch ist nicht klar, wie die Daten in $post reinkommen und wo sie genau herkommen. Es wäre sinnvoll, mal ein

    Code php:
    1
    
    var_dump($post);

    zu sehen. Meine Vermutung lautet, das $post ein simples Objekt ist und nur einen Datensatz enthält. Wenn dem nicht so ist, musst du erstmal erklären, was $post überhaupt ist.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #5
    Rayne Rayne ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Beiträge
    152
    Hallo saftmeister, danke zunächst für deine Antworten!

    Custom Fields sind im Prinzip extra Felder, die mit einem Post verknüpft werden. In diesen Feldern können Informationen gespeichert werden, auf die man dann zugreifen kann (wie bspw. die Koordinaten). Siehe auch hier: http://codex.wordpress.org/Custom_Fields

    Auf einer anderen Unterseite rufe ich die Daten aus den Custom Fields folgendermaßen ab:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    <?php while (have_posts()) : the_post(); $count++; ?>                                                                 
     
    <?php echo get_post_meta($post->ID, 'Vorname', true); ?><br />
    <?php echo get_post_meta($post->ID, 'Nachname', true); ?> <?php echo get_post_meta($post->ID, 'Spitzname', true); ?>
     
                
    <?php endwhile; ?>

    Vorname, Nachname und Spitzname sind hier jeweils Custom Fields, die mir dann durch die Schleife auf der Seite ausgegeben werden.

    Das sieht dann so aus:

    Vorname
    Nachname Spitzname

    Vorname
    Nachname Spitzname

    Vorname
    Nachname Spitzname
    ...

    So eine Schleife bräuchte ich wohl auch für die Google Maps-Geschichte. Hab es aber leider noch nicht lauffähig umsetzen können.
    Geändert von Rayne (06.01.12 um 09:50 Uhr)
     

Ähnliche Themen

  1. After Effects Marker (Composition marker in anderer Komposition als Layer Marker)
    Von kharn im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 0
    Letzter Beitrag: 15.05.11, 18:53
  2. Google Maps + Marker + Addresse
    Von Jantz im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 08.07.09, 08:45
  3. Google Maps API Marker mit Firmeninfo
    Von ne0hype im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 09.12.08, 22:27
  4. Google Maps API Marker mit Firmeninfo
    Von ne0hype im Forum PHP
    Antworten: 1
    Letzter Beitrag: 09.05.08, 01:31
  5. Google-MAP und eigene Marker
    Von berlinkw im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 10.03.08, 11:37