map_layers 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.autotest +7 -0
- data/.gitignore +2 -0
- data/.rspec +2 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +104 -0
- data/MIT-LICENSE +20 -0
- data/README +160 -0
- data/Rakefile +2 -0
- data/autotest/discover.rb +1 -0
- data/init.rb +8 -0
- data/install.rb +13 -0
- data/lib/map_layers.rb +358 -0
- data/lib/map_layers/#geonames.rb# +66 -0
- data/lib/map_layers/geonames.rb +66 -0
- data/lib/map_layers/js_wrapper.rb +178 -0
- data/lib/map_layers/map.rb +89 -0
- data/lib/map_layers/open_layers.rb +11 -0
- data/lib/map_layers/version.rb +3 -0
- data/lib/map_layers/view_helpers.rb +48 -0
- data/map_layers.gemspec +33 -0
- data/rails/init.rb +2 -0
- data/spec/lib/map_layers/js_wrapper_spec.rb +140 -0
- data/spec/lib/map_layers/map_spec.rb +13 -0
- data/spec/lib/map_layers/view_helpers_spec.rb +13 -0
- data/spec/lib/map_layers_spec.rb +63 -0
- data/spec/rcov.opts +2 -0
- data/spec/spec_helper.rb +98 -0
- data/tasks/map_layers_tasks.rake +21 -0
- data/uninstall.rb +1 -0
- metadata +188 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
rere# GeoNames REST services
|
2
|
+
#
|
3
|
+
# http://www.geonames.org/export/web-services.html
|
4
|
+
#
|
5
|
+
module Geonames
|
6
|
+
|
7
|
+
module JsonFormat # :nodoc:
|
8
|
+
extend self
|
9
|
+
|
10
|
+
def extension
|
11
|
+
"json"
|
12
|
+
end
|
13
|
+
|
14
|
+
def mime_type
|
15
|
+
"application/json"
|
16
|
+
end
|
17
|
+
|
18
|
+
def encode(hash)
|
19
|
+
hash.to_json
|
20
|
+
end
|
21
|
+
|
22
|
+
def decode(json)
|
23
|
+
h = ActiveSupport::JSON.decode(json)
|
24
|
+
h.values.flatten # Return type must be an array of hashes
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# GeoNames REST services base class
|
29
|
+
class GeonamesResource < ActiveResource::Base
|
30
|
+
self.site = "http://ws.geonames.org/"
|
31
|
+
self.format = JsonFormat
|
32
|
+
end
|
33
|
+
|
34
|
+
# GeoNames Postalode REST services
|
35
|
+
class Postalcode < GeonamesResource
|
36
|
+
# Postal code search
|
37
|
+
#
|
38
|
+
# http://www.geonames.org/export/web-services.html#postalCodeSearch
|
39
|
+
#
|
40
|
+
def self.search(placename, options = {:maxRows => 50})
|
41
|
+
self.find(:all, :from => "/postalCodeSearchJSON", :params => { :placename => placename }.merge(options))
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# GeoNames Weather REST services
|
46
|
+
class Weather < GeonamesResource
|
47
|
+
# Weather stations with the most recent weather observation
|
48
|
+
#
|
49
|
+
# Example: Geonames::Weather.weather(:north => 44.1, :south => -9.9, :east => -22.4, :west => 55.2)
|
50
|
+
#
|
51
|
+
# http://www.geonames.org/export/JSON-webservices.html#weatherJSON
|
52
|
+
#
|
53
|
+
def self.weather(options)
|
54
|
+
self.find(:all, :from => "/weatherJSON", :params => options)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Weather station and the most recent weather observation for the ICAO code
|
58
|
+
#
|
59
|
+
# http://www.geonames.org/export/JSON-webservices.html#weatherIcaoJSON
|
60
|
+
#
|
61
|
+
def self.weatherIcao(icao, options = {})
|
62
|
+
self.find(:all, :from => "/weatherIcaoJSON", :params => { :ICAO => icao }.merge(options))
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# GeoNames REST services
|
2
|
+
#
|
3
|
+
# http://www.geonames.org/export/web-services.html
|
4
|
+
#
|
5
|
+
module Geonames
|
6
|
+
|
7
|
+
module JsonFormat # :nodoc:
|
8
|
+
extend self
|
9
|
+
|
10
|
+
def extension
|
11
|
+
"json"
|
12
|
+
end
|
13
|
+
|
14
|
+
def mime_type
|
15
|
+
"application/json"
|
16
|
+
end
|
17
|
+
|
18
|
+
def encode(hash)
|
19
|
+
hash.to_json
|
20
|
+
end
|
21
|
+
|
22
|
+
def decode(json)
|
23
|
+
h = ActiveSupport::JSON.decode(json)
|
24
|
+
h.values.flatten # Return type must be an array of hashes
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# GeoNames REST services base class
|
29
|
+
class GeonamesResource < ActiveResource::Base
|
30
|
+
self.site = "http://ws.geonames.org/"
|
31
|
+
self.format = JsonFormat
|
32
|
+
end
|
33
|
+
|
34
|
+
# GeoNames Postalode REST services
|
35
|
+
class Postalcode < GeonamesResource
|
36
|
+
# Postal code search
|
37
|
+
#
|
38
|
+
# http://www.geonames.org/export/web-services.html#postalCodeSearch
|
39
|
+
#
|
40
|
+
def self.search(placename, options = {:maxRows => 50})
|
41
|
+
self.find(:all, :from => "/postalCodeSearchJSON", :params => { :placename => placename }.merge(options))
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# GeoNames Weather REST services
|
46
|
+
class Weather < GeonamesResource
|
47
|
+
# Weather stations with the most recent weather observation
|
48
|
+
#
|
49
|
+
# Example: Geonames::Weather.weather(:north => 44.1, :south => -9.9, :east => -22.4, :west => 55.2)
|
50
|
+
#
|
51
|
+
# http://www.geonames.org/export/JSON-webservices.html#weatherJSON
|
52
|
+
#
|
53
|
+
def self.weather(options)
|
54
|
+
self.find(:all, :from => "/weatherJSON", :params => options)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Weather station and the most recent weather observation for the ICAO code
|
58
|
+
#
|
59
|
+
# http://www.geonames.org/export/JSON-webservices.html#weatherIcaoJSON
|
60
|
+
#
|
61
|
+
def self.weatherIcao(icao, options = {})
|
62
|
+
self.find(:all, :from => "/weatherIcaoJSON", :params => { :ICAO => icao }.merge(options))
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,178 @@
|
|
1
|
+
module MapLayers
|
2
|
+
|
3
|
+
#The module where all the Ruby-to-JavaScript conversion takes place.
|
4
|
+
#Based on Ym4r::GmPlugin::MappingObject from Guilhem Vellut
|
5
|
+
module JsWrapper
|
6
|
+
#The name of the variable in JavaScript space.
|
7
|
+
attr_reader :variable
|
8
|
+
|
9
|
+
#Creates javascript code for missing methods + takes care of listeners
|
10
|
+
def method_missing(name,*args)
|
11
|
+
str_name = name.to_s
|
12
|
+
args.collect! do |arg|
|
13
|
+
JsWrapper.javascriptify_variable(arg)
|
14
|
+
end
|
15
|
+
JsExpr.new("#{to_javascript}.#{JsWrapper.javascriptify_method(str_name)}(#{args.join(",")})")
|
16
|
+
end
|
17
|
+
|
18
|
+
# Creates javascript code for method calls
|
19
|
+
def javascriptify_method_call(name,*args)
|
20
|
+
args.collect! do |arg|
|
21
|
+
JsWrapper.javascriptify_variable(arg)
|
22
|
+
end
|
23
|
+
JsExpr.new("#{to_javascript}.#{JsWrapper.javascriptify_method(name.to_s)}(#{args.join(",")})")
|
24
|
+
end
|
25
|
+
|
26
|
+
#Creates javascript code for array or hash indexing
|
27
|
+
def [](index) #index could be an integer or string
|
28
|
+
return JsExpr.new("#{to_javascript}[#{JsWrapper.javascriptify_variable(index)}]")
|
29
|
+
end
|
30
|
+
|
31
|
+
#Transforms a Ruby object into a JavaScript string : JsWrapper, String, Array, Hash and general case (using to_s)
|
32
|
+
def self.javascriptify_variable(arg)
|
33
|
+
if arg.is_a?(JsWrapper)
|
34
|
+
arg.to_javascript
|
35
|
+
elsif arg.is_a?(String)
|
36
|
+
"\"#{JsWrapper.escape_javascript(arg)}\""
|
37
|
+
elsif arg.is_a?(Array)
|
38
|
+
"[" + arg.collect{ |a| JsWrapper.javascriptify_variable(a)}.join(",") + "]"
|
39
|
+
elsif arg.is_a?(Hash)
|
40
|
+
"{" + arg.to_a.collect do |v|
|
41
|
+
"#{JsWrapper.javascriptify_method(v[0].to_s)} : #{JsWrapper.javascriptify_variable(v[1])}"
|
42
|
+
end.join(",") + "}"
|
43
|
+
elsif arg.nil?
|
44
|
+
"undefined"
|
45
|
+
else
|
46
|
+
arg.to_s
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
#Escape string to be used in JavaScript. Lifted from rails.
|
51
|
+
def self.escape_javascript(javascript)
|
52
|
+
javascript.gsub(/\r\n|\n|\r/, "\\n").gsub("\"") { |m| "\\#{m}" }
|
53
|
+
end
|
54
|
+
|
55
|
+
#Transform a ruby-type method name (like add_overlay) to a JavaScript-style one (like addOverlay).
|
56
|
+
def self.javascriptify_method(method_name)
|
57
|
+
method_name.gsub(/_(\w)/){|s| $1.upcase}
|
58
|
+
end
|
59
|
+
|
60
|
+
#Declares a Mapping Object bound to a JavaScript variable of name +variable+.
|
61
|
+
def declare(variable)
|
62
|
+
@variable = variable
|
63
|
+
"var #{@variable} = #{create};"
|
64
|
+
end
|
65
|
+
|
66
|
+
#declare with a random variable name
|
67
|
+
def declare_random(init,size = 8)
|
68
|
+
s = init.clone
|
69
|
+
6.times { s << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
|
70
|
+
declare(s)
|
71
|
+
end
|
72
|
+
|
73
|
+
#Checks if the MappinObject has been declared
|
74
|
+
def declared?
|
75
|
+
!@variable.nil?
|
76
|
+
end
|
77
|
+
|
78
|
+
#Binds a Mapping object to a previously declared JavaScript variable of name +variable+.
|
79
|
+
def assign_to(variable)
|
80
|
+
@variable = variable
|
81
|
+
"#{@variable} = #{create};"
|
82
|
+
end
|
83
|
+
|
84
|
+
#Assign the +value+ to the +property+ of the JsWrapper
|
85
|
+
def set_property(property, value)
|
86
|
+
"#{to_javascript}.#{JsWrapper.javascriptify_method(property.to_s)} = #{JsWrapper.javascriptify_variable(value)}"
|
87
|
+
end
|
88
|
+
|
89
|
+
#Returns the code to get a +property+ from the JsWrapper
|
90
|
+
def get_property(property)
|
91
|
+
JsExpr.new("#{to_javascript}.#{JsWrapper.javascriptify_method(property.to_s)}")
|
92
|
+
end
|
93
|
+
|
94
|
+
#Returns a Javascript code representing the object
|
95
|
+
def to_javascript
|
96
|
+
unless @variable.nil?
|
97
|
+
@variable
|
98
|
+
else
|
99
|
+
create
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
#To cheat JavaScriptGenerator::GeneratorMethods::javascript_object_for
|
104
|
+
def to_json(options = {})
|
105
|
+
to_javascript
|
106
|
+
end
|
107
|
+
|
108
|
+
#Creates a Mapping Object in JavaScript.
|
109
|
+
#To be implemented by subclasses if needed
|
110
|
+
def create
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
#A valid JavaScript expression that has a value.
|
115
|
+
class JsExpr
|
116
|
+
include JsWrapper
|
117
|
+
|
118
|
+
def initialize(expr)
|
119
|
+
@variable = expr
|
120
|
+
end
|
121
|
+
#Returns the javascript expression contained in the object.
|
122
|
+
def create
|
123
|
+
@variable
|
124
|
+
end
|
125
|
+
def to_s
|
126
|
+
@variable
|
127
|
+
end
|
128
|
+
|
129
|
+
UNDEFINED = JsExpr.new("undefined")
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
#Used to bind a ruby variable to an already existing JavaScript one.
|
134
|
+
class JsVar < JsExpr
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
#Minimal Wrapper around a Javascript class
|
139
|
+
class JsClass
|
140
|
+
include JsWrapper
|
141
|
+
|
142
|
+
def self.const_missing(sym)
|
143
|
+
if self.const_defined?(sym)
|
144
|
+
k = self.const_get(sym)
|
145
|
+
else
|
146
|
+
k = self.const_set(sym, Class.new(JsClass))
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def initialize(*args)
|
151
|
+
@args = args
|
152
|
+
end
|
153
|
+
|
154
|
+
def create
|
155
|
+
jsclass = self.class.to_s.split(/::/)[1..-1]
|
156
|
+
jsclass.insert(0, 'OpenLayers') unless jsclass[0] == 'OpenLayers'
|
157
|
+
args = @args.collect{ |arg| JsWrapper.javascriptify_variable(arg) }
|
158
|
+
JsExpr.new("new #{jsclass.join('.')}(#{args.join(',')})")
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
class JsGenerator # :nodoc:
|
164
|
+
def initialize()
|
165
|
+
@lines = ''
|
166
|
+
end
|
167
|
+
def <<(javascript)
|
168
|
+
@lines << (javascript.is_a?(JsWrapper) ? javascript.to_javascript : javascript) << ";\n"
|
169
|
+
end
|
170
|
+
def assign(variable, value)
|
171
|
+
@lines << "#{variable} = #{JsWrapper::javascriptify_variable(value)};\n"
|
172
|
+
end
|
173
|
+
def to_s
|
174
|
+
@lines
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module MapLayers
|
2
|
+
|
3
|
+
GOOGLE = OpenLayers::Layer::Google.new("Google Street")
|
4
|
+
GOOGLE_SATELLITE = OpenLayers::Layer::Google.new("Google Satelite", {:type => :G_SATELLITE_MAP})
|
5
|
+
GOOGLE_HYBRID = OpenLayers::Layer::Google.new("Google Hybrid", {:type => :G_HYBRID_MAP})
|
6
|
+
GOOGLE_PHYSICAL = OpenLayers::Layer::Google.new("Google Physical", {:type => :G_PHYSICAL_MAP})
|
7
|
+
VE_ROAD = OpenLayers::Layer::VirtualEarth.new("Virtual Earth Raods", {:type => JsExpr.new('VEMapStyle.Road')})
|
8
|
+
VE_AERIAL = OpenLayers::Layer::VirtualEarth.new("Virtual Earth Aerial", {:type => JsExpr.new('VEMapStyle.Aerial')})
|
9
|
+
VE_HYBRID = OpenLayers::Layer::VirtualEarth.new("Virtual Earth Hybrid", {:type => JsExpr.new('VEMapStyle.Hybrid')})
|
10
|
+
YAHOO = OpenLayers::Layer::Yahoo.new("Yahoo Street")
|
11
|
+
YAHOO_SATELLITE = OpenLayers::Layer::Yahoo.new("Yahoo Satelite", {:type => :YAHOO_MAP_SAT})
|
12
|
+
YAHOO_HYBRID = OpenLayers::Layer::Yahoo.new("Yahoo Hybrid", {:type => :YAHOO_MAP_HYB})
|
13
|
+
MULTIMAP = OpenLayers::Layer::MultiMap.new("MultiMap")
|
14
|
+
OSM_MAPNIK = OpenLayers::Layer::OSM.new("OpenStreetMap")
|
15
|
+
OSM_TELASCIENCE = OpenLayers::Layer::WMS.new("OpenStreetMap",
|
16
|
+
[
|
17
|
+
"http://t1.hypercube.telascience.org/tiles?",
|
18
|
+
"http://t2.hypercube.telascience.org/tiles?",
|
19
|
+
"http://t3.hypercube.telascience.org/tiles?",
|
20
|
+
"http://t4.hypercube.telascience.org/tiles?"
|
21
|
+
],
|
22
|
+
{:layers => 'osm-4326', :format => 'image/png' } )
|
23
|
+
GEOPOLE_OSM = OpenLayers::Layer::TMS.new("Geopole Street Map",
|
24
|
+
"http://tms.geopole.org/",
|
25
|
+
{:layername => 'geopole_street', :type => 'png', :maxResolution => 0.703125,
|
26
|
+
:attribution => 'Map data <a href="http://creativecommons.org/licenses/by-sa/2.0/">CCBYSA</a> 2009 <a href="http://openstreetmap.org/">OpenStreetMap.org</a>'})
|
27
|
+
NASA_GLOBAL_MOSAIC = OpenLayers::Layer::WMS.new("NASA Global Mosaic",
|
28
|
+
[
|
29
|
+
"http://t1.hypercube.telascience.org/cgi-bin/landsat7",
|
30
|
+
"http://t2.hypercube.telascience.org/cgi-bin/landsat7",
|
31
|
+
"http://t3.hypercube.telascience.org/cgi-bin/landsat7",
|
32
|
+
"http://t4.hypercube.telascience.org/cgi-bin/landsat7"
|
33
|
+
],
|
34
|
+
{:layers => 'landsat7'} )
|
35
|
+
BLUE_MARBLE_NG = OpenLayers::Layer::WMS.new("Blue Marble NG",
|
36
|
+
"http://wms.telascience.org/cgi-bin/ngBM_wms",
|
37
|
+
{:layers => 'world_topo_bathy'} )
|
38
|
+
METACARTA_VMAP0 = OpenLayers::Layer::WMS.new("OpenLayers WMS",
|
39
|
+
"http://labs.metacarta.com/wms/vmap0",
|
40
|
+
{:layers => 'basic'} )
|
41
|
+
WORLDWIND = OpenLayers::Layer::WorldWind.new("World Wind LANDSAT",
|
42
|
+
"http://worldwind25.arc.nasa.gov/tile/tile.aspx", 2.25, 4, {:T => "105"}, {:tileSize => OpenLayers::Size.new(512,512)})
|
43
|
+
WORLDWIND_URBAN = OpenLayers::Layer::WorldWind.new("World Wind Urban",
|
44
|
+
"http://worldwind25.arc.nasa.gov/tile/tile.aspx", 0.8, 9, {:T => "104"}, {:tileSize => OpenLayers::Size.new(512,512)})
|
45
|
+
WORLDWIND_BATHY = OpenLayers::Layer::WorldWind.new("World Wind Bathymetry",
|
46
|
+
"http://worldwind25.arc.nasa.gov/tile/tile.aspx", 36, 4, {:T => "bmng.topo.bathy.200406"}, {:tileSize => OpenLayers::Size.new(512,512)})
|
47
|
+
|
48
|
+
|
49
|
+
#Map viewer main class
|
50
|
+
class Map
|
51
|
+
include JsWrapper
|
52
|
+
|
53
|
+
def initialize(map, options = {}, &block)
|
54
|
+
@container = map
|
55
|
+
@variable = map
|
56
|
+
@options = {:theme => false}.merge(options)
|
57
|
+
@js = JsGenerator.new
|
58
|
+
yield(self, @js) if block_given?
|
59
|
+
end
|
60
|
+
|
61
|
+
#Outputs in JavaScript the creation of a OpenLayers.Map object
|
62
|
+
def create
|
63
|
+
"new OpenLayers.Map('#{@container}', #{JsWrapper::javascriptify_variable(@options)})"
|
64
|
+
end
|
65
|
+
|
66
|
+
#Outputs the initialization code for the map
|
67
|
+
def to_html(options = {})
|
68
|
+
no_script_tag = options[:no_script_tag]
|
69
|
+
no_declare = options[:no_declare]
|
70
|
+
no_global = options[:no_global]
|
71
|
+
|
72
|
+
html = ""
|
73
|
+
html << "<script defer=\"defer\" type=\"text/javascript\">\n" if !no_script_tag
|
74
|
+
#put the functions in a separate javascript file to be included in the page
|
75
|
+
html << "var #{@variable};\n" if !no_declare and !no_global
|
76
|
+
|
77
|
+
if !no_declare and no_global
|
78
|
+
html << "#{declare(@variable)}\n"
|
79
|
+
else
|
80
|
+
html << "#{assign_to(@variable)}\n"
|
81
|
+
end
|
82
|
+
html << @js.to_s
|
83
|
+
html << "</script>\n" if !no_script_tag
|
84
|
+
|
85
|
+
html
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module MapLayers
|
2
|
+
# Provides methods to generate HTML tags and JavaScript code
|
3
|
+
module ViewHelpers
|
4
|
+
# Insert javascript include tags
|
5
|
+
#
|
6
|
+
# * options[:google] with GMAPS Key: Include Google Maps
|
7
|
+
# * options[:multimap] with MultiMap Key: Include MultiMap
|
8
|
+
# * options[:virtualearth]: Include VirtualEarth
|
9
|
+
# * options[:yahoo] with Yahoo appid: Include Yahoo! Maps
|
10
|
+
# * options[:proxy] with name of controller with proxy action. Defaults to current controller.
|
11
|
+
def map_layers_includes(options = {})
|
12
|
+
options.assert_valid_keys(:google, :multimap, :openstreetmap, :virtualearth, :yahoo, :proxy,:img_path)
|
13
|
+
html = ''
|
14
|
+
if options.has_key?(:google)
|
15
|
+
html << "<script type=\"text/javascript\" src=\"http://maps.google.com/maps?file=api&v=2&key=#{options[:google]}\"></script>"
|
16
|
+
end
|
17
|
+
if options.has_key?(:multimap)
|
18
|
+
html << "<script type=\"text/javascript\" src=\"http://clients.multimap.com/API/maps/1.1/#{options[:multimap]}\"></script>"
|
19
|
+
end
|
20
|
+
if options.has_key?(:virtualearth)
|
21
|
+
html << "<script type=\"text/javascript\" src=\"http://dev.virtualearth.net/mapcontrol/v3/mapcontrol.js\"></script>"
|
22
|
+
end
|
23
|
+
if options.has_key?(:yahoo)
|
24
|
+
html << "<script type=\"text/javascript\" src=\"http://api.maps.yahoo.com/ajaxymap?v=3.0&appid=#{options[:yahoo]}\"></script>"
|
25
|
+
end
|
26
|
+
img_path = '/images/OpenLayers/'
|
27
|
+
if options.has_key?(:img_path)
|
28
|
+
img_path = options[:img_path]
|
29
|
+
end
|
30
|
+
if RAILS_ENV == "development" && File.exist?(File.join(RAILS_ROOT, 'public/javascripts/lib/OpenLayers.js'))
|
31
|
+
html << '<script src="/javascripts/lib/Firebug/firebug.js"></script>'
|
32
|
+
html << '<script src="/javascripts/lib/OpenLayers.js"></script>'
|
33
|
+
else
|
34
|
+
html << javascript_include_tag('OpenLayers')
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
html << stylesheet_link_tag("map")
|
39
|
+
img_path=(Pathname(ActionController::Base.relative_url_root||"") +img_path).cleanpath.to_s
|
40
|
+
html << javascript_tag("OpenLayers.ImgPath='"+ img_path + "/';")
|
41
|
+
proxy = options.has_key?(:proxy) ? options[:proxy] : controller.controller_name
|
42
|
+
html << javascript_tag("OpenLayers.ProxyHost='/#{proxy}/proxy?url=';")
|
43
|
+
|
44
|
+
html
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|