我对 Google Map API v3 很陌生。我已经参考了谷歌开发者指南,但我没有得到正确的结论。我有地址列表。我想将它们作为一个(源)发送 - 许多地址(目的地)到谷歌地图,我想在地图上绘制与源地址相距 30 公里的地址。
有没有可能用谷歌地图实现这一目标的方法?
任何人都可以建议这个..
我对 Google Map API v3 很陌生。我已经参考了谷歌开发者指南,但我没有得到正确的结论。我有地址列表。我想将它们作为一个(源)发送 - 许多地址(目的地)到谷歌地图,我想在地图上绘制与源地址相距 30 公里的地址。
有没有可能用谷歌地图实现这一目标的方法?
任何人都可以建议这个..
您正在寻找的其中一件事是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>