delahaye / dlh_googlemaps

Google Maps Extension für Contao
20 stars 26 forks source link

Geo-Koordinaten werden nicht mehr aus Adresse berechnet #110

Open thepixture opened 5 years ago

thepixture commented 5 years ago

Wenn man eine neue Karte anlegt und die Adresse bei "Adresse für Geocoding" eingibt und dann speichert, werden die Koordinaten nicht mehr automatisch in das Feld "Geo-Koordinaten" eingetragen.

birdmedia commented 5 years ago

Google hat dieses Jahr seine Google Maps API umgestellt und die einzelnen Services (Kartendarstellung, Geokodierung etc.) in einzelne, z.T. kostenpflichtige APIs ausgelagert, die einzeln pro Domain freigeschaltet werden müssen. Insbesondere neue Domains / Projekte sind hiervon betroffen.

tinokramm commented 5 years ago

Wird bald eine Option im Modul ergänzt, um einen API-Key speziell für die Geocoding API zu hinterlegen?

Aybee commented 5 years ago

Geocoding müsste noch funktionieren. Allerdings, wenn ich das richtig interpretiert habe, nicht mehr, wenn man den API-Key auf URLs eingeschränkt hat. Irgendwo habe ich gelesen, dass man bestimmte APIs, darunter die Geocoding API nur auf IPs einschränken kann.

Für diesen Fall müsste also unbedingt ein weiteres Eingabefeld für einen API-Key hinzu kommen, welches dann für den auf IPs eingeschränkten API-Key benutzt wird. Intern müsste dann für den Aufruf dieser APIs der "IP-Key" benutzt werden.

Ich suche noch nach dieser Seite, wo ich das mit der Einschränkung gefunden habe und melde mich dann nochmal.

tinokramm commented 5 years ago

Die gleiche Erfahrung haben wir auch gemacht. Mit URL-Einschränkung können Maps und Geocoding API nicht gleichzeitig benutzt werden. Es müssen zwangsläufig zwei verschiedene Keys hinterlegt werden.

Aybee commented 5 years ago

Suche nach "google maps geocoding ip restrictions" https://developers.google.com/maps/api-key-best-practices https://stackoverflow.com/questions/52416697/google-geocode-api-ip-restrictions

Diese Google Maps APIs funktionieren nur mit IP-Restriction

Aybee commented 5 years ago

Das Feld für den zweiten Key muss also nur ausgefüllt werden, wenn der API-Key eine HTTP-Einschränkung hat. Hat man nur einen Key für alle APIs und dieser hat keine Einschränkung, dann kann im Hintergrund dieser eine Key benutzt werden.

Aybee commented 5 years ago

Google_Maps

Aybee commented 5 years ago

Die Geocoding API, welche ja nur aus dem BE heraus laufen muss, dürfte dann nicht über eine HTTP-Anfrage auf ne Geocoding-JS-Datei stattfinden. Weil dabei die IP-Adresse des Users freigebeben werden müsste, welche wir ja nicht kennen. Die Anfrage müsste direkt vom Server gestellt werden und es würde Sinn machen, dass die Erweiterung diese IP direkt im BE an geeigneter Stelle anzeigt, weil wir diese ja freigeben müssen.

wanst commented 4 years ago

Komplexe Thematik, gibt es da schon Lösungsansätze? Die IP bleibt ja nicht mal zwangsläufig immer gleich, oder? Insb. bei Shared Hostern, die ihre DNS-Einträge ändern können, wie sie lustig sind. Oder wird das eher nicht praktiziert?

fritzmg commented 4 years ago

Steht in eurer localconfig.php ein dlh_googlemaps_apikey drin?

fritzmg commented 4 years ago

Soweit ich sehe liegt der Fehler hier:

https://github.com/delahaye/dlh_geocode/blob/2af3383a040a2a3893a1f3e3be6ba0de35c7629f/classes/GeoCode.php#L71

Hier wird der Key nicht übergeben. Die Zeile müsste stattdessen

$arrCoords = self::getInstance()->geoCode($strAddress, null, $strLang, $strCountry, null, $key);

lauten.

maiurb commented 4 years ago

Hallo, ich würde das gern testen. Leider weiß ich nicht welche Datei ich am Server anpassen muss.

VG Maik

fritzmg commented 4 years ago

Habe ich doch verlinkt? ;)

maiurb commented 4 years ago

Ok, man muss die _GeoCode.php_bearbeiten. War bei mir unter modules/classes/GeoCode.php zu finden. Habe die Zeile ausgebessert und es funktioniert.

"Steht in eurer localconfig.php ein dlh_googlemaps_apikey drin?" Damit konnte ich nix anfangen!

Vielen Dank an fritzmg

fritzmg commented 4 years ago

"Steht in eurer localconfig.php ein dlh_googlemaps_apikey drin?" Damit konnte ich nix anfangen!

Die localconfig.php befindet sich in system/config.

maiurb commented 4 years ago

Bei mir steht der Key drin.

Aybee commented 4 years ago

Aber dies löst nicht das Problem mit dem Key, wenn er auf spezielle Domains festgesetzt wurde. Richtig?

fritzmg commented 4 years ago

Aber dies löst nicht das Problem mit dem Key, wenn er auf spezielle Domains festgesetzt wurde. Richtig?

Für das Backend musst du einen Key verwenden, der auch im Backend funktioniert - aber das ist ja nur mehr eine Frage der Konfiguration und kein Fehler der Extension.

Die Lösung des Problems ist übrigens schon seit einem Jahr bekannt: https://github.com/delahaye/dlh_geocode/issues/12#issue-363482378 ;)

wanst commented 4 years ago

Steht in eurer localconfig.php ein dlh_googlemaps_apikey drin?

Nein. Wird der normalerweise automatisch angelegt?

wanst commented 4 years ago

^ das wars! Danke! Wo steht das denn, dass es dahin muss?

fritzmg commented 4 years ago

Nein. Wird der normalerweise automatisch angelegt?

Das wird angelegt, wenn du in den System Einstellungen den API Key einträgst.

^ das wars! Danke! Wo steht das denn, dass es dahin muss?

Das ist der primäre Ort, wo du den API Key einträgst - und auch der einzige Ort, der für das Backend gilt.

In den neueren Versionen kann man den API Key nun auch pro Domain für das Frontend einstellen, falls du mehrere API Keys je Domain/Website hast. Die gelten aber nicht für das Backend, logischerweise.

Aybee commented 4 years ago

Ah, ok. Also brauche ich zwei Keys, einen fürs BE ohne Restriktionen, den trage ich in den Einstellungen ein, damit er in die localconfig.php kommt und der wird im BE benutzt. Und einen Key fürs FE, der dann auch auf die Domain beschränkt sein kann und im Startpunkt eingetragen wird. Richtig?

fritzmg commented 4 years ago

Grundsätzlich ja. Den für das Backend könntest du per IP restricten.

wanst commented 4 years ago

Also ich hab jetzt mal ein bisschen rumgespielt. Der Weg mit 2 Keys funktioniert, wenn:

Lässt man den Key ohne Einschränkung, reicht auch einer! Dann sei aber halt Vorsicht geboten, wegen Kontingentklau, sagt Tante/Onkel Google.

maiurb commented 4 years ago

Wenn ich jetzt eine neue Karte anlege, wird die Karte nicht mehr angezeigt. Auch zwei bereits angelegte Karten werden nicht mehr angezeigt. Woran kann das liegen?

maiurb commented 4 years ago

Hier der Link.

https://boulderrausch.de/nordamerika-bouldern.html

Es fehlen genau zwei Zeilen Code:, gegenüber den alten Seiten:

fritzmg commented 4 years ago

@maiurb das hat jetzt aber nichts mehr mit diesem Ticket zu tun?

maiurb commented 4 years ago

Das Problem ist aber erst aufgetreten, nachdem ich die Änderungen vorgenommen habe.??? Warum wird plötzlich der Code nicht mehr übergeben. Bei den zwei bestehenden Karten hatte alles funktioniert. Jetzt werden sie nicht mehr angezeigt. Die alten Karten funktionieren alle, aber keine neu angelegten und die zwei. Irgend eine Idee?

Aybee commented 4 years ago

Das hier ist falsch

google.maps.LatLng(Nordamerika)

müsste so aussehen

google.maps.LatLng(54.5259614,15.2551187)

ps Schmeiß mal dein MooTools und die Slimbox raus, das solltest du eigentlich beides nicht benötigen.

maiurb commented 4 years ago

Das hier ist falsch

google.maps.LatLng(Nordamerika)

müsste so aussehen

google.maps.LatLng(54.5259614,15.2551187)

ps Schmeiß mal dein MooTools und die Slimbox raus, das solltest du eigentlich beides nicht benötigen.

Danke, das hat funktioniert.

Nachdem ich aber die Erweiterung noch mal aktualisiert/repariert habe, hat alles andere auch wieder funktioniert!

Vielen Dank für die Unterstützung.

VG Maik

wanst commented 4 years ago

Nachdem ich aber die Erweiterung noch mal aktualisiert/repariert habe, hat alles andere auch wieder funktioniert!

Hattest du vorher die Änderung von FritzMG in der dlh_geocode/classes/GeoCode.php gemacht? Dann wurde die ja bei der Reparatur überschrieben, oder? Ich frage, weil ich diese Änderung an einer meiner Installationen NICHT gemacht habe und an der alles mit den beiden Keys (IP- und URL-Beschränkung) funktioniert. An einer anderen (Test-)Installation, an der ich u.a. die Änderung von FritzMG gemacht hab, funktioniert gerade nur noch der Frontend-Teil der Erweiterung korrekt.

maiurb commented 4 years ago

Also, die Änderungen waren wirklich nicht mehr drin, nach der Aktualisierung. So habe ich es garade getestet und es kam der übliche Fehler.

Jetzt habe ich die Änderung in die Datei "GeoCode.php" wieder eingetragen und getestet, kein Fehler!