1

我试图弄清楚如何使用地理边界框的“左上纬度和经度”和“右下纬度和经度”从下面的 MySQL 表中检索信息。

CREATE TABLE `markers` (
  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `name` VARCHAR( 60 ) NOT NULL ,
  `address` VARCHAR( 80 ) NOT NULL ,
  `lat` decimal(10,7) NOT NULL ,
  `long` decimal(10,7) NOT NULL,
  `geopoint` point NOT NULL,
  PRIMARY KEY  (id),
  SPATIAL geopoint (geopoint)
) ENGINE = MYISAM ;

到目前为止,我有下面的 SQL 查询,我不确定它是否是检索信息的最有效和最有效的方式?

$sql = "SELECT * FROM `markers` WHERE (long BETWEEN '$west_long' AND '$east_long') AND (lat BETWEEN '$north_lat' AND '$south_lat')";
4

1 回答 1

0

有相当令人印象深刻的公式可以将两个纬度转换为距离(米、英里),经度也是如此。

只要您的请求在地球的某个范围内,您就应该帮助 MySQL 使用第二个大大简化的加宽 where-condition 以减小到正确的矩形。

如果您在 php 或 sql 中采用这些公式,这是您的选择 - 以米为单位的框可以转换为以纬度/经度为单位的框。

一个简单的经纬度矩形永远不会是一个真正的矩形,就像你在每个橙色上看到的那样。

马可

于 2013-04-18T19:17:48.117 回答