Class: BsLocationPickerInput
- Inherits:
- 
      Formtastic::Inputs::StringInput
      
        - Object
- Formtastic::Inputs::StringInput
- BsLocationPickerInput
 
- Includes:
- ActionView::Context, ActionView::Helpers::JavaScriptHelper, ActionView::Helpers::TagHelper, FontAwesome::Rails::IconHelper, FormtasticBootstrap::Inputs::Base, FormtasticBootstrap::Inputs::Base::Collections
- Defined in:
- app/input/bs_location_picker_input.rb
Defined Under Namespace
Classes: ZoomInvalid
Instance Method Summary collapse
- 
  
    
      #to_html  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Stampa Una Mappa di Google Maps, che rende possibile la selezione di un punto sulla mappa e di salvarlo nei due campi Lat Lng della form. 
Instance Method Details
#to_html ⇒ Object
Stampa Una Mappa di Google Maps, che rende possibile la selezione di un punto sulla mappa e di salvarlo nei due campi Lat Lng della form.
Necessario aver aggiunto anche l’asset kono_utils/utilities per avere il javascript necessario alla generazione della mappa
Nell’inizializzatore di kono_utils installato con il generatore impostare la chiave di google: google_api_key
La mappa ha un contenitore
Options:
-  default_center         -> Array con [lat,lng] nel caso non siano impostati i valori iniziali
-  height                 -> [300px] Altezza da mettere nello stile della canvas di google maps
-  fields                 -> Array[:lat,:lng]  campi che identificano la Latitudine e Longitudine
                             nel record
-  zoom_level             -> [5] Integer livello zoom della mappa, se passo una Proc viene elaborata
                             passando il record, deve tornare un Integer
| 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | # File 'app/input/bs_location_picker_input.rb', line 36 def to_html default_center = [:default_center] || [42.90887521920127, 12.303765624999983] center = default_center height = [:height] || '300px' fields = [:fields] || [:lat, :lng] zoom_level = [:zoom_level] || 5 if zoom_level.is_a?(Proc) zoom_level = zoom_level.call(object) end raise ZoomInvalid unless zoom_level.is_a?(Integer) bootstrap_wrapping do content_tag(:div) do id = SecureRandom.hex callback_name = "initMap#{id}" buff = ActiveSupport::SafeBuffer.new buff<< content_tag(:div, :class => "container_google_maps clearfix", :style => 'width:100%;') do content_tag(:div, nil, id: id, style: "height:#{height}") end id_hidden_lat = SecureRandom.hex buff<< builder.hidden_field(fields[0], .merge(:id => id_hidden_lat)) id_hidden_lng = SecureRandom.hex buff<< builder.hidden_field(fields[1], .merge(:id => id_hidden_lng)) unless object.send(fields[0]).blank? or object.send(fields[1]).blank? center = [object.send(fields[0]), object.send(fields[1])] end buff<< content_tag(:script, :type => "text/javascript") do raw "function #{callback_name}(){ $('##{id}').kono_util_location_picker({ center:{lat:#{center[0]},lng:#{center[1]}}, zoom_level:#{zoom_level}, selector_field_lat:'##{id_hidden_lat}', selector_field_lng:'##{id_hidden_lng}' }); }" end buff<< content_tag(:script, nil, src: "https://maps.googleapis.com/maps/api/js?key=#{KonoUtils.configuration.google_api_key}&callback=#{callback_name}", :type => "text/javascript", async: '', defer: '') buff end end end |