Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe eine Frage zu einer, wie ich finde, komplexen Problemkonstellation. Sicher ist dieses Thema bereits mehrfach im Internet zu finden, jedoch würde ich gerne Eure persönliche Meinung zu diesem Thema wissen:

Es gibt ca. 30 MySQL Tabellen in meinem Projekt, die Ortsangaben enthalten. Ich habe zuerst den Namen als varchar in den einzelnen Tabellen hinzugefügt. Nun soll jedoch eine Umkreissuche verwendet werden, welches ein Problem bei mehrfach Ortsnamen aufwirft.

Also habe ich mir gedacht, die Zeilen der Ortsangabe als Tabelle mit Postleitzahl und Längen und Breitengrad als eigene Tabelle auszulagern und den Ort dann als ForeignKey zu setzen.

Nach der Recherche zu googleMaps und OpenGeoDb ist mir dann aufgefallen, dass ich viele Daten bereich als dumP erhalte, und somit doppelanfragne zu googlemaps verhindern kann, wenn diese bereits in meiner DB liegen.

In Hinblick auf internationale Orte, stellt dieses aber ein großes Problem dar - die Tabelle wird riesig und Wartung und Aktualisierung werden sehr komplex.

Was wäre eure Intention zu diesem Problem? Wir machen dieses andere Großprojekte?

Vielen Dank für Eure Tipps und Anregungen!!!!

Mein Ansatz wäre eine Aufteilung. Ich würde Deutschland und ggf. Länder, in denen die Firma Geschäftskontakte hat, offline vorhalten und für alles andere einen Webservice nutzen.

  • Autor

Um die Anzahl der Abfragen auf dauer zu minimieren. google setzt bei großer Abfrage ein limit und danach wird die Nutzung sehr teuer. Die Daten von OpenGeoDb sind ja relativ gut aufbereitet!

Zumal wenn ich nur auf googleMaps aufbaue, muss ich die Daten ja auch irgendwie speichern. Was schlägst du dort vor? Also der User gibt praktisch den Namen seiner Stadt ein, ggf. mit PLZ. Dann gibt mir googleMaps API die Längen- und Breitengrade zurück - diese speicher ich dann?

Öhm... wie jetzt? Du hast zuerst eine Suche mit variabler Quelle und danach soll jede schon einmal durchgeführte Suche zur Eingrenzung weiterer interner Suchen verwendet werden können? Oder habe ich das jetzt falsch verstanden?

Das Vorgehen funktioniert auf Dauer nicht, denn wenn Du eine Suche zu dem Ort X durchführst, dann kannst Du nur cachen, was Du für diese Suche gefunden hast. Selbst wenn eine zweite Anfrage zu dem Ort X statt findet und sich nur ein Suchparameter ändert, musst Du eine neue Abfrage an den Service senden. Entweder besorgst Du Dir die Geodaten und implementierst alles selbst oder Du musst eben den Webservice abfragen.

  • Autor

Alles klar.

@Pixie: Fast. Ich dachte halt, wenn ich nach "Berlin" suche, frage ich einmalig googeMaps nach den Koordinaten ab, speicher Sie dann in einer Tablelle z.B. locations, mit allen googlemaps Daten. Jetzt kann ich ja mit folgender Formel:

var x = 2 * $Erdradius * arcsin(

sqrt(

pow($x1 - $x2, 2) // Hinweis: pow($Basis, $Exponent) berechnet

+ pow($y1 - $y2, 2) // "$Basis hoch $Exponent".

+ pow($z1 - $z2, 2) // Hier also "($z1 - $z2)^2"

) / (2 * $Erdradius)

);

In meinen anderen Tabellen suchen. Sucht nun eine weitere Person nach "Berlin", entnehme ich die Daten aus meiner Datenbank.

Klingt für mich nun auch sehr kompliziert - die Frage ist halt, obs sinnvoll und performant läuft, ich habe gut 1.2 mio Ortsangaben mit PLZ in verschiedenen Tabellen, deshalb die Umstrukturierung.

Diese Methode berücksichtigt kein Änderungen der Daten, d.h. wurde einmal nach Berlin gefragt, dann hast Du ggf irgendwann INformationen in Deiner Datenbank, die nicht mehr aktuell sind, weil Du sie nicht abgleichst. Zusätzlich bekommst Du Duplikate, die sich nicht eindeutig zuordnen lassen. Wenn Du nach Berlin suchst und das Ergebnis speicherst, dann einen Ort in der Nähe von Berlin als Suche nimmst, dann erhältst eine überlappende Ergebnismenge

  • Autor

ja, Aktualität ist das Problem. Ich weiß nicht, ob ich mich richtig ausgedrückt habe @flashpixx. Ich wollte nicht das Ergebnis speichern, sondern nur die geolocations, die ich von googe bekomme. Geolocation API - Gears API - Google Code

Somit habe ich irgendwann eine Basis von Städten und Adressen, die immer wieder auftreten und den Umkreis kann ich ja mit der oberen Formel berechnen, somit dachte ich, erhalte ich eine schnelle Lösung, die auch mit wenigen WebService abfragen funktioniert.

Ich wollte nicht das Ergebnis speichern, sondern nur die geolocations, die ich von googe bekomme

Selbst diese ändern sich, wenn Du z.B. alle Hotels im Umkreis von 50km von einem Ort suchst, dann kann es passieren, dass Hotels nicht mehr existieren oder anders heißen usw. D.h. bei Deiner Umkreissuche wäre eben der Datenstand nicht immer aktuell.

Rein technisch würde man die Geokoordinaten der Orte und der Hotels speichern und dann entsprechend aus der Datenbank lesen.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.