我使用几何类型字段将一些地图区域存储到表中。
所以插入是这样的:
INSERT INTO zones (zoneName, coords) VALUES ('name',
PolygonFromText('POLYGON((
41.11396418691335 1.2562662363052368,
41.11370552595821 1.2560248374938965,
41.11851079510035 1.2459397315979004,
41.11880984984478 1.2461864948272705,
41.11396418691335 1.2562662363052368))'));
然后我有了用户位置,我需要知道他是否在某个区域内。这适用于这个:
SELECT id
FROM zones
WHERE MBRContains(coords,GeomFromText('POINT(41.117783 1.260590)'))
但有时,用户位置并不完美,所以我认为最好知道哪个区域最接近用户位置。
那是我不知道的部分......我发现了一些查询来获取两点之间的距离,但不是点和多边形。