Ergebnis 1 bis 6 von 6

Thema: Parametrisierbare Googlemap (gelöst)

  1. #1
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Beiträge
    59

    Standard Parametrisierbare Googlemap (gelöst)

    Ich habe ein eigenes Modul mit einer Tabelle Unternehmen tl_companies . Diesen Unternehmen sind Mitglieder aus tl_members zugeordnet: also 1:n Beziehung. Die Adresse des Stamsitzes des Unternehmens ist in tl_companies angegeben.

    Jetzt würde ich gerne dlh_googlemaps nutzen, um bei der Anzeige eines Unternehmens eine Karte anzuzeigen, wo der Stammsitz des Unternehmens ist. Ich will nicht alle Unternehmen sondern genau dieses eine anzeigen.

    Natürlich könnte ich jetzt für 800 Unternehmen jeweils eine eigene Google-Map anlegen. Und jedes Mal, wenn ein Unternehmen dazukommt wieder eine Map.

    Das muss sich aber automatisieren oder parametrisieren lassen.

    Wie kann man dynamisch aus der Adresse des Unternehmens mit dlh_googlemaps zum Zeitpunkt des Aufrufs eine Map erstellen? Dafür muss eine dlh_googlemaps genügen und die muss halt über Parameter die jeweilige Adresse mitbekommen.

    Ich programmiere selbst, habe aber zur Zeit dafür keinerlei Idee. Wer hat eine Idee oder weiß sogar, wie es geht?

    Gruß, Janis
    Geändert von Janis (07.12.2010 um 00:50 Uhr)

  2. #2
    Alter Contao-Hase Avatar von christian
    Registriert seit
    15.06.2009.
    Ort
    Viersen
    Beiträge
    1.038
    Partner-ID
    387

    Standard

    Moin, kein Problem: Leg eine Map mit der passenden Größe, Zoomfaktor etc an und binde sie in die Seite ein, die die Datensätze zeigt. Im Template Deines Datensatzes lässt Du einen JS-Block ausgeben, der das Kartenzentrum verschiebt und einen Marker setzt.

    Bespiel siehe im Modulverzeichnis.

    Grüße,

    Christian
    Contao-Partner am Niederrhein
    Templating - Komplettservice - Erweiterungen
    Infos: http://delahaye.de

  3. #3
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Beiträge
    59

    Standard neue Datensätze regelmäßig geokodieren

    Zitat Zitat von christian Beitrag anzeigen
    Moin, kein Problem: Leg eine Map mit der passenden Größe, Zoomfaktor etc an und binde sie in die Seite ein, die die Datensätze zeigt. Im Template Deines Datensatzes lässt Du einen JS-Block ausgeben, der das Kartenzentrum verschiebt und einen Marker setzt.

    Bespiel siehe im Modulverzeichnis.

    Grüße,

    Christian
    Hat bestens funktioniert! Habe dazugelernt. Javascript kann man ja wirklich überall einbauen. Werde es direkt in mein selbst geschriebenes Modul einbauen.

    Zwei Fragen noch:
    1. Frickelt Google häufig an der Schnittstelle (API) oder bleiben die so weit es geht abwärtskompatibel. Habe halt keine Lust, dass in Contao mal Maps und wenige Wochen später wieder Fehler angezeigt werden.

    2. Geocodierung
    Ich will 600 Adressen in einer Tabelle geocodieren und dann laufend, wenn neue Adressen dazukommen. Kannst Du aus dem Stehgreif den nötigen Befehl für Googlemaps ApiV3 zaubern?

    PHP-Code:
    <?PHP
      
    // Wie ich die Adresse per SQL aus der Tabelle bekomme weiß ich.
      
    $strasse "Bahnhofstr. 40";
      
    $plz "51674";
      
    $ort "Wiehl";
      
    $adresse "$plz $Ort$strasse";

      
    $laengengrad googleabfrage($adresse);     //  Wie lautet die ...
      
    $breitengrad googleabfrage($adresse);      //  ... korrekte Abfrage ???

      // Wie ich die Geokoordinaten per SQL wieder in die Tabelle bekomme weiß ich.
    ?>
    Ich denke, ich muss das Rad nicht neu erfinden - Du weißt wie es geht. (?)
    Und ich würde es, wenn es irgendwie geht gerne mit PHP erledigen, da ich das kann.

    Gruß
    Janis
    Geändert von Janis (06.12.2010 um 17:52 Uhr)

  4. #4
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Mal ein bisschen Code aus meiner GMaps Extension.

    PHP-Code:
        public static function getLocations($query)
        {
            
    $req = new RequestExtended();
            return 
    $req->getUrlEncoded('http://maps.google.com/maps/geo?q='.urlencode($query).'&output=json') ? $req->response '';
        }

        public static function 
    getFirstLocationsGeo($query) {
            
    $json self::getLocations($query);
            
    $loc json_decode($jsontrue);
            if(
    count($loc) > 0) {
                return 
    $loc['Placemark'][0]['Point']['coordinates'];
            }
            return 
    false;
        } 
    Aurufen mit:
    PHP-Code:
    $addr 'Bahnhofstr. 40, 51674 Wiehl';
    $latLng self::getFirstLocationsGeo($addr); 
    Benutzt intern meine RequestExtended Klasse (im ER als httprequestextended zu finden), kannst du aber leicht auf die "normale" Request Klasse umbiegen.

    Gruss
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  5. #5
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Beiträge
    59

    Standard Geokodierung ... nah am Ziel

    Den Vorschlag (eins höher) habe ich aufgegriffen und auch versucht, auf die Core-Klasse Request umzubiegen - die Methoden habe ich in Funktionen umgewandelt, weil ich nicht so fit bin in OOP:


    PHP-Code:
    <?PHP
    // x.php

    $addr 'Bahnhofstr. 40, 51674 Wiehl';
    $latLng getFirstLocationsGeo($addr);  
    var_dump($latLng);    // (1)

      
    function getLocations($query)
        {
            
    $req = new Request();
            return 
    $req->send('http://maps.google.com/maps/geo?q='.urlencode($query).'&output=json'); // ? $req->response : ''; // (3)
        
    }

      function 
    getFirstLocationsGeo($query) {
            
    $json getLocations($query);
            
    var_dump($json);  // (2) nur zum Testen. 
            
    $loc json_decode($jsontrue);
            if(
    count($loc) > 0) {
                return 
    $loc['Placemark'][0]['Point']['coordinates'];
            }
            return 
    false;
        }  
    ?>
    Ich binde den php-code per {{file::x.php}} über ein Inhaltselement html ein.

    Leider kommt das gewünschte Ergebnis nämlich die Geokoordinaten bei (1) nicht heraus. Keine Fehlermeldungen.
    Bei (1) kommt heraus: bool(false)
    bei (2): NULL

    Gebe ich den http-Aufruf (3) direkt als URL ein erhalte ich eine wunderschöne Auflistung des Ergebnisses. Zum Ausprobieren:
    Code:
    http://maps.google.com/maps/geo?q=Bahnhofstr.+40%2C+51674+Wiehl&output=json
    Es kann nur ein winziger Fehler sein ... nur welcher?

    Janis
    Geändert von Janis (07.12.2010 um 00:11 Uhr)

  6. #6
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Beiträge
    59

    Standard gelöst

    Habe es nun doch noch selbst rausgefunden. Entschuldigung, dass ich kaum Zeit zum Antworten ließ ... aber das Problem gab keine Ruhe ;-)

    Das hatte ich vergessen:
    PHP-Code:
    $req->response
    Danke xtra, für Deine Anregungen. Und hier wie versprochen noch die fertige Lösung, falls jemand mal etwas ähnliches machen möchte:

    PHP-Code:
    <?PHP
    // x.php

    $addr 'Bahnhofstr. 40, 51674 Wiehl';
    $latLng getFirstLocationsGeo($addr);  

    // die nächsten 3 Zeilen nur, um beim Test die Ergebnisse zu sehen.
    echo "<pre>";
    var_dump($latLng);
    echo 
    "/<pre>";

      function 
    getLocations($query)
        {
            
    $req = new Request();
            
    $res $req->send('http://maps.google.com/maps/geo?q='.urlencode($query).'&output=json'); 
            return 
    $req->response;
        }

      function 
    getFirstLocationsGeo($query) {
            
    $json getLocations($query);
            
    $loc json_decode($jsontrue);
            if(
    count($loc) > 0) {
                return 
    $loc['Placemark'][0]['Point']['coordinates'];
            }
            return 
    false;
        }  
    ?>
    Und alles wird gut.
    Janis
    Geändert von Janis (07.12.2010 um 00:55 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 02.01.2011, 21:37
  2. API Key in googlemap
    Von Rock Rebel im Forum Sonstige Erweiterungen
    Antworten: 1
    Letzter Beitrag: 19.05.2010, 07:58
  3. Keinen Marker bei Googlemap für Mitglieder
    Von WebCMS im Forum Sonstige Erweiterungen
    Antworten: 6
    Letzter Beitrag: 10.12.2009, 07:59
  4. Googlemap für members - Koordinaten erfahren
    Von WebCMS im Forum Sonstige Erweiterungen
    Antworten: 4
    Letzter Beitrag: 07.12.2009, 07:41
  5. GoogleMap und Startpunkt einer Webseite
    Von steff im Forum Allgemeine Inhaltselemente
    Antworten: 8
    Letzter Beitrag: 24.11.2009, 17:02

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •