php - 半径/最近的结果 - Google Maps API

标签 php javascript mysql google-maps google-maps-api-3

首先,我使用的是 Google Maps API v3。我有一张显示从数据库中提取的所有结果的大 map ,现在我想实现一个功能,显示距当前位置 X 公里范围内最近结果的半径(由 HTML5 地理定位服务)。

由于 map 包含了所有的结果,我希望能够增加X公里,然后提交结果会根据用户当前位置返回最近的结果。然后整个 map 应该删除所有超出半径的标记,留下 X 公里半径内的标记。

我正在请求有关如何执行此操作的有效代码、教程或文章。

最佳答案

这里是 JSFiddle Demo:

我想这是一种方法。您可以使用 Google Map V3 API's circle从您的中心点或当前位置创建边界。您可以使用 setRadius(radius:number) 以米为单位指定圆的半径。使用创建的圆圈,您可以遍历标记并使用 Circle's getBounds object which is a LatLngBounds 查看它们是否在圆圈范围内并检查标记是否在边界内。

我继续创建了一个在 map 上有五个点的小演示,当你点击创建圆按钮时,它会让第一个标记成为中心点并绘制一个半径为 5000 的圆并过滤掉使用上述方法绑定(bind)不带的标记:

function createRadius(dist) {
    var myCircle = new google.maps.Circle({
        center: markerArray[markerArray.length - 1].getPosition(),
        map: map,
        radius: dist,
        strokeColor: "#FF0000",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#FF0000",
        fillOpacity: 0.35
    });
    var myBounds = myCircle.getBounds();

    //filters markers
    for(var i=markerArray.length;i--;){
         if(!myBounds.contains(markerArray[i].getPosition()))
             markerArray[i].setMap(null);
    }
    map.setCenter(markerArray[markerArray.length - 1].getPosition());
    map.setZoom(map.getZoom()+1);
}

关于php - 半径/最近的结果 - Google Maps API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5755905/

相关文章:

php - 如何使用 mysql_query 在这种方法中添加 "no record found"

php - 将 'CASE WHEN' 添加到 codeigniter CI_DB_mysql_driver 对象的 ar_select 键

php - 安排 MySQL 查询

php - 带有 codeigniter 的 ajax jquery。 url 不访问 Controller

javascript - 添加内容时如何防止文档自动滚动?

javascript - Google Maps API 信息窗口都具有相同的内容

mysql - 如何在mysql中将一个用户的表数据插入到不同机器上的另一个用户

php - 如何将 "WHERE NOT IN"查询实现到 Codeigniter 事件记录中?

javascript - 使用ajax url调用函数

javascript - 如何使用 React 在单击时切换类?