我在我的shop.rb
中有這個:每次更新地址時更新地理編碼緯度和經度
def geocode_address
if !address_geo.blank?
geo=Geokit::Geocoders::MultiGeocoder.geocode(address_geo)
errors.add(:address, "Could not Geocode address") if !geo.success
self.lat, self.lng = geo.lat,geo.lng if geo.success
end
end
# Checks whether this object has been geocoded or not. Returns the truth
def geocoded?
lat? && lng?
end
和我的shops_controller.rb
:
def update
@shop = Shop.find(params[:id])
if @shop.update_attributes(params[:shop])
flash[:notice] = "Successfully saved."
redirect_to shop_path(@shop, :type => @shop.shop_type)
else
render :action => :edit
end
end
現在當用戶首次創建條目時,地址被地理編碼,緯度和經度保存到數據庫。
但是當用戶更新地址時,緯度和經度將不再被地理編碼,因此仍然使用舊的緯度和經度,這是第一次保存。
如何在每次更新條目時讓Rails重新進行地理編碼?
我不能僅僅依賴地址,因爲geokit中存在一個錯誤,當我嘗試根據地址顯示多個地圖時,只會顯示最後一個地圖。
我正在使用geokit,Gmaps,Google Maps ...
謝謝。
不,這不是用戶的地址。這是一家商店的地址。比方說,最初一家商店的地址與城市和國家的信息一起保存,地理編碼將基於該城市和國家。但是,如果更新的地址與街道名稱更精確,則地理編碼應更新經度和緯度。 – Victor 2010-10-27 14:10:50