我在我的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