首先,我使用的是 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/