我正在寻找查询以获取两点之间的路线。
我有这个链接,让我们说:
example.com/any? lat1 = 31.0000 & lng1 = 31.0000 & lat2 = 31.0000 & lng2 = 31.0000
所以在函数内部,我想编写一个查询到表示例的查询,
id | lat1 | lng1 | lat2 | lng2 | time | distance_between_inKm
1 | 31.0000 | 31.0000 | 31.0000 | 31.0000 | 30 | 20
所以现在我想去链接并获得最近的|| 最近的*路线或行
我从链接 lat1 & lng1 和 lat2 & lng2 得到这些,所以我想得到两者最接近的。
所以我想要的是我有一个表格,其中包含折线的静态数据和 2 点的信息,所以我想像 Google Matrix api 一样使用它们,但是从我的服务器,让我们说:
更新
我尝试了这个查询,但它忽略了 AND:
SELECT id,distance_between,time_between,start_latitude, start_longitude,end_latitude,end_longitude, SQRT(
POW(69.1 * (start_latitude - 31.908482676577364), 2) +
POW(69.1 * (35.1666776731924 - start_longitude) * COS(start_latitude / 57.3), 2))
AND
SQRT(
POW(69.1 * (end_latitude - 31.966051), 2) +
POW(69.1 * (35.894587 - end_longitude) * COS(end_latitude / 57.3), 2))
AS distance
FROM matrix_api USE INDEX (start_latitude,start_longitude,end_latitude,end_longitude,distance_between,time_between) HAVING distance < 0.2 ORDER BY distance LIMIT 1;
所以我想要这样的东西给输入 1 和 2 并给我有 2 的行
同时关闭起始纬度和结束纬度
更新
我也试过这个,仍然没有运气:
SELECT id,distance_between,time_between,start_latitude, start_longitude,end_latitude,end_longitude,
SQRT(
POW(69.1 * (start_latitude - 32.016659), 2) +
POW(69.1 * (35.727839 - start_longitude) * COS(start_latitude / 57.3), 2) AND
POW(69.1 * (end_latitude - 31.966051), 2) +
POW(69.1 * (35.894587 - end_longitude) * COS(end_latitude / 57.3), 2)
)
AS distance
FROM matrix_api USE INDEX (start_latitude,start_longitude,end_latitude,end_longitude,distance_between,time_between) HAVING distance < 0.2 ORDER BY distance LIMIT 1;
样本输入:
lat1=0.0000 lng1=0.0000
lat2=0.0000 lng2=0.0000
输出:
The row that I already have in table Distance between: 0.0 And time between: 0.0
所以在表里面我们有 lat1 和 lng1 lat2 lng2 和之间的距离。我想在最接近 lat2 lng2 的同一时间得到最接近 lat1 lng1 的行。但是这里 2 保存在同一行中,所以我希望它像我需要或找到的行内的 Google API Matrix 最接近的距离。