Malcolm Beck´s: MySQL und GEO-Location, Umkreissuche

Beitrag lesen

હેલો

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?

બાય

--
 .
..: