我是Google Map API v3的新手。我已经提到谷歌开发者的指南,但我没有得到正确的结论。 我有地址列表。 我想将这些作为一个(来源) - 许多地址(目的地)发送到谷歌地图,我想绘制距地图上的源地址30公里的地址。
有没有办法用谷歌地图来实现这个目标?
可以在此建议任何人..
答案 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>