如何使用gmaps-autocomplete-rails在谷歌地图中显示标记

时间:2015-07-15 20:38:57

标签: ruby-on-rails google-maps

我在地址字段中使用gmaps-autocomplete-rails gem,它在部分(_form)中输入地址时工作正常并显示地图,但我如何在视图中显示此标记?...我必须做其他事情或使用另一个gem来在视图中显示标记(show.html.erb)?...我需要在控制器中添加一些代码?

型号:

geocoded_by :address, :latitude  => :lat, :longitude => :lng
after_validation :geocode, :reverse_geocode, :if => :address_changed?

reverse_geocoded_by :lat, :lng do |obj,results|
 if geo = results.first
  obj.street = geo.address
  obj.city  = geo.city
  obj.state  = geo.state
  obj.country = geo.country
end 

部分_form(地址字段):

= f.input :address, input_html: { id: 'gmaps-input-address'}, placeholder: 'Start typing a place...', label: 'Location Missing'

....
#gmaps-canvas

的application.js:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require turbolinks
//= require gmaps-auto-complete
//= require_tree .

$(document).ready(function() {
  var completer;

  completer = new GmapsCompleter({
    mapElem: "#gmaps-canvas", 
    zoomLevel: 5, 
    mapType: google.maps.MapTypeId.ROADMAP,
    pos: [41.877, 12.480],
    inputField: '#gmaps-input-address',
    errorField: '#gmaps-error',
    debugOn: false
 });
});

控制器:

before_action :find_mark, only: [:show, :edit, :update]
....

def create
    @mark = Mark.create(mark_params)

    if @mark.save
        redirect_to @mark
    else
        render 'new'
    end
end

def update
    if @mark.update(mark_params)
        redirect_to @mark
    else
        render 'edit'
    end
end

private

def mark_params
    params.require(:mark).permit(:address, :lat, :lng, :street, :city, :state, :country)
end

def find_mark
    @mark = Mark.find(params[:id])
end

0 个答案:

没有答案