mysql - google maps mysql查询查找公交车

标签 mysql google-maps

我正在开发一个使用谷歌地图的公交咨询服务项目。你将一个图标拖到你所在的地方和你想去的地方,应用程序会告诉你乘坐哪辆公共(public)汽车,这现在正在工作,但如果没有直达公共(public)汽车,我想进行公共(public)汽车组合以到达某个地方。

我将我所在城市的所有公交车路线都存入了带有经纬度的数据库中:

id  |  bus_id   |    lat   |   lng
-------------------------------------
1   |  12       |  -23.232 |  23.328
2   |  12       |  -23.233 |  23.327
3   |  12       |  -23.234 |  23.326
4   |  12       |  -23.235 |  23.325

我要查找到起点和终点最近的公交车的查询是这样的:

SELECT 
    id, number
    FROM buses
    WHERE id IN
    (
        SELECT bus_id 
        FROM coord 
        WHERE 
        POW((lat - '.$points["direction"]["lat"].'), 2) + POW((lng - '.$points["direction"]["lng"].'), 2) < POW(('.$distance.' / 111.12), 2)
    )
    AND id IN
    (
        SELECT bus_id
        FROM coord 
        WHERE 
        POW((lat - '.$points["person"]["lat"].'), 2) + POW((lng - '.$points["person"]["lng"].'), 2) < POW(('.$distance.' / 111.12), 2)
    )

如果没有直达起点/终点的公交车,我如何检查公交车组合?

谢谢!!

顺便说一下:http://www.mapabondi.com.ar/ 只有西类牙语,抱歉! (感谢反馈)

编辑:

我想出了一个查询来找出公交车组合

SELECT
    o.bus_id,
    d.bus_id,
    o.lat,
    o.lng,
    d.lat,
    d.lng,
    ROUND(GeoDistKM(o.lat,o.lng,d.lat,d.lng)) AS distance
FROM coord o
JOIN coord d
WHERE o.bus_id IN (
    SELECT bus_id 
    FROM coord 
    WHERE 
    POW((lat - -31.528361), 2) + POW((lng - -68.583527), 2) < POW((1 / 111.12), 2)
    )
AND d.bus_id IN (
    SELECT bus_id 
    FROM coord 
    WHERE 
    POW((lat - -31.571516), 2) + POW((lng - -68.521385), 2) < POW((1 / 111.12), 2)
    )
GROUP BY d.bus_id,o.bus_id
HAVING distance < 1
ORDER BY distance ASC

我现在唯一的问题是性能,这个查询非常慢......是否有可能通过存储过程或函数变得更好?

最佳答案

不是真正的答案,但可能是让您入门的东西。

我认为你应该考虑添加一个新表 bus_stops

bus_id bus_stop_name lat        lon
12     stadium       -23.145    23.315
12     halembra      -23.234    23.326
...
14     halembra      -23.234    23.326
14     dali          -23.242    23.345

然后,查找对应关系会更容易:

  • 按欧几里得距离找到最近的公交车站的开始和停止
  • 使用 bus_stops 表查找共享公交车站的路径
    • 这个问题在图论中被形式化,称为图遍历,参见 this google query获取信息和示例代码。

虽然不容易!祝你好运。

关于mysql - google maps mysql查询查找公交车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698462/

相关文章:

java - Android 应用程序 SQLiteDatabase 插入新值不起作用,代码中有 0 个错误

MySQL按总重量排序结果

r - 如何让图像 iconMarker 适用于plotGoogleMaps R?

javascript - Uncaught ReferenceError : google is not defined

javascript - 从数据库获取 GPS 纬度、经度值并在 map 上绘制标记?

java - getFromLocationName().size() 始终返回 0 - Android

javascript - 谷歌地图在点击时加载默认和不同的位置

c# - 'Student' 附近的语法不正确

mysql - Pinterests 使用位操作来创建全局 ID 以在 MySQL 上分片其数据的原因是什么?它是如何工作的?

MySQL子查询返回多行选择子查询计数