[XT] Membermap

XF2.x [XT] Membermap 1.0.5 Patch 1

Keine Rechte zum Download
Ich bin bisher auch mit EC-Karten innerhalb der EU noch gut klar gekommen und nur wegen Google ne Kreditkarte mit ggf. weiteren Gebühren anlachen nur damit Google ... exakt, nichts abbucht. Ich weiß nicht... :ungeduldig:
Ja, man kommt meist ohne aus , aber manchmal braucht man halt doch eine - z.B. im Urlaub für Mietwagen.

Ich weiß nicht wie das bei deiner Bank ist, aber bei meiner (Volksbank) ist mittlerweile sogar die Standard Girocard eine Mastercard (halt als Debit für Online-Nutzung).

Eine andere / einfachere Lösung fällt mir leider ad hoc leider nicht ein :(

Ich will mir aber mal anschauen ob sich evtl. zusätzlich Leaflet mit OSM nutzen ließe, dann ginge es ggf. auch ohne Google Maps API Keys :)
 
Zuletzt bearbeitet:
Installiert und funktioniert wie ein Bienchen (auf XF 2.2.17). Die Ladeprobleme der Map sind Geschichte, sogar auf dem iPad, wo sie nie über die Weltkugel hinauskam und auch die anderen Fehler (Minimap etc.) sind weg.
Keine Neukonfiguration oder Neueingabe der API-Keys nötig.

Danke! Good Job!
 
Kaum gefreut, schon ein Problem gemeldet bekommen:

Bei mehreren Usern mit gleicher Geocodierung wird nur einer auf der Karte angezeigt.

Wir haben eine Reihe User in Berlin auf der Map, von denen viele keine Postleitzahl angegeben haben sondern nur die Stadt. Bisher (bis incl. 1.0.4.1) wurden diese beim reinzoomen in einzelne Pins aufgefächert, obwohl sie alle an derselben Stelle verankert waren.

Mit der 1.0.5 wird nur noch einer da angezeigt, Reinzoomen ändert nichts. Sein Pin ist etwas ausgefranst beim massiven reinzoomen, da stecken also wohl noch mehr dahinter, nur sind sie nicht sichbar.

Wenn ich auf die Ansicht mit Aggregierung umschalte wird das auch offensichtlich: Da steht dann die Zahl der dort verankerten User...

Bildschirmfoto 2025-09-04 um 16.48.57.jpg

... beim noch weiter reinzoomen wird aber nur einer angezeigt:

Bildschirmfoto 2025-09-04 um 17.15.00.jpg

Die anderen sind, egal wie, nicht sichtbar zu bekommen. Das war vorher vollkommen unproblematisch.
 
Bisher (bis incl. 1.0.4.1) wurden diese beim reinzoomen in einzelne Pins aufgefächert, obwohl sie alle an derselben Stelle verankert waren.

Mit der 1.0.5 wird nur noch einer da angezeigt, Reinzoomen ändert nichts. Sein Pin ist etwas ausgefranst beim massiven reinzoomen, da stecken also wohl noch mehr dahinter, nur sind sie nicht sichbar.

[...]

Die anderen sind, egal wie, nicht sichtbar zu bekommen. Das war vorher vollkommen unproblematisch.
Bist Du dir 100%ig sicher dass sich das Verhalten diesbezüglich verändert hat?

Die Map macht 2 Dinge:
  1. Mehrere Einträge im gleichen Bereich zusammenfassen (Clustering)
    Diese Cluster lösen sich beim hineinzoomen auf indem sie sich, da kleinerer Bereich, wieder in einzelne Marker aufteilen
  2. Mehrere Einträge mit exakt gleichen / sehr ähnlichen Koordinaten aufsplitten
    Die Map nutzt hierfür OverlappingMarkerSpiderfier
    Das neuanordnen der Marker geschieht aber (siehe Demos) nicht automatisch sondern erst bei Klick - und das funktioniert zumindest bei mir (mit XF 2.3.7) so wie in der Demo, also vmtl. so wie es sein sollte?
 
Bist Du dir 100%ig sicher dass sich das Verhalten diesbezüglich verändert hat?
Ja, weil mir das gleich mehrere User berichtet haben und ich selbst der gleichen Meinung bin.
Die Map macht 2 Dinge:
  1. Mehrere Einträge im gleichen Bereich zusammenfassen (Clustering)
    Diese Cluster lösen sich beim hineinzoomen auf indem sie sich, da kleinerer Bereich, wieder in einzelne Marker aufteilen
  2. Mehrere Einträge mit exakt gleichen / sehr ähnlichen Koordinaten aufsplitten
    Die Map nutzt hierfür OverlappingMarkerSpiderfier
    Das neuanordnen der Marker geschieht aber (siehe Demos) nicht automatisch sondern erst bei Klick - und das funktioniert zumindest bei mir (mit XF 2.3.7) so wie in der Demo, also vmtl. so wie es sein sollte?
Grundsätzlich funktioniert das schon - aber eben nicht bis ganz runter.
Bildschirmfoto 2025-09-04 um 18.48.39.jpg
reinzoomen:
Bildschirmfoto 2025-09-04 um 18.49.04.jpg

weiter reinzoomen:
Bildschirmfoto 2025-09-04 um 18.49.37.jpg

Hier sieht man dann schon den "odd-shaped" Pin oberhalb des "r" in Berlin.

Noch weiter reinzoomen:

Bildschirmfoto 2025-09-04 um 18.50.02.jpg

An der Stelle dieses einen Pin sind eigentlich 13 User (im Forum liebevoll "unsere WG" genannt) - die eben alle nur den Namen "berlin" eingegeben haben und deshalb die gleichen Koordinaten haben.

Mit der alten Version fächerte sich das weiter auf, mit der neuen nicht. Wenn ich auf den Pin klicke bekomme ich ein Mitgliederprofil als Popup - aber lustigerweise nicht immer dasselbe.

Den gleichen Effekt habe ich, wenn ich die geclusterete Ansicht nutze: Funktioniert alles, wie es soll - nur bei gleichen Geokoordinaten löst er am Ende nicht weiter auf, auch nicht auf Klick.

In einer anderen Stadt gibt es das gleiche Problem, da sind aber nur zwei User betroffen.

In der Demo funktioniert bei mir auch alles, wie es soll, da finde ich diese Situation aber erst gar nicht auf die Schnelle.
 
Ja, weil mir das gleich mehrere User berichtet haben und ich selbst der gleichen Meinung bin.
Okay, dann kann ich das leider nicht reproduzieren - und da es sich nicht reproduzieren lässt kann ich da leider auch nichts machen :(

Wenn ich auf den Pin klicke bekomme ich ein Mitgliederprofil als Popup
Das konnte ich (mit XF 2.2, nicht mit XF 2.3) repdoduzieren.
Magst Du mal die angehängte Version testen?
 

Anhänge

  • XT-Membermap-1.0.5 Patch 1.zip
    141,4 KB · Aufrufe: 1
Das konnte ich (mit XF 2.2, nicht mit XF 2.3) repdoduzieren.
2.2 passt - wie oben geschrieben bin ich auf 2.2.17
Magst Du mal die angehängte Version testen?
Heureka! Funktioniert: Auf Klick geht der Kram auseinander.

Bildschirm­foto 2025-09-04 um 23.31.18.jpg

Da muss man zwar immer noch drauf kommen, dass da mehrere User hinter einem Nupsi stecken (ist nur bei sehr genauem Hinsehen ersichtlich), aber immerhin kann man sie auf klick jetzt alle sehen!

Besten Dank für den blitzschnellen Fix und noch mehr dafür, dass er funktioniert! :)
 
Ich habe XF 2.3.7. Mit der Eintragung der Api Keys gibt es Probleme, bzw. sie werden als angeblich ungültig abgelehnt.

Wenn ich keine Einschränkungen bei den Api Keys festlege (was nicht sinnvoll ist) werden die Api Keys problemlos angenommen, und die Einstellungen der Mitgliedskarte lassen sich speichern.

Sobald ich z.B. bei den Api Keys Anwendungseinschränkungen auf meine Webseite einstelle, sind beim Speichern der Einstellungen der Mitgliedskarte die Api Keys angeblich ungültig. So lassen sich auch keine Einstellungen mehr ändern.

Die Karte funktioniert aber.

Edit: Ohne Anwendungseinschränkungen beim Api Key 1 funktioniert es.
 
Zuletzt bearbeitet:
Wenn es ohne Einschränkungen geht aber mit Einschränkungen nicht, dann sind die Einschränkungen mit hoher Wahrscheinlichkeit nicht korrekt, siehe XF2.x - [XT] Membermap

=> Prüfen, Anpassen, Nochmal testen
 
Google Maps API Key
Dieser sollte auf die IP-Adresse des Servers beschränkt sein und nur die Geocoding und Static Map API aktiviert haben
Ohne die Einschränkung auf die IPs (IP und die IPV6) des Servers geht es, mit der Einschränkung auf die IPs nicht.

Die beiden IPs habe ich dazu extra aus dem DNS-Eintrag kopiert, um Tippfehler zu vermeiden.

Während des Schreibens des Beitrags habe ich gemerkt, dass Ionos die IP für hunderte oder tausende Webseites verwendet. Lasse ich die IP meiner Domain ermitteln und danach die zu dieser IP zugehörigen Domains, erhalte ich eine riesengroße Domain-Liste.

Das Problem liegt also definitiv nicht an der Mitgliederkarte.
Google Maps JavaScript API Key
Dieser sollte auf die Website beschränkt sein und nur die Maps JavaScript und Places API aktiviert haben
Ist so eingeschränkt und geht. Da man diesen Key aus dem Quelltext lesen kann, wäre es schlecht, wenn dieser sich nicht einschränken ließe.
 
Ohne die Einschränkung auf die IPs (IP und die IPV6) des Servers geht es, mit der Einschränkung auf die IPs nicht.
Dann ist mit 99,99% Wahrscheinlichkeit die Einschränkung nicht korrekt.

Hast Du SSH / Shell-Zugriff?
 
Das probiere ich später aus. Wenn ich im Admin-CP die Infoseite zum PHP aufrufe, steht im Abschnitt Environment eine völlig andere IP als im DNS-Eintrag.
 
Es sind ja Phrasen hinzugekommen. Bei mir habe ich die ergänzt. Die könnte ich exportieren @otto Ich meine, das Sprachfile für die früheren Versionen kam von dir.
 
Dann ist mit 99,99% Wahrscheinlichkeit die Einschränkung nicht korrekt.

Hast Du SSH / Shell-Zugriff?
Code:
{
   "results" :
   [
      {
         "address_components" :
         [
            {
               "long_name" : "Berlin",
               "short_name" : "Berlin",
               "types" :
               [
                  "locality",
                  "political"
               ]
            },
            {
               "long_name" : "Kreisfreie Stadt Berlin",
               "short_name" : "Kreisfreie Stadt Berlin",
               "types" :
               [
                  "administrative_area_level_3",
                  "political"
               ]
            },
            {
               "long_name" : "Berlin",
               "short_name" : "BE",
               "types" :
               [
                  "administrative_area_level_1",
                  "political"
               ]
            },
            {
               "long_name" : "Germany",
               "short_name" : "DE",
               "types" :
               [
                  "country",
                  "political"
               ]
            }
         ],
         "formatted_address" : "Berlin, Germany",
         "geometry" :
         {
            "bounds" :
            {
               "northeast" :
               {
                  "lat" : 52.6754542,
                  "lng" : 13.7611175
               },
               "southwest" :
               {
                  "lat" : 52.338234,
                  "lng" : 13.088346
               }
            },
            "location" :
            {
               "lat" : 52.52000659999999,
               "lng" : 13.404954
            },
            "location_type" : "APPROXIMATE",
            "viewport" :
            {
               "northeast" :
               {
                  "lat" : 52.6754542,
                  "lng" : 13.7611175
               },
               "southwest" :
               {
                  "lat" : 52.338234,
                  "lng" : 13.088346
               }
            }
         },
         "place_id" : "ChIJAVkDPzdOqEcRcDteW0YgIQQ",
         "types" :
         [
            "locality",
            "political"
         ]
      }
   ],
   "status" : "OK"
}
 
Das ist dann etwas merkwürdig.

Eigentlich dürfte das (an dieser Stele) keine Probleme machen, aber:
Hat deine XenForo-Config einen Proxy-Eintrag?

Könntest du mal
PHP:
<?php
use XF\Pub\App;
use XT\Membermap\Service\GoogleApi;

$dir = __DIR__;
require $dir . '/src/XF.php';
\XF::start($dir);
\XF::setupApp(App::class);
$serviceID = 'geocode';
$params = [
    'address' => 'Berlin',
    'key' => \XF::options()->xtMMGoogleMapsApiKey
];
$apiService = \XF::service(GoogleApi::class);
$apiUrl = $apiService->fetchService($serviceID, $params);

$client = \XF::app()->http()->client();
$response = $client->get($apiUrl)->getBody()->getContents();
echo($response);
exit;

als apitest.php speichern und dann per php apitest.php ausführen, was bringt das für ein Ergebnis?
 
Das Ergebnis sieht nicht viel anders aus, wenn man die Darstellung vernachlässigt.
Code:
{ "results" : [ { "address_components" : [ { "long_name" : "Berlin", "short_name" : "Berlin", "types" : [ "locality", "political" ] }, { "long_name" : "Kreisfreie Stadt Berlin", "short_name" : "Kreisfreie Stadt Berlin", "types" : [ "administrative_area_level_3", "political" ] }, { "long_name" : "Berlin", "short_name" : "BE", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "Deutschland", "short_name" : "DE", "types" : [ "country", "political" ] } ], "formatted_address" : "Berlin, Deutschland", "geometry" : { "bounds" : { "northeast" : { "lat" : 52.6754542, "lng" : 13.7611175 }, "southwest" : { "lat" : 52.338234, "lng" : 13.088346 } }, "location" : { "lat" : 52.52000659999999, "lng" : 13.404954 }, "location_type" : "APPROXIMATE", "viewport" : { "northeast" : { "lat" : 52.6754542, "lng" : 13.7611175 }, "southwest" : { "lat" : 52.338234, "lng" : 13.088346 } } }, "place_id" : "ChIJAVkDPzdOqEcRcDteW0YgIQQ", "types" : [ "locality", "political" ] } ], "status" : "OK" }
 
Es wird immer merkwürdiger :)

Der Code macht im Grunde genau das was der validation code beim speichern auch macht.
Aber gut, schauen wir weiter.

Hattest Du das auch per SSH ausgeführt oder im Browser?
Falls per SSH: Bitte nochmal im Browser testen.
 
Im Browser
 
Hmpf, das ergibt irgendwie 0 Sinn.

Was kommt bei
PHP:
<?php
use XF\Pub\App;
use XT\Membermap\Service\GoogleApi;
$dir = __DIR__;
require $dir . '/src/XF.php';
\XF::start($dir);
\XF::setupApp(App::class);
$serviceID = 'geocode';
$params = [
    'address' => 'Berlin',
    'key' => \XF::options()->xtMMGoogleMapsApiKey
];
$apiService = \XF::service(GoogleApi::class);
if ($apiService->isAvaiable(\XF::options()->xtMMGoogleMapsApiKey))
{
    echo("Key is okay!<br />");
}
else
{
    echo("Key is not okay!<br />");
}
$apiUrl = $apiService->fetchService($serviceID, $params);
$client = \XF::app()->http()->client();
$response = $client->get($apiUrl)->getBody()->getContents();
echo($response);
exit;

raus?
 
Zurück
Oben