2013-07-10 130 views
-1

我對Google Map API v3非常陌生。我已經提到谷歌開發者指南,但我沒有得到正確的結論。 我有地址列表。 我想發送這些作爲一個(來源) - 許多地址(目的地)到谷歌地圖,我想繪製的地址是距離地圖上的源地址30公里。地圖上的繪圖標記距離30公里

是否有任何可能的方式與谷歌地圖來實現這一目標?

任何一個可以被這個建議..

+1

我不知道,你是什麼意思。你有地點列表(經緯度/緯度),但你只想在相距超過30公里的地方設置一個標記?除了什麼?彼此? –

回答

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> 
+0

Michael,條件是距離<30000嗎? –

+0

@甜菜根 - 甜菜根 - 這取決於OP想要什麼,哪個問題不清楚。我列出的代碼會在30公里內創建標記。翻轉條件,你會得到超過30公里的標記。 –

+0

同意。我最初將Q讀爲含義大於閾值但是再次閱讀的目的地,這是不明確的。 –