class ApplicationMap include MapLayers include MapLayers::ViewHelpers attr_accessor :helpers cattr_accessor :ign_api_key def helpers @helpers ||= Helpers.new end # For example, in a controller : # # @map = MyMap.new(...).with_helpers(self) # def with_helpers(helpers) self.helpers = helpers self end def geoportail_key if ( Rails.application.secrets.respond_to? :geoportail_api_key) return Rails.application.secrets.geoportail_api_key end return nil end class Helpers include ActionDispatch::Routing::UrlFor include Rails.application.routes.url_helpers end def projection(name) OpenLayers::Projection.new(name) end def controls [ OpenLayers::Control::LayerSwitcher.new(:ascending => true), OpenLayers::Control::ScaleLine.new, OpenLayers::Control::Navigation.new, OpenLayers::Control::PanZoomBar.new, OpenLayers::Control::Attribution.new] end def id "map" end def map @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| if self.geoportail_key page << map.add_layer(geoportail_ortho_wmts) page << map.add_layer(geoportail_scans_wmts) page << map.add_layer(geoportail_cadastre_wmts) end page << map.add_layer(MapLayers::OSM_MAPNIK) #page << map.add_layers([geoportail_scans, geoportail_ortho]) page << map.add_layer(google_physical) page << map.add_layer(google_streets) page << map.add_layer(google_hybrid) page << map.add_layer(google_satellite) customize_map(map,page) if respond_to?( :customize_map) end end def name self.class.name.underscore.gsub(/_map$/, '') end alias_method :default_class, :name def to_html(options = {}) if not respond_to?(:ready?) or ready? expand = options[:no_fullscreen] ? '' : "" "
 Terms of Service'}
  end
  def strategy_fixed
    OpenLayers::Strategy::Fixed.new :preload => true
  end
  def google_physical
    OpenLayers::Layer::Google.new(I18n.t("maps.google_physical"),
                      :type => :"google.maps.MapTypeId.TERRAIN")
  end
  def google_streets
    OpenLayers::Layer::Google.new I18n.t("maps.google_streets"), :numZoomLevels => 20
  end
  def google_hybrid
    OpenLayers::Layer::Google.new I18n.t("maps.google_hybrid"), :type => :"google.maps.MapTypeId.HYBRID", :numZoomLevels => 20
  end
  def google_satellite
    OpenLayers::Layer::Google.new I18n.t("maps.google_satellite"), :type => :"google.maps.MapTypeId.SATELLITE", :numZoomLevels => 22
  end
  def hover_control_display_name(layer)
    OpenLayers::Control::SelectFeature.new( layer, {
                                              :autoActivate => true,
                                              :hover => true,
                                              :renderIntent => "temporary",
                                              :eventListeners => {
                                                :featurehighlighted => JsExpr.new("function(e) {
          var feature = e.feature ;
          if (feature.attributes.inactive != undefined)
            return;
          var stop_area_type_label = '';
          if (feature.attributes.stop_area_type_label != undefined)
            stop_area_type_label = feature.attributes.stop_area_type_label;
          var popup = new OpenLayers.Popup.Anchored('chicken',
                                                 new OpenLayers.LonLat(feature.geometry.x, feature.geometry.y),
                                                 null,
                                                 \"
 Terms of Service'}
  end
  def strategy_fixed
    OpenLayers::Strategy::Fixed.new :preload => true
  end
  def google_physical
    OpenLayers::Layer::Google.new(I18n.t("maps.google_physical"),
                      :type => :"google.maps.MapTypeId.TERRAIN")
  end
  def google_streets
    OpenLayers::Layer::Google.new I18n.t("maps.google_streets"), :numZoomLevels => 20
  end
  def google_hybrid
    OpenLayers::Layer::Google.new I18n.t("maps.google_hybrid"), :type => :"google.maps.MapTypeId.HYBRID", :numZoomLevels => 20
  end
  def google_satellite
    OpenLayers::Layer::Google.new I18n.t("maps.google_satellite"), :type => :"google.maps.MapTypeId.SATELLITE", :numZoomLevels => 22
  end
  def hover_control_display_name(layer)
    OpenLayers::Control::SelectFeature.new( layer, {
                                              :autoActivate => true,
                                              :hover => true,
                                              :renderIntent => "temporary",
                                              :eventListeners => {
                                                :featurehighlighted => JsExpr.new("function(e) {
          var feature = e.feature ;
          if (feature.attributes.inactive != undefined)
            return;
          var stop_area_type_label = '';
          if (feature.attributes.stop_area_type_label != undefined)
            stop_area_type_label = feature.attributes.stop_area_type_label;
          var popup = new OpenLayers.Popup.Anchored('chicken',
                                                 new OpenLayers.LonLat(feature.geometry.x, feature.geometry.y),
                                                 null,
                                                 \"\" + feature.attributes.name +\"
\" + stop_area_type_label + \"