0

我正在使用 Google Maps API V3 在我的 Java Web 应用程序中使用 MySql 作为数据库创建自定义地图。

我有一个功能可以通过前端添加自定义标记并将标记坐标(纬度/经度)保存在后端。

我打算在前端添加方向搜索功能并将结果(单条路线)保存在后端。

每当添加标记时,我想找出靠近标记位置的所有路线(预先保存)。

有人可以建议我一种存储路线详细信息的有效方法以及将其与标记坐标进行比较的方法。

笔记 :

我已经了解了 Way points 和 overview_path,但它们都没有提供完整的坐标列表来与标记坐标进行比较。

提前致谢

4

2 回答 2

0

如果您将航路点的坐标保存在数据库中,您可以使用 Haversine 公式 搜索离您的标记最近的航路点 此查询包含该公式并使用 PDO

$stmt = $dbh->prepare("SELECT  name, lat, lng, ( 3959 * acos( cos( radians(?) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians(?) ) * sin( radians( lat ) ) ) ) AS distance FROM mytable HAVING distance < ? ORDER BY distance LIMIT 0 , 1");
    // Assign parameters
    $stmt->bindParam(1,$center_lat);//lat coordinate of user
    $stmt->bindParam(2,$center_lng);//lng coordinate of user
    $stmt->bindParam(3,$center_lat);//lat coordinate of user
    $stmt->bindParam(4,$radius);//Radius in miles 
于 2013-02-22T15:38:09.417 回答
0

当您将路线保存在数据库中时,使用 geohashing 计算路线经过的所有边界框并将它们存储在另一个表中(有 2 个字段 - geohash,route_id 作为 PRIMARY)。

当您搜索路线时,计算以用户位置为中心、距离为半径的圆形中的所有边界框,然后使用带有 的查询geohash IN (circle_hashes)

于 2013-02-25T16:06:39.317 回答