Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Nutzung der Google Maps API - Jemand Erfahrung?    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
cologne1079@gmx.de
Mitglied
Guter User


Dabei seit: 15.02.2010
Herkunft: Kölle
Posts: 377
     Nutzung der Google Maps API - Jemand Erfahrung? Zitat | Bearbeiten

Hallo zusammen.

Ich überlege derzeit, in meinem Projekt die Google Maps API zur Berechnung der Fahrzeiten von Mitarbeitern mit Auto oder ÖPV zu nutzen, habe das aber noch nie gemacht, sodass mir Erfahrungswerte fehlen.

Ich habe über Google etwas recherchiert und erfahren, dass es seit Mitte 2018 neue rules dafür gibt, wonach Google monatlich 200 USD Budget schenkt. Alles darüber hinaus müsste gezahlt werden und man ist auch gleich gezwungen, eine Kreditkarte zu hinterlegen.

Wenn ich es richtig überblicke, kommt man mit 200 USD auf jeden Fall für mein Projekt hin. Als Beispiel wird ja von einer Karte ausgegangen, die - glaube ich - bei dem Budget ca. 25000 mal aufgerufen werden könnte, bevor die 200 USD überschritten werden würden.

Wie gesagt geht es mir um die Fahrzeit der Mitarbeiter von zuhause zur Arbeit. Wenn ich das also beispielsweise monatlich mit einem cronjob machen lasse bei ca. 150 Mitarbeitern, dann dürfte ich mit dem Budget doch dicke hinkommen, oder verstehe ich da etwas falsch?

Außerdem frage ich mich allerdings noch, wie genau das funktioniert. Da bin ich noch nicht durchgestiegen. Ich habe Adressen in Tabellen. Ich stelle mir vor, dass ich die auslesen kann, irgendwie an Google übermitteln kann, die Ergebnisse wahrscheinlich als XML erhalte und daraus dann die Daten herausfiltern muss.

Kann mir da jemand genaueres zu sagen, wie das genau funktionier/abläuft? Sind meine Annahmen zum Budget richtig? Wie funktioniert die Datenübertragung hin und zurück?


09.04.2019, 20:56 Profil | PM | E-Mail  
DingsDaBums
Mitglied
Exzellenter User


Dabei seit: 12.09.2010
Herkunft: keine Angabe
Posts: 2429
      Zitat | Bearbeiten

Aus Zeitgründen kann ich nicht ausführlich erklären, wie die Arbeit mit APIs funktioniert, weil das ein komplettes Thema für sich ist, aber vielleicht hilft dir folgendes Beispiel von Stackoverflow weiter: https://stackoverflow.com/questions/29003118/get-driving-distance-between-two-points-using-google-maps-api

Ansonsten wird hier die API genauer erklärt: https://developers.google.com/maps/documentation/distance-matrix/intro

Grundlegend kann man sagen: Du rufst mit PHP die entsprechende URL auf, so wie du es mit dem Browser und einer Webseite tust. Der einzige Unterschied: Du bekommst einen API Key, mit dem du dich authentifizierst und es wird nicht mit HTML geantwortet, sondern mit JSON bzw. XML, wobei ich ganz klar JSON bevorzugen würde (XML ist unnötig komplex und nicht so leicht wie JSON zu handhaben, weswegen fast alle APIs heute auf JSON setzen).
Für diese Anfrage würde ich bei PHP entsprechend cURL empfehlen. Sollte eigentlich so gut wie bei jedem installiert sein.

Zum Budget kann ich nur so viel sagen: Wenn die Berechnung nicht immer 100%ig aktuell sein muss, würde ich das Ergebnis einfach abspeichern und beim nächsten Mal einfach das gespeicherte Ergebnis abfragen, anstatt die Google API zu verwenden.
Aber auch wenn du immer die aktuellen Fahrzeiten haben möchtest, die auf den aktuellen Verkehr beruhen, würde ich auf jeden Fall den Code so schreiben, dass du nicht aus Versehen 5 mal in X Minuten die Google API abfragst, sondern auf ein Ergebnis der Google API für die entsprechende Strecke zurückgreifst, welches du in den letzten X Minuten abgefragt hast.

Also nicht bei jedem Aufruf einer bestimmten Seite die Google API abfragen, sondern immer vorher kurz schauen, ob man nicht in den letzten X Minuten bereits dieselbe Anfrage gestellt hat und wenn ja: Das zwischengespeicherte Ergebnis anzeigen, statt die Google API abzufragen.
Selbst wenn du das so machen würdest, dass ein Ergebnis nur 1 Minute lang verwendet wird, bis beim nächsten Aufruf der Seite erneut die Google API gefragt wird, kannst du dir so einige "unnötige" Anfragen ersparen. So ein Cache kann da wirklich Gold wert sein



Schau mal bei meinem Projekt vorbei. Vielleicht ist das ja was für dich MyStartPanel - Deine persönliche Startseite mit deinen Favoriten
Auf der Suche nach einem guten Vokabeltrainer? Vokabeltrainer Cramfire - Schnell und effektiv Vokabeln lernen
10.04.2019, 20:29 Profil | PM | E-Mail  
cologne1079@gmx.de
Mitglied
Guter User


Dabei seit: 15.02.2010
Herkunft: Kölle
Posts: 377
      Zitat | Bearbeiten

Okay, wieder einmal vielen Dank an dich.

Ich fasse mal kurz ein wenig zusammen, wie ich das nun verstanden habe:

1. Ich muss mir bei Google einen Key erstellen/abholen.
2. Ich muss meine Bankdaten hinterlegen, falls die 200 USD als Budget überschritten werden.
3. Es gibt dann eine URL, die ich mittels PHP aufrufen kann. Der API-Key und die 2 Adressen zur Berechnung der Fahrzeit werden mittels PHP die URL "eingebaut".
4. XML kenne ich, JSON noch nicht. Dürfte aber in beiden Fällen so sein, dass ich das Ergebnis aus dieser Datei dann herausfilten muss. Wie, weiß ich noch nicht.
5. Wenn ich das Ergebnis habe, würde ich dieses Ergebnis dann in meiner DB zwischenspeichern.
6. Das Ergebnis sollte zumindest einmal monatlich auf Aktualität geprüft werden (z. b. immer am 1. eines Monats einmal je Mitarbeiter). Wie gesagt, mein Plan war, mittels monatlichem Cronjob einmal im Monat für jeden Mitarbeiter eine Abfrage zu machen. Folglich müsste ich bei einer Abfrage je Mitarbeiter pro Monat und 150 Mitarbeitern insgesamt dicke im Budget bleiben, richtig?

Wenn ich das oben soweit richtig überblicke, bleibt für mich eigentlich nur eine Frage offen:

1. Wie würde man die Daten aus JSON oder XML herausfiltern, um die datenbanktauglich speichern zu können?

Alles andere traue ich mir zu, hinzubekommen. Das Filtern der Daten wüsste ich auf Anhieb jetzt jedoch nicht, wie ich das umsetzen müsste.


11.04.2019, 22:34 Profil | PM | E-Mail  
Htaccess
Mitglied
Sehr guter User


Dabei seit: 22.08.2010
Herkunft: Deutschland
Posts: 693
      Zitat | Bearbeiten

Um die Daten aus JSON oder XML herauszufiltern gibt es aus dem PHP Core nützliche Funktionen.

Für JSON gibt es json_decode() - Ein Beispiel:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?php 

$json 
'{ 
  "test1":"Hallo", 
  "test2":"Welt" 
}'
;

printf('<b>JSON String:</b><br>%s<br><br><pre>%s</pre>'$jsonprint_r(json_decode($jsontrue), true)); 


Für XML sind noch zusätzliche Schritte notwendig. Hier ein Link: https://www.phpflow.com/php/how-to-convert-xml-to-associative-array/


12.04.2019, 00:29 Profil | PM | E-Mail  
Andavos
Administrator
Foren-Gott


Dabei seit: 30.11.2003
Herkunft:
Posts: 6268
      Zitat | Bearbeiten

Definitive JSON benutzen, XML macht keinen Spaß.

Wie htaccess schrieb ist JSON quasi ein assoziatives Array:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?php
$json 
'{  
  "test1":"Hallo",  
  "test2":"Welt", 
  "orte": ["Berlin", "Frankfurt"]
}'
//So sieht etwa die Antwort der API aus

$data json_decode($jsontrue);

echo 
$data['test1']."<br>";
echo 
$data['orte'][0];



www.php-einfach.de, PHP lernen leicht gemacht
www.webhosterwissen.de, Webhosting-Vergleich



12.04.2019, 11:26 Profil | PM | E-Mail  
cologne1079@gmx.de
Mitglied
Guter User


Dabei seit: 15.02.2010
Herkunft: Kölle
Posts: 377
      Zitat | Bearbeiten

Okay, danke euch beiden für die Antworten.

Also ich werde es definitiv mit JSON machen. Eure Beispiele haben mir bereits sehr geholfen, ein wenig mehr zu verstehen.

Ich überlege nur jetzt gerade, wie das mit dem Ergebnis genau abläuft.

Ich rufe diese URL auf, dann erscheint dieser JSON output ja wahrscheinlich im Browser, oder?

Wie packe ich diesen Output aus dem Browser dann als assoziatives Array in die Beispiel Variable $JSON. Das ist das einzige, was mich im Moment fragend zurück lässt...


12.04.2019, 22:16 Profil | PM | E-Mail  
DingsDaBums
Mitglied
Exzellenter User


Dabei seit: 12.09.2010
Herkunft: keine Angabe
Posts: 2429
      Zitat | Bearbeiten

Wenn du mit PHP auf die Google API zugreifst, hat der Browser da nichts mehr mit zutun. Der Browser wird dann sozusagen von cURL ersetzt: https://www.php.net/manual/de/book.curl.php

Damit machst du dann genau wie mit einem Browser einen HTTP Request an eine Webseite, nur dass die Webseite eben die API ist, die dann keine HTML Webseite liefert, sondern nur die Daten in z.B. dem JSON Format, damit man sie leicht verarbeiten kann.




Schau mal bei meinem Projekt vorbei. Vielleicht ist das ja was für dich MyStartPanel - Deine persönliche Startseite mit deinen Favoriten
Auf der Suche nach einem guten Vokabeltrainer? Vokabeltrainer Cramfire - Schnell und effektiv Vokabeln lernen
13.04.2019, 18:49 Profil | PM | E-Mail  
Seiten (1):  1 
PHP-Support.de » Programmierung » PHP & MySQL » Nutzung der Google Maps API - Jemand Erfahrung?   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz