我的應用程序使用地理編碼器和谷歌地圖的軌道有點問題。基本上我正在開發的站點註冊場地,這些場地的地址在地圖上被保存爲標記。在首頁是一個搜索欄,輸入地址和搜索半徑。結果會顯示在帶有地點標記的地圖頁面上,如果在搜索和半徑內輸入了標記,則會使用地圖自動擬合顯示這些標記以將它們全部包含在內。Rails - Geocoder和谷歌地圖幫助需要
如果在搜索半徑中沒有標記,我已經將其設置爲在臨時搜索位置放置一個臨時不可見標記,然後使用地理編碼我可以計算該點最近的標記,然後刪除臨時標記並在最近的點放置一個新的標記。這樣一來,如果沒有標記位於該半徑範圍內,地圖就不會僅僅到達南大西洋,並且它可以向用戶顯示他們搜索到的最接近的地點,而不僅僅是說「在該半徑內沒有任何東西,再試一次」 」。
我敢肯定,我已經解釋過,這聽起來很混亂,可能有更好的辦法。但基本上我需要它,以便搜索欄到達地址幷包含半徑內的所有標記,並且如果該半徑內沒有標記,則對齊最近的標記並在其周圍包含任何標記。
雖然它不像預期的那樣工作。在我的控制器我有..
@venuesAll = Venue.all
@myArray = Array.new
@search_location = Venue.create(:address => params[:search])
@venuesAll.each do |venue|
@myA = @myArray.push(@search_location.distance_from(venue)) if @search_location.distance_from(venue) != 0.0
end
@myAI = @myA.index(@myA.min)
@closestVenueName = @venuesAll[@myAI].name
@closestVenueAddress = @venuesAll[@myAI].address
@search_location.destroy
@new_search_location = Venue.create(:address => @closestVenueAddress)
@json = Venue.near(@closestVenueAddress, 5, :order => :distance).to_gmaps4rails do |venue, marker|
marker.infowindow render_to_string(:partial => "/venue_locations/infowindow", :locals => { :venue => venue})
marker.title "i'm the title"
end
@json_search = Venue.last.to_gmaps4rails do |venue, marker|
marker.picture({
:picture => "",
:width => 32,
:height => 32
})
end
把@json我gmaps4rails的觀點給了我存在於搜索半徑的所有場所標記。它的工作正常,但如果搜索在半徑沒有標記,然後它去大西洋..
把@json_search放在gmaps4rails將在最近的場地放一個不可見的標記。但它沒有顯示其他場所,所有標記都看不見。 如果我可以將二者結合起來,那麼也許它會工作,所以我已經試過
@json_all = @json + @json_search
鐵軌似乎認爲他們都是字符串。它不會崩潰,但它也不能正常工作。使用像join和merge這樣的方法雖然會崩潰。我想我可能已經做得比我應該做的更復雜了。我的整個控制器有點亂。它可以在github上看到here。對於長期的問題抱歉。我是一個非常新的軌道和編碼的一般,所以我希望我的問題是有道理的。
你想結束一個gmap4rails對象的數組? –
如果我的搜索結果附近有標記,那麼json變量似乎可以獲得所需的所有對象。我只是想要一種方式,如果沒有物體在我的搜索附近,它會自動走到最近的標記處進行搜索。據我可以告訴刪除new_search_location和json_search似乎使它的工作。 – pjsim