2012-08-04 56 views
5

我試圖設置谷歌的地方自動完成從最近的點排序結果。我有這樣的代碼...谷歌的地方自動完成 - 位置和半徑不起作用

var defaultPlace = new google.maps.LatLng(49.227463, 16.546097); 

var optionsAuto = { 
    location: defaultPlace, 
    radius: 20000, 
    types: ['geocode'], 
    componentRestrictions: { 
     country: 'cz' 
    } 
}; 

var autocomplete = new google.maps.places.Autocomplete(inputStart, optionsAuto); 

的種類和componentRestrictions的偉大工程,但位置和半徑似乎並不奏效。

+0

你爲什麼認爲它不工作? – geocodezip 2012-08-04 18:27:21

+0

,因爲結果仍然是相同的順序... – adam 2012-08-04 18:49:45

回答

5

看那documentation

它指出:

半徑|定義返回結果的距離(以米爲單位)。允許的最大半徑是50000米。注意,如果指定了rankby = distance(在下面的可選參數下描述),則不得包含半徑。

這聽起來像你想的可選參數:rankby =距離:

rankby |距離。此選項按照距離指定位置的距離升序排列結果。按距離排名結果將設置50公里的固定搜索半徑。一個或多個關鍵字,名稱或類型是必需的。

這也是可用的javascript service

Working Example

+0

那麼rankby =距離看起來完全像我需要的。我想在我的代碼使用它像這樣:var optionsAuto = { 位置:defaultPlace, rankBy:google.maps.places.RankBy.DISTANCE, 類型: '地址解析'], componentRestrictions:{ 國家:' cz' } };但它不起作用。你能告訴我什麼是正確的用法?謝謝 – adam 2012-08-04 21:51:05

+0

對我來說工作正常,如果我按照文檔。看到我添加到我的答案的工作示例。 – geocodezip 2012-08-04 23:34:05

+0

我得到了相同的選擇,但它仍然無法正常工作。你認爲這個問題可能是我使用了默認的自動完成功能嗎? – adam 2012-08-05 07:57:07

0

很可能有人會不跟我同意,但對我來說,我不帶引號定義半徑,即像下面

var request = { 
    location: pyrmont, 
     bounds: map.getBounds(), 
    radius: 2000, 
    zoom: 15, 
    types: ['restaurant'] 
    }; 

所以它沒有在半徑上有任何區別,並且顯示了與半徑無關的結果,但是當我在其上應用引號時,半徑參數似乎是b e working

var request = { 
    location: pyrmont, 
     bounds: map.getBounds(), 
    radius: '2000', 
    zoom: 15, 
    types: ['restaurant'] 
    }; 
相關問題