我對Google Map API v3非常陌生。我已經提到谷歌開發者指南,但我沒有得到正確的結論。 我有地址列表。 我想發送這些作爲一個(來源) - 許多地址(目的地)到谷歌地圖,我想繪製的地址是距離地圖上的源地址30公里。地圖上的繪圖標記距離30公里
是否有任何可能的方式與谷歌地圖來實現這一目標?
任何一個可以被這個建議..
我對Google Map API v3非常陌生。我已經提到谷歌開發者指南,但我沒有得到正確的結論。 我有地址列表。 我想發送這些作爲一個(來源) - 許多地址(目的地)到谷歌地圖,我想繪製的地址是距離地圖上的源地址30公里。地圖上的繪圖標記距離30公里
是否有任何可能的方式與谷歌地圖來實現這一目標?
任何一個可以被這個建議..
一個你正在尋找的東西是在幾何庫(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>
Michael,條件是距離<30000嗎? –
@甜菜根 - 甜菜根 - 這取決於OP想要什麼,哪個問題不清楚。我列出的代碼會在30公里內創建標記。翻轉條件,你會得到超過30公里的標記。 –
同意。我最初將Q讀爲含義大於閾值但是再次閱讀的目的地,這是不明確的。 –
我不知道,你是什麼意思。你有地點列表(經緯度/緯度),但你只想在相距超過30公里的地方設置一個標記?除了什麼?彼此? –