地图上的地块标记距离30公里

时间:2013-07-10 07:14:58

标签: google-maps-api-3

我是Google Map API v3的新手。我已经提到谷歌开发者的指南,但我没有得到正确的结论。 我有地址列表。 我想将这些作为一个(来源) - 许多地址(目的地)发送到谷歌地图,我想绘制距地图上的源地址30公里的地址。

有没有办法用谷歌地图来实现这个目标?

可以在此建议任何人..

1 个答案:

答案 0 :(得分:0)

您正在寻找的一件事是几何库(reference)中的computeDistanceBetween()函数。这为您提供了两个LatLng个对象之间的距离。有了它,你可以做任何你需要的测试 - 不清楚你的意思是“不到30公里”或“超过30公里”或“约30公里”。但是考虑到计算距离的方法,你可以在循环标记时进行任何测试。

这是一个例子。假设您有一些这样的数据 - 可以来自JSON对象,或者其他:

var data = {
    source: { lat: n, lng: n },
    places: [
        { lat: n, lng: n, name: str },
        { lat: n, lng: n, name: str },
        ...
    ]
};

初始化地图后,您可以使用此类代码循环浏览data.places并仅创建符合距离标准的标记。在这个例子中,我们将创建距离源30公里范围内的标记:

var sourceLatLng =
    new google.maps.LatLng( data.source.lat, data.source.lng );
for( var i = 0;  i < data.places.length;  ++i ) {
    addPlace( data.places[i] );
}

function addPlace( place ) {
    var placeLatLng = new google.maps.LatLng( place.lat, place.lng );
    var distance =
        google.maps.geometry.spherical.computeDistanceBetween(
            placeLatLng,
            sourceLatLng
        );
    if( distance > 30000 )
        return;

    var marker = new google.maps.Marker({
        map: map,
        position: placeLatLng
    });
}

您需要确保加载几何库,方法是在加载Maps API时添加libraries=geometry参数,例如:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=geometry">
</script>