我试图找出如何使用"左上角经度和纬度"从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')";
答案 0 :(得分:0)
将两个纬度转换为距离(米,英里)有相当令人印象深刻的公式,经度相同。
只要您的请求位于地球的某个范围内,您应该使用第二个大大简化的扩展where条件来帮助MySQL缩小到正确的矩形。
如果您在php或sql中使用这些公式,这是您的选择 - 以米为单位的框可以转换为lat / long的框。
一个拉长形式的简单矩形永远不会是一个真正的矩形,就像你可以看到每个橙色。
马