diff options
| author | Marc Florisson | 2012-09-18 16:21:42 +0200 |
|---|---|---|
| committer | Marc Florisson | 2012-09-18 16:21:42 +0200 |
| commit | 7cdfab565d89ebcf88c4e04912bd55b430dafa80 (patch) | |
| tree | 61aba7b01fa0c0c8f4084de9d148f1fef473a5da | |
| parent | 295f7876004a9c7c048ce627f98af6755f8470e2 (diff) | |
| download | chouette-core-7cdfab565d89ebcf88c4e04912bd55b430dafa80.tar.bz2 | |
add IGN maps
| -rw-r--r-- | app/maps/application_map.rb | 22 | ||||
| -rw-r--r-- | app/maps/connection_link_map.rb | 22 | ||||
| -rw-r--r-- | app/maps/journey_pattern_map.rb | 29 | ||||
| -rw-r--r-- | app/maps/line_map.rb | 24 | ||||
| -rw-r--r-- | app/maps/network_map.rb | 20 | ||||
| -rw-r--r-- | app/maps/route_map.rb | 29 | ||||
| -rw-r--r-- | app/maps/stop_area_map.rb | 1 | ||||
| -rw-r--r-- | config/environments/development.rb | 1 | ||||
| -rw-r--r-- | config/locales/maps.yml | 8 |
9 files changed, 70 insertions, 86 deletions
diff --git a/app/maps/application_map.rb b/app/maps/application_map.rb index 6aae9c927..1fd2326c7 100644 --- a/app/maps/application_map.rb +++ b/app/maps/application_map.rb @@ -4,6 +4,7 @@ class ApplicationMap include MapLayers::ViewHelpers attr_accessor :helpers + cattr_accessor :ign_api_key def helpers @helper ||= Helpers.new @@ -40,7 +41,16 @@ class ApplicationMap end def map - @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) + @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| + page << map.add_layer(MapLayers::OSM_MAPNIK) + page << map.add_layer(geoportail_wmts) + 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 @@ -58,6 +68,16 @@ class ApplicationMap OpenLayers::Format::KML.new :extractStyles => true, :extractAttributes => true, :maxDepth => 2 end + def geoportail_wmts + OpenLayers::Layer::WMTS.new :name => I18n.t("maps.ign_map"), + :url => "http://gpp3-wxs.ign.fr/#{self.class.ign_api_key}/wmts", + :layer => "GEOGRAPHICALGRIDSYSTEMS.MAPS", + :matrixSet => "PM", + :style => "normal", + :numZoomLevels => 19, + :attribution => 'Map base: ©IGN <a href="http://www.geoportail.fr/" target="_blank"><img src="http://api.ign.fr/geoportail/api/js/2.0.0beta/theme/geoportal/img/logo_gp.gif"></a> <a href="http://www.geoportail.gouv.fr/depot/api/cgu/licAPI_CGUF.pdf" alt="TOS" title="TOS" target="_blank">Terms of Service</a>' + end + def strategy_fixed OpenLayers::Strategy::Fixed.new :preload => true end diff --git a/app/maps/connection_link_map.rb b/app/maps/connection_link_map.rb index d26bba33b..62f6a23a9 100644 --- a/app/maps/connection_link_map.rb +++ b/app/maps/connection_link_map.rb @@ -8,22 +8,12 @@ class ConnectionLinkMap < ApplicationMap @connection_link_style = connection_link_style end - def map - @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| - page << map.add_layer(MapLayers::OSM_MAPNIK) - page << map.add_layer(google_physical) - page << map.add_layer(google_streets) - page << map.add_layer(google_hybrid) - page << map.add_layer(google_satellite) - - page.assign "stop_areas_layer", kml_layer([connection_link.referential, connection_link, :stop_areas], :styleMap => StyleMap::StopAreasStyleMap.new.style_map) - page << map.add_layer(:stop_areas_layer) - page << map.add_layer( kml_layer([connection_link.referential, connection_link], :styleMap => StyleMap::ConnectionLinkStyleMap.new.style_map)) - page << map.add_control( hover_control_display_name(:stop_areas_layer) ) - #page << map.add_layer(kml_layer(connection_link, :styleMap => StyleMap::ConnectionLinkStyleMap.new( :style => connection_link_style).style_map)) - #page << map.add_layer(kml_layer(polymorphic_path([referential, connection_link, :stop_areas], :format => :kml), :styleMap => StyleMap::StopAreasStyleMap.new.style_map)) - page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds - end + def customize_map(map, page) + page.assign "stop_areas_layer", kml_layer([connection_link.referential, connection_link, :stop_areas], :styleMap => StyleMap::StopAreasStyleMap.new.style_map) + page << map.add_layer(:stop_areas_layer) + page << map.add_layer( kml_layer([connection_link.referential, connection_link], :styleMap => StyleMap::ConnectionLinkStyleMap.new.style_map)) + page << map.add_control( hover_control_display_name(:stop_areas_layer) ) + page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds end def ready? diff --git a/app/maps/journey_pattern_map.rb b/app/maps/journey_pattern_map.rb index d690b3212..b4117645d 100644 --- a/app/maps/journey_pattern_map.rb +++ b/app/maps/journey_pattern_map.rb @@ -7,25 +7,16 @@ class JourneyPatternMap < ApplicationMap @style = style end - def map - @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| - page << map.add_layer(MapLayers::OSM_MAPNIK) - page << map.add_layer(google_physical) - page << map.add_layer(google_streets) - page << map.add_layer(google_hybrid) - page << map.add_layer(google_satellite) - - #page << map.add_layer(kml_layer(line, :styleMap => StyleMap::LineStyleMap.new( :style => line_style).style_map)) - layer = kml_layer([journey_pattern.referential, journey_pattern.route.line, journey_pattern.route, journey_pattern], :styleMap => StyleMap::JourneyPatternStyleMap.new.style_map) - page.assign "journeyPatternLayer", layer - - selectFeature = OpenLayers::Control::SelectFeature.new( :journeyPatternLayer) - page.assign "selectFeature", selectFeature - - page << map.add_layer( :journeyPatternLayer) - page << map.add_control( hover_control_display_name(:journeyPatternLayer) ) - page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds - end + def customize_map(map, page) + layer = kml_layer([journey_pattern.referential, journey_pattern.route.line, journey_pattern.route, journey_pattern], :styleMap => StyleMap::JourneyPatternStyleMap.new.style_map) + page.assign "journeyPatternLayer", layer + + selectFeature = OpenLayers::Control::SelectFeature.new( :journeyPatternLayer) + page.assign "selectFeature", selectFeature + + page << map.add_layer( :journeyPatternLayer) + page << map.add_control( hover_control_display_name(:journeyPatternLayer) ) + page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds end def ready? diff --git a/app/maps/line_map.rb b/app/maps/line_map.rb index ec1f6618f..9b398cae2 100644 --- a/app/maps/line_map.rb +++ b/app/maps/line_map.rb @@ -8,22 +8,14 @@ class LineMap < ApplicationMap @line_style = line_style end - def map - @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| - page << map.add_layer(MapLayers::OSM_MAPNIK) - page << map.add_layer(google_physical) - page << map.add_layer(google_streets) - page << map.add_layer(google_hybrid) - page << map.add_layer(google_satellite) - - #page << map.add_layer(kml_layer(line, :styleMap => StyleMap::LineStyleMap.new( :style => line_style).style_map)) - page.assign "stop_areas_layer", kml_layer([line.referential, line], :styleMap => StyleMap::StopAreasStyleMap.new.style_map) - - page << map.add_layer(:stop_areas_layer) - page << map.add_control( hover_control_display_name(:stop_areas_layer) ) - - page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds - end + def customize_map(map, page) + page << map.add_layer(kml_layer(line, :styleMap => StyleMap::LineStyleMap.new( :style => line_style).style_map)) + page.assign "stop_areas_layer", kml_layer([line.referential, line], :styleMap => StyleMap::StopAreasStyleMap.new.style_map) + + + page << map.add_layer(:stop_areas_layer) + page << map.add_control( hover_control_display_name(:stop_areas_layer) ) + page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds end def bounds diff --git a/app/maps/network_map.rb b/app/maps/network_map.rb index f87f088ad..f3693b985 100644 --- a/app/maps/network_map.rb +++ b/app/maps/network_map.rb @@ -7,22 +7,12 @@ class NetworkMap < ApplicationMap @network_style = network_style end - def map - @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| - page << map.add_layer(MapLayers::OSM_MAPNIK) - page << map.add_layer(google_physical) - page << map.add_layer(google_streets) - page << map.add_layer(google_hybrid) - page << map.add_layer(google_satellite) - - page.assign "stop_areas_layer", kml_layer([network.referential, network], :styleMap => StyleMap::StopAreasStyleMap.new.style_map) + def customize_map(map, page) + page.assign "stop_areas_layer", kml_layer([network.referential, network], :styleMap => StyleMap::StopAreasStyleMap.new.style_map) - page << map.add_layer(:stop_areas_layer) - page << map.add_control( hover_control_display_name(:stop_areas_layer) ) - - #page << map.add_layer(kml_layer(network, :styleMap => StyleMap::NetworkStyleMap.new( :style => network_style).style_map)) - page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds - end + page << map.add_layer(:stop_areas_layer) + page << map.add_control( hover_control_display_name(:stop_areas_layer) ) + page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds end def bounds diff --git a/app/maps/route_map.rb b/app/maps/route_map.rb index 70e31e2e2..a1f6bcf1d 100644 --- a/app/maps/route_map.rb +++ b/app/maps/route_map.rb @@ -7,25 +7,16 @@ class RouteMap < ApplicationMap @style = style end - def map - @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| - page << map.add_layer(MapLayers::OSM_MAPNIK) - page << map.add_layer(google_physical) - page << map.add_layer(google_streets) - page << map.add_layer(google_hybrid) - page << map.add_layer(google_satellite) - - #page << map.add_layer(kml_layer(line, :styleMap => StyleMap::LineStyleMap.new( :style => line_style).style_map)) - layer = kml_layer([route.referential, route.line, route], :styleMap => StyleMap::RouteStyleMap.new.style_map) - page.assign "routeLayer", layer - selectFeature = OpenLayers::Control::SelectFeature.new( :routeLayer) - - page << map.add_layer( :routeLayer) - page << map.add_control( hover_control_display_name(:routeLayer) ) - page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds - - page.assign "selectFeature", selectFeature - end + def customize_map(map, page) + layer = kml_layer([route.referential, route.line, route], :styleMap => StyleMap::RouteStyleMap.new.style_map) + page.assign "routeLayer", layer + selectFeature = OpenLayers::Control::SelectFeature.new( :routeLayer) + + page << map.add_layer( :routeLayer) + page << map.add_control( hover_control_display_name(:routeLayer) ) + + page.assign "selectFeature", selectFeature + page << map.zoom_to_extent(bounds.to_google.to_openlayers) if bounds end def ready? diff --git a/app/maps/stop_area_map.rb b/app/maps/stop_area_map.rb index 65c8b72fd..2134a78c0 100644 --- a/app/maps/stop_area_map.rb +++ b/app/maps/stop_area_map.rb @@ -12,6 +12,7 @@ class StopAreaMap < ApplicationMap def map @map ||= MapLayers::Map.new(id, :projection => projection("EPSG:900913"), :controls => controls) do |map, page| page << map.add_layer(MapLayers::OSM_MAPNIK) + page << map.add_layer(geoportail_wmts) page << map.add_layer(google_physical) page << map.add_layer(google_streets) page << map.add_layer(google_hybrid) diff --git a/config/environments/development.rb b/config/environments/development.rb index 4cc904bab..05fd92389 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -41,6 +41,7 @@ ChouetteIhm::Application.configure do config.to_prepare do Devise::Mailer.layout "mailer" + ApplicationMap.ign_api_key = "41k8m3tx1515p9by2mrvncva" chouette_command_script = "tmp/chouette-command/chouette" if File.exists? chouette_command_script Chouette::Command.command = "tmp/chouette-command/chouette" diff --git a/config/locales/maps.yml b/config/locales/maps.yml new file mode 100644 index 000000000..339ad206d --- /dev/null +++ b/config/locales/maps.yml @@ -0,0 +1,8 @@ +en: + maps: + ign_map: "IGN maps" +fr: + maps: + ign_map: "Cartes IGN" + + |
