-1

我对 Google Map API v3 很陌生。我已经参考了谷歌开发者指南,但我没有得到正确的结论。我有地址列表。我想将它们作为一个(源)发送 - 许多地址(目的地)到谷歌地图,我想在地图上绘制与源地址相距 30 公里的地址。

有没有可能用谷歌地图实现这一目标的方法?

任何人都可以建议这个..

4

1 回答 1

0

您正在寻找的其中一件事是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
    });
}

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

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=geometry">
</script>
于 2013-07-10T08:06:26.500 回答