谷歌地图API V3-检查坐标是否在后端的DirectionRoute附近

Google Maps API V3 - Check whether a co-ordinate is near a DirectionRoute in the backend

本文关键字:后端 DirectionRoute 附近 是否 API V3- 检查 坐标 谷歌地图      更新时间:2023-09-26

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

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

我计划在前端添加方向搜索功能,并在后端保存结果(单一路线)。

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

有人能建议我一种有效的方法来存储路线细节,以及将其与标记坐标进行比较的方法吗。

注:

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

提前感谢

如果您将路点的坐标保存在数据库中,则可以使用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 

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

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