Darstellung einer GoogleMap-Karte

Vielleicht werfe ich hier auch etwas durcheinander, aber meine Frage zielte darauf ab, ob oder wie ich so eine Karte wie in dem Beitrag herstellen kann?

Eine andere Frage noch zu deinem Modul: In der Instanz „GoogleMaps“ habe ich den API-Key eingetragen. Wenn ich „Prüfe Konfiguration“ drücke kommt als Ergebnis, dass für Dynamic Map keine Prüfmethode verfügbar ist. Die anderen API werden als ok markiert. Insgesamt steht vielleicht deshalb „Instanz ist inaktiv (Zugriff verboten)“? Es funktioniert ja aber trotzdem.

Hallo, wie du aus der URL in dem Post entnehmen kannst, ist das der Map-Typ embed. Siehe hierzu docs/GoogleMaps_GenerateEmededMap.php.

Bei dem Typ DynamicsMap unterstütze ich zur Zeit kein directions; müsste man einbauen können, aber dazu müsste mehr wissen. Die DynamicMap ist die komplexeste Map mit ganz mehr Steuerungsmöglichkeiten in der API als bei den anderen Typen.

Das ist merkwürdig, wahrscheinlich hast Du am Anfang mal probiert und das war irgendetwas in der Konfiguration bei Google noch nicht i.O.
Diese Funktion korrigiert bisher den Status noch nicht.

Das habe ich angepasst. In GitHub gibt es nun eine neue Version, im ModulStore bitte auf Beta wechseln.

Modul-Debug einschalten und die Konfiguration erneut prüfen. Wenn es nicht klappt bräuchte ich den Debug zum nachschauen.

Gruß
demel

Danke für den Hinweis mit der Embeded Map. Das genügt mir völlig und kann ich damit ausbauen. Da hat sich der Nebel um die verschiedenen Kartentypen etwas gelichtet. Lediglich der Verkehr wird nicht mit einbezogen, aber damit kann ich noch leben.

Bei der DistanceMatrix muss ich noch den JSON-String auslesen und die Werte in Variablen schreiben. Damit befasse ich mich noch und werde sicher wieder etwas dazu lernen.

Und bei dem Modul habe ich auf Beta umgestellt, jetzt ist alles ok. „Instanz ist aktiv“.

Danke!

ich habe mal noch ein bisschen gefummelt und die DynamicMap kann nun auch ‚DirectionService‘. Da sehe ich auch die Verkehrsfluss-Anzeige.

Wenn du damit testen willst, kann ich das schonmal vorab in „BETA“ packen, sonst muss ich noch einiges testen und dokumentieren.

demel

Da habe ich dich wohl animiert? Die Beta habe ich, was muss ich tun und wie kann ich den Direction Service nutzen?

Ich muss aber auch sagen, dass ich heute mit der EmbedMap und DistanceMatrix gebastelt habe und damit voll zufrieden bin.

Ich habe die Sachen im Beta veröffentlicht. Wie gesagt, das ist noch nicht final getestet und auch noch kein Beispiel php-Script beigefügt.

Aber so funktioniert das bei mir bereits


<?php

$map = [];
// $map['center'] = ['lng' => 11.1018, 'lat' => 47.70875];
$map_options = [
    'zoom'      => 15,
    'tilt'      => 0,
    'mapTypeId' => 'roadmap',
];
$map['map_options'] = $map_options;

$infowindow_options = [
    'maxWidth'  => 200,
];
$map['infowindow_options'] = $infowindow_options;

$map['layers'] = ['traffic'];

$drivingOptions = [
    // 'departureTime' => strtotime('tomorrow 08:00'),
    'trafficModel'  => 'bestguess', // bestguess, pessemistic, optimistic
];
$transitOptions = [
    'arrivalTime' => strtotime('tomorrow 12:00'),
    // 'departureTime' => strtotime('tomorrow 08:00'),
    'modes' => ['bus', 'rail'], // bus, rail, subway, train, tram
    'routingPreference'  => 'fewer_transfers', // less_walking, fewer_transfers
];
$map['directions'] = [
    'origin'            => 'Essen, zeche Zollverein', // ['lng' => 11.1018, 'lat' => 47.70875], 
    'destination'       => 'Essen, Zentrum',
    'travelMode'        => 'driving',    // driving, walking, bicycling, transit, flying
    'drivingOptions'    => $drivingOptions, // nur, wenn travelMode == driving
    // 'transitOptions'    => $transitOptions, // nur wenn travelMode == transit
    'provideRouteAlternatives'   => true,
    'avoidTolls'           => true,
    'avoidFerries'         => true,
    'avoidHighways'        => true,
];

$html = GoogleMaps_GenerateDynamicMap(48799, json_encode($map));
echo $html;

return;

Ich habe es übernommen und die Kartenansicht funktioniert auch. Nur das Routing geht nicht. Es wird anscheinend die Daten in $map[‚directions‘] nicht beachtet oder so?

alos bei mir funktioniert es, ich sehe eine Route mit zwei Zwischen-Sttaionen.

ist das Modul auch aktuell?

demel

Oh, hatte auf Beta gewechselt aber scheinbar nicht aktualisiert. Jetzt funktioniert es. Danke für den Hinweis und natürlich für das Modul!

Hallo Demel

erstmal Danke für dein Modul. Funktioniert soweit auch ganz gut. Aber irgendwie weiß ich gerade nicht wie ich meinen Wunsch umsetzten.

Und zwar möchte ich mir keinen Strecke etc anzeigen lassen sondern einfach nur mein Punkt wo sich gerade mein Handy befindet.

Ich orte mein IPhone und habe den Longitude und Latitude Wert in IPS. Jetzt weiß ich aber nicht wie ich das in Skript rein bekomme um den Aktuellen Standort mir anzeigen zu lassen.

Ist das möglich?

Wäre nett wenn du einen mir das ein wenig helfen könntest.

Ich habe mir sowas mit OpenStreetMap realisiert, vielleicht kannst du das gebrauchen.
$lat und $long sind float, in der zweiten Zeile werden die Dezimaltrenner von Komma auf Dezimalpunkt umformatiert.

Ausgabe in einen String mit Profil HTMLbox

$karten_url = sprintf("<a href=\"http://www.openstreetmap.org/?mlat=%f&mlon=%f" . "&zoom=19\" target=\"_blank\" >Link</a>", $lat, $long);
$karten_url = strtr($karten_url,",",".");
SetValue(11430, $karten_url);

Hallo,

gerne. Hast du dir mal die Beispiel angeschaut zB IPSymconGoogleMaps/GoogleMaps_GenerateStaticMap.php at master · demel42/IPSymconGoogleMaps · GitHub

path sind die Linien und wenn du nur einen point (besteht ja aus lat und lng) als marker_point setzt hast nur eine Markierung.

Bin gerade nicht in der Lage das Beispiel zu testen. Ggfs. kann ich das heute abend machen.

demel

Hallo Demel,

ich habe versucht Deine Beispiele umzusetzen, aber ich kapier nicht, was ich mit den Ergebnissen machen muss.
(Webhook, DynamicMap)

Wie kriege ich da z.B. ein Webhook dargestellt?
hatte versucht das in eine Html Variable zu schreiben, aber das klappt nicht.

Gruß

Oliver

Hallo Leute,

habe mich auch mal mit dem Modul beschäftigt.

Bei der StaticMap habe ich das Beispiel genutzt und auch ein Ergebnis erzielen können. Was bei mir dabei noch nicht so ganz funktioniert ist der Parameter

$map['size']

. Irgendwie bin ich davon ausgegangen, dass dabei der Wert dort (Breite/Höhe) mit dem Werten im HTML (Width/Height) zusammen hängt. Wenn ich „quadratische“ Werte (z.B. 500/500) eingebe scheint das auch so zu sein, bei verschiedenen Werten (z.B. 400/800) scheint das Ergebnis immer verzerrt zu sein. Das muss vielleicht gar nichts mit dem Modul hier zu tun haben, verstehe aber aktuell denn Zusammenhang leider nicht…

Nun kann man bei der StaticMap ja nicht einmal rein-/rauszoomen. Deswegen wollte ich jetzt auf die EmbedMap umsteigen, dass scheint aber so einfach nicht möglich zu sein? Genau wie in der StaticMap soll nur ein Marker an einer bestimmten Position angezeigt werden.
Ist der Ansatz ein anderer was die Parameter angeht?

Joachim

Grundsätzlich erfolgt in dem Modul keine Verarbeitung der Optionen, diese werden „nur“ in die Form gebracht, das die jew. API die versteht.
Die Variablennamen snd typischerweise exakt die, die in der API verwendet werde.

Bei allen ausser der DynamicMap wird die URL aufgebaut, nur die DynamicMap ist deutlich komplizierter, weil die eine HTML-Seite mit JavaScript ist.

Im README stehen bei den jeweiligen Kartenarten der Link auf die Google-API-Beschreibung; da kann man sehen, was genau möglich ist.
Ich meine, das ich alle Optionen unterstütze, wäre das mal nicht der Fall, kann ich das natürlich nacharbeiten.

Ich erinnere mich leider nicht mehr genau an den Unterschied zwischen StaticMap und Embedded

demel

Hallo demel,

ich vermute hinter der Verzerrung auch eher ein HTML-Problem, bin da aber nicht so der Profi…
Kann ja durchaus sein, dass jemand schon mal „nicht quadratische“ Bilder ohne Verzerrung erzeugt hat und weiß worauf man dabei achten müsste.:wink:

Zum anderen: Das einzige was ich in der Form „vermisse“ ist ja nur das man sich auch rauszoomen kann. Visualisiere den iPhone-Standort,aber manchmal wäre es eben hilfreich, wenn man mal gucken könnte was um einen so herum ist um die Position einordnen zu können.

Joachim

Nachtrag: Die erste Herausforderung ist schon gelöst:

Static Maps images can be returned in any size up to 640 x 640 pixels. Google Maps Platform Premium Plan customers, who are correctly authenticating requests to the Maps Static API, can request images up to 2048 x 2048 pixels.

Wenn der größte Wert 640 ist, dann geht auch „nicht quadratisch“!

Hallo demel,

ich vermute, um etwas ähnliches in der EmbedMap darzustellen wie in der StaticMap benötigt man den „Basic Mode: places“. In Deinem Beispiel zu diesem Kartentyp steht aber:

Karten-Modus: directions (default), unsupported: place, search, view, streetview

Warum wurde das explizit herausgenommen?

Joachim

Hallo Demel,

Vielen Dank für das Modul.
Ich hänge leider bei dem beispiel:

docs/GoogleMaps_GetDistanceMatrix.php

Auch wenn ich es 1 zu 1 kopiere und nur die GoogleMap Modul Var instance ID ändere bekomme ich eine Fejlermeldung:


Fatal error:  Uncaught TypeError: rawurlencode() expects parameter 1 to be string, int given in /var/lib/symcon/modules/.store/demel42.google.maps/GoogleMaps/module.php:686
Stack trace:
#0 /var/lib/symcon/modules/.store/demel42.google.maps/GoogleMaps/module.php(686): rawurlencode(1608706800)
#1 /var/lib/symcon/scripts/__generated.inc.php(6847): GoogleMaps->GetDistanceMatrix('{"origin":"Rhei...')
#2 /var/lib/symcon/scripts/35038.ips.php(37): GoogleMaps_GetDistanceMatrix(27259, '{"origin":"Rhei...')
#3 {main}
  thrown in /var/lib/symcon/modules/.store/demel42.google.maps/GoogleMaps/module.php on line 686
Abort Processing during Fatal-Error: Uncaught TypeError: rawurlencode() expects parameter 1 to be string, int given in /var/lib/symcon/modules/.store/demel42.google.maps/GoogleMaps/module.php:686
Stack trace:
#0 /var/lib/symcon/modules/.store/demel42.google.maps/GoogleMaps/module.php(686): rawurlencode(1608706800)
#1 /var/lib/symcon/scripts/__generated.inc.php(6847): GoogleMaps->GetDistanceMatrix('{"origin":"Rhei...')
#2 /var/lib/symcon/scripts/35038.ips.php(37): GoogleMaps_GetDistanceMatrix(27259, '{"origin":"Rhei...')
#3 {main}
  thrown
   Error in Script /var/lib/symcon/modules/.store/demel42.google.maps/GoogleMaps/module.php on Line 686

Kanns Du mir sagen woran das liegen könnte

MFG

ja, ein Überbleibsel aus meine Umstellung auf strich_types.

Schau mal ops das mit der Version im Modul-Store/Beta (oder GitHub) klappt.

demel

Hallo,
kann mir jemand mit einem Beispiel helfen, was ich in polyline_options schreiben muss um eine gestrichelte oder gepunktete Linie hinzukriegen?
Danke im Vorraus
gros_ibou