હેલો
ich schreibe gerade diese kleine „App“, in der ich viel mit Adressen arbeite. Jetzt wollte ich eine kleine Umkreisssuche realisieren, bzw. Kunden in der nähe vom Standort des Nutzers finden. Die Adressen speichere ich einmal in klartext ab und zusätzlich die GEO-Koordinaten.
CREATE TABLE IF NOT EXISTS `firmen_geo_pointer` (
`id` int(6) unsigned NOT NULL AUTO_INCREMENT,
`firmenid` int(6) DEFAULT NULL,
`location` point NOT NULL,
`short_lat` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`short_lng` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `location` (`location`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Die GEO-Koordinaten sind ja ziemlich einfach. Ich habe mal einige Adressen aus meiner direkten nachbarschaft zusammengetragen:
lat lng
Johannesstr 34 51.53849 7.15512
laurentius 2 51.53867 7.15332
stöckstr 100 51.53884 7.15208
karlstr 2 51.53720 7.15485
hauptstr 335 51.53801 7.15541
Melanchthonstraße 7 51.54000 7.15532
Begrenzt auf 5 Zeichen nach dem Komma. Wie eine Rückwärtssuche gezeigt hat, reicht dass für eine ziemlich genaue lokalisierung (geht sogar mit 4 stellen nach dem Komma).
Im Grunde sollte es doch hier reichen, wenn ich im Statement alle Ergebnisse möchte, die vom
(Standort_lat + 0.01000) > Aktueller_Standort
&&
(Standort_lng + 0.00999) > Aktueller_Standort
&&
(Standort_lat + 0.01000) < Aktueller_Standort
&&
(Standort_lng + 0.00999) < Aktueller_Standort
Bevor ich jetzt wieder Stunden meines Lebens vergeude: Kann das, anhand der oben gegebenen Werte, mit MySQL funktionieren?
બાય
.
..: