[英]Rails Geocoder restrict region/country
我想限制我對緯度/長度的搜索。 對於特定地區(即新西蘭)。
Google提供了一些可以設置以實現結果的參數,例如:'componentsRestriction'和'region'。 我試圖在config / initializers / geocoder.rb中設置相同的東西,但它不起作用。 這是我的代碼。
Geocoder.configure(
:lookup => :google,
:timeout => 5,
:units => :km,
# version 1
:google => {
:components => {:country => 'NZ'},
:region => 'NZ',
},
# version 2
:components => {:country => 'NZ'},
:region => 'NZ',
)
這是來自谷歌的文檔,其中它們允許指定額外參數,例如查找區域。 https://developers.google.com/maps/documentation/geocoding/
有點遲到,但我正在看同樣的問題。 查看配置中的初始化程序選項(見下文)后,我相信您無法在初始化程序中設置區域。 可能是因為某些API支持它而有些則不支持。
https://github.com/alexreisner/geocoder/blob/master/lib/geocoder/configuration.rb
我正在使用Google地圖的地理編碼器,並找到了幾種方法。 在我的例子中,我正在尋找凱尼爾沃思。 它是英國的一個地方,但是在沒有地區的情況下查詢時,我會在新澤西州找到凱尼爾沃思。 我相信這是因為谷歌有美國的區域偏見,我希望如此。 我正在使用地理編碼器附近根據用戶輸入的標准在我的場地模型中找到場地。 我假設示例中的near參數距離為1英里。
方法1
將區域傳遞給搜索或坐標方法:
Geocoder.search("Kenilworth", :params => {:region => "gb"})
Geocoder.coordinates("Kenilworth", :params => {:region => "gb"} )
搜索返回一個數組,該數組將具有城鎮所需的lat \\ long。 坐標將返回緯度和經度坐標,根據我的需要,這是最佳選擇。
要使用near方法,您可以獲取提取的坐標並在附近使用它們:
Venue.near(Geocoder.coordinates("Kenilworth", :params => {:region => "gb"} ), 1 )
方法2
將國家/地區連接到指定的位置參數:
Venue.near( params["location"] << ", United Kingdom" , 1)
生產:
Venue.near("Kenilworth, United Kingdom", 1 )
我相信這兩種方法只會對谷歌使用1次API調用。 我目前無法驗證,因為我無法登錄google開發人員控制台查看API使用情況。
我已經讀過這個地區可能有點受傷但我在測試中使用它沒有任何問題。
希望這可以幫助其他人解決同樣的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.