Ankündigung

Einklappen
Keine Ankündigung bisher.

Geolocation Entfernungsmessung für 1000 Händler

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Geolocation Entfernungsmessung für 1000 Händler

    Ich stolpere mal wieder �ber die Umkreissuche bzw. �ber Umsetzbarkeit bei vielen Eintr�gen.
    Ein Kunde hat ein H�ndlernetz mit 1000+ H�ndlern.
    Es wird eine Umkreissuche (auf Basis PLZ) ben�tigt, es sollen aber nur die n�chsten 5 H�ndler im Umkreis angezeigt werden.

    Erste Idee, eine CC Liste der H�ndler mit Umkreisfilter (50km) , die auf 5 H�ndler begrenzt ist. Frage hierzu: In welcher Reihenfolge werden die H�ndler im Umkreis gesucht?

    Wenn also innerhalb der 50km 10 H�ndler sind, ich aber nur 5 H�ndler anzeigen lasse, welche werden dann gekappt? Die mit der h�heren ID oder die mit der l�ngeren Entfernung.

    Wie sieht es mit den Kosten aus? Wenn ich 1000 H�ndler zu einer PLZ Abfrage, habe ich ja theoretisch 1000 Anfragen (aktuell 5$), ist das so korrekt? In diesem Fall sollten wohl besser alle Ergebnisse zu den Entfernungen gecached werden. Bei aktuell 8181 aktiven Ortpostleitzahlen w�ren das 8,1Mio Eintr�ge. Hat jemand eine Idee, wie so etwas umgesetzt wird?



  • #2
    Es wird eine Umkreissuche (auf Basis PLZ) ben�tigt, es sollen aber nur die n�chsten 5 H�ndler im Umkreis angezeigt werden.
    Die Umkreissuche gibt die Treffer nach der Distanz aufsteigend zur�ck.
    Eine Liste mit Limit auf 5 Eintr�ge sollte gut funktionieren.

    ---
    Die API muss nur telefonieren, wenn keine Koordinaten bekannt sind. Also nur eine Adresse vorliegt. Die Marker sind f�r die Umkreissuche bereits mit Koordinaten ausgestattet (Pflicht f�r die Umkreissuche). Damit muss keine erneute API Abfrage gestellt werden f�r die Maps-Darstellung.

    Einzig die Such-Anfrage muss einmal telefonieren und aus der anfragenden PLZ oder Adresse die Koordinaten erfragen.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Zitat von Tim Beitrag anzeigen

      Die Umkreissuche gibt die Treffer nach der Distanz aufsteigend zur�ck.
      Eine Liste mit Limit auf 5 Eintr�ge sollte gut funktionieren.

      Hi,

      ich habe das eben mit dem Standard Listentemplate (customcatalog_default) und einem Umkreisfilter unter Eclipse X 3.0.19 getestet. Die einzelnen Katalogeintr�ge enthalten Geodaten. Im Listenmodul ist keine Sortierung eingestellt.

      Jetzt bekomme ich aber je nach Umkreis bei gleicher PLZ eine anders sortierte Liste ausgespielt - die Sortierung nach N�he zur eingegebenen PLZ scheint nicht zu funktionieren..

      Kommentar


      • #4
        L�uft es nur bei uns krumm oder ist das ein allgemeines Problem, dass die Umkreissuche nicht von Haus aus nach der N�he sortiert werden kann? Und in letzterem Fall, habt Ihr das auf der Agenda f�r zuk�nftige Updates oder m�ssen wir uns selbst drum k�mmern? Bisherige Versuche mit den Codeschnipseln aus dem Forum (findDistance Methode etc.) haben leider zu sehr langen Ladezeiten gef�hrt.

        Wir haben aktuell ein Projekt das dieses Feature erfordert -> Die X n�chsten Eintr�ge von der eingegebenen Adresse ausspielen.

        W�re cool hierzu eine R�ckmeldung zu erhalten

        Kommentar


        • #5
          Die Umkreissuche gibt die Treffer nach Distanz sortiert zur�ck. Das Problem ist, dass der Query f�r die CC Eintr�ge gesondert davon l�uft und von dieser Sortierung erstmal nichts weiss, ausser die Ids der Eintr�ge, die getroffen haben.

          Ich h�nge mal ein mod_customcatalog Template an, das den Query f�r die Umkreistreffer noch einmal durchl�uft. Dessen Ergebnis sind die nach Distanz sortierten IDs. -> quasi was der Filter vorher macht.

          Diese werden im n�chsten Schritt genutzt um den eigentlich Query f�r die CC Ausgabe zu sortieren.

          Das ganze baut darauf auf, dass vor dieser sortierten Liste ein Umkreisfilter einmal durchgelaufen ist und die gecached Werte vorliegen.

          Hier das Ganze in Aktion, basierend auf der Directory Demo: https://dev4-13.premium-contao-theme...urg&plzort=500

          Ich werde eine zug�ngliche Methode bereitstellen im Geodaten-Attribut, das die Treffer Ids zur�ckgibt.

          Angeh�ngte Dateien
          Zuletzt geändert von Tim; 16.06.2022, 08:56.
          http://www.premium-contao-themes.com

          Kommentar


          • #6
            Hi,
            vielen Dank! Ich habe das ausprobiert, im ersten Versuch liefert die Liste kein Ergebnis - habe dann
            PHP-Code:
            $objCC = \Contao\CustomCatalog::findByModule($this); 
            mit
            PHP-Code:
            $objCC $this->CustomCatalog
            ausgetauscht, dann funktioniert es. Kann diese �nderung die Funktion beeintr�chtigen? Mich wundert nur noch, dass ich mit gleichem Katalog/Liste/Filter in einer Testinstallation eine leicht anders sortierte Liste erhalte. Testumgebung mit X3.0.19 -> richtige Sortierung / Live mit X3.0.16 -> Sehr �hnlich aber mit teils falscher Sortierung

            Kommentar


            • #7
              $this->CustomCatalog beinhaltet im mod_customcatalog Template s�mtliche Liste-bezogenen Einstellungen wie z.B. eingene SQL Bedingungen, Paginationen, Ver�ffentlichungs-Einstellungen etc. Das Objekt ist das Resultat des abgearbeiteten CC-Liste-Moduls und kann vor der Ausgabe (->render()) im Template vollst�ndig manipuliert werden.

              ::findMyModule erstellt ein rohes CC Objekt mit reinem Verweis auf die Tabelle ohne Ber�cksichtungen von Filtern etc. Es ist quasi ein reines "Arbeits-Objekt".

              Technische Unterschiede in den beiden Versionen sollten marginal sein. Nicht zu untersch�tzen sind Rundungs-Abweichungen bei Geographischen Daten. Hier sind bereits Rundungen im Dezimalbereich kilometerweite Unterschiede.



              http://www.premium-contao-themes.com

              Kommentar


              • #8
                Hi Tim, danke f�r die R�ckmeldung.

                Hast du eine Idee, warum
                PHP-Code:
                $objCC = \Contao\CustomCatalog::findByModule($this); 
                kein Ergebnis liefert?

                Wir w�rden das Feature sehr gerne nutzen und dann nat�rlich am besten mit dem "Arbeits-Objekt" ohne Rundungsfehler.

                Kommentar


                • #9
                  Zitat von EBL Beitrag anzeigen
                  Hi Tim, danke f�r die R�ckmeldung.

                  Hast du eine Idee, warum
                  PHP-Code:
                  $objCC = \Contao\CustomCatalog::findByModule($this); 
                  kein Ergebnis liefert?

                  Wir w�rden das Feature sehr gerne nutzen und dann nat�rlich am besten mit dem "Arbeits-Objekt" ohne Rundungsfehler.
                  Das respektiert keinerlei Filter etc., die ggf. im Modul angelegt sind. Es ist ein reines PHP Objekt.
                  http://www.premium-contao-themes.com

                  Kommentar


                  • #10
                    Also im Modul ist nur der Umkreisfilter hinterlegt..
                    Zuletzt geändert von EBL; 18.07.2022, 12:24.

                    Kommentar


                    • #11
                      Zitat von EBL Beitrag anzeigen
                      Also im Modul ist nur der Umkreisfilter hinterlegt..
                      Das ist f�r findByModule irrelevant. Siehe Post: https://forum.premium-contao-themes....5339#post25339

                      findByModule kann als reines Reflektions-Objekt genutzt werden um �ffentliche Methoden auszuf�hren.
                      http://www.premium-contao-themes.com

                      Kommentar


                      • #12
                        Okay, mir bleibt allerdings das Problem, dass keine Ergebnisse gefunden werden. Bin mit meinem Know-How hier am Ende

                        Kommentar


                        • #13
                          Mit $objCC = $this->CustomCatalog; l�uft es nun soweit. Das einzige Problem: Wenn die Umkreissuche kein Ergebnis findet, kommt eine Fehlermeldung:

                          An exception occurred while executing 'SELECT cc_....* FROM cc_... WHERE kategorie= 1 AND cc_....publish='1' ORDER BY FIELD(id,)': SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
                          K�nnte das an dem " ORDER BY FIELD(id,)" liegen? Wenn ich
                          PHP-Code:
                          // nach ID Feld sortieren:
                          $objCC->addSorting('FIELD(id,'.implode(',',$arrIds).')' );
                          ?> 
                          aus dem code entferne kommt der Fehler nicht mehr.

                          Hast du eine Idee wie man das l�sen k�nnte?

                          Kommentar


                          • #14
                            Hast du eine Idee wie man das l�sen k�nnte?
                            einfach eine if Abfrage herum, ob $arrIds gef�llt ist

                            Code:
                            if( !empty($arrIds) )
                            {
                            ...
                            }
                            http://www.premium-contao-themes.com

                            Kommentar


                            • #15
                              L�uft! Vielen Dank f�r den Support!

                              Kommentar

                              Lädt...