ropenlayer 0.0.1 → 0.3.0
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/History.txt +9 -0
- data/Manifest.txt +0 -20
- data/PostInstall.txt +1 -2
- data/README.rdoc +161 -23
- data/lib/generators/ropenlayer/install/INSTALL +16 -0
- data/lib/generators/ropenlayer/install/USAGE +7 -0
- data/lib/generators/ropenlayer/install/install_generator.rb +20 -0
- data/lib/generators/ropenlayer/install/templates/config/initializers/ropenlayer.rb +13 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/add_point_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/add_point_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/blank.gif +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/close.gif +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/default_marker.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/drag-rectangle-off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/drag-rectangle-on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/draw_line_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/draw_line_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/draw_point_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/draw_point_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/draw_polygon_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/draw_polygon_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/edit_map.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/edit_map_active.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/editing_tool_bar.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/layers_switch.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/layers_switch_active.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/move_feature_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/move_feature_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/navigation_history.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/none_button.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/overview_replacement.gif +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/pan-panel-NOALPHA.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/pan-panel.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/pan-panel_active.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/pan_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/pan_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/panning-hand-off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/panning-hand-on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/remove_point_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/remove_point_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/ruler.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/save_features_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/save_features_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/view_next_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/view_next_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/view_previous_off.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/view_previous_on.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/zoom-panel-NOALPHA.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/zoom-panel.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/images/ropenlayer/zoom-panel_active.png +0 -0
- data/lib/generators/ropenlayer/install/templates/public/stylesheets/ropenlayer.css +430 -0
- data/lib/generators/ropenlayer/migration/USAGE +10 -0
- data/lib/generators/ropenlayer/migration/migration_generator.rb +22 -0
- data/lib/generators/ropenlayer/migration/templates/migration.rb +31 -0
- data/lib/ropenlayer/acts_as/mapper.rb +147 -0
- data/lib/ropenlayer/acts_as/nodeable.rb +109 -0
- data/lib/ropenlayer/acts_as.rb +138 -0
- data/lib/ropenlayer/category.rb +14 -0
- data/lib/ropenlayer/form_builder.rb +69 -0
- data/lib/ropenlayer/icon.rb +12 -0
- data/lib/ropenlayer/js_helper/jquery.rb +63 -0
- data/lib/ropenlayer/js_helper/prototype.rb +51 -0
- data/lib/ropenlayer/localization.rb +6 -0
- data/lib/ropenlayer/node.rb +38 -0
- data/lib/ropenlayer/openlayer/box_control/base.rb +57 -0
- data/lib/ropenlayer/openlayer/box_control/edit_map.rb +85 -0
- data/lib/ropenlayer/openlayer/box_control/layers_select.rb +17 -0
- data/lib/ropenlayer/openlayer/control.rb +42 -0
- data/lib/ropenlayer/openlayer/feature.rb +119 -0
- data/lib/ropenlayer/openlayer/js.rb +63 -0
- data/lib/ropenlayer/openlayer/layer/base.rb +88 -0
- data/lib/ropenlayer/openlayer/layer/elements_marker.rb +20 -0
- data/lib/ropenlayer/openlayer/layer/elements_vector.rb +35 -0
- data/lib/ropenlayer/openlayer/map.rb +192 -0
- data/lib/ropenlayer.rb +59 -14
- data/ropenlayer.gemspec +11 -8
- metadata +94 -17
- data/lib/ropenlayer/box_control/base.rb +0 -47
- data/lib/ropenlayer/box_control/edit_map.rb +0 -79
- data/lib/ropenlayer/box_control/layers_select.rb +0 -16
- data/lib/ropenlayer/control.rb +0 -40
- data/lib/ropenlayer/js.rb +0 -62
- data/lib/ropenlayer/layer/base.rb +0 -87
- data/lib/ropenlayer/layer/elements_marker.rb +0 -18
- data/lib/ropenlayer/layer/elements_vector.rb +0 -33
- data/lib/ropenlayer/map.rb +0 -176
data/lib/ropenlayer/map.rb
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
module Ropenlayer
|
|
2
|
-
class Map
|
|
3
|
-
|
|
4
|
-
attr_reader :js_id
|
|
5
|
-
attr_reader :div_id
|
|
6
|
-
attr_reader :js_propierties
|
|
7
|
-
attr_reader :options
|
|
8
|
-
|
|
9
|
-
attr_reader :layer_names
|
|
10
|
-
attr_reader :layers
|
|
11
|
-
|
|
12
|
-
attr_accessor :layers_select
|
|
13
|
-
|
|
14
|
-
attr_accessor :control_names
|
|
15
|
-
attr_accessor :controls
|
|
16
|
-
|
|
17
|
-
attr_accessor :markers_layer
|
|
18
|
-
attr_accessor :vectors_layer
|
|
19
|
-
attr_accessor :js_notification_area
|
|
20
|
-
|
|
21
|
-
# used to scope js variables created with the map. Js name will be created with this prefix + plus dom_id argument
|
|
22
|
-
MAP_JS_PREFIX = 'olObject'
|
|
23
|
-
|
|
24
|
-
def self.print(map_object, options = {})
|
|
25
|
-
new(map_object, options).to_js
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# == Initialize
|
|
29
|
-
#
|
|
30
|
-
# Create a map object with parsed attributes. Ropenlayer manage two ids for each map.
|
|
31
|
-
# - js_div, use to scope all the variables names to draw js output.
|
|
32
|
-
# - div_id, the dom_id passed as argument to construtor. For example
|
|
33
|
-
#
|
|
34
|
-
# For example
|
|
35
|
-
#
|
|
36
|
-
# m = Ropenlayer::Map.new('group_map')
|
|
37
|
-
# => <Ropenlayer::Map:0xf7344fe8>
|
|
38
|
-
# m.js_id
|
|
39
|
-
# => "olObject_group_map"
|
|
40
|
-
# n.div_id
|
|
41
|
-
# => "group_map"
|
|
42
|
-
#
|
|
43
|
-
# To draw map, just call to_js method. For example, in a rails 3.x application
|
|
44
|
-
#
|
|
45
|
-
# <%= raw javascript_tag(Ropenlayer::Map.new('group_map').to_js) %>
|
|
46
|
-
#
|
|
47
|
-
# Ropenlayer::Map use this options
|
|
48
|
-
#
|
|
49
|
-
# - layers: Select which layers are used in map. For a list of available layers see <tt>Ropenlayer::Laye::Baser</tt>
|
|
50
|
-
# - default_layer: Default layer at render. Default layers.first
|
|
51
|
-
# - layer_select: If true, map will render a control for change between differents layers
|
|
52
|
-
# - controls: Select which controls are used in map. For a list of available controlse see <tt>Ropenlayer::Control</tt>
|
|
53
|
-
# - latitude: Specify default latitude for map. Map will be pointed at this latitude at render.
|
|
54
|
-
# - longitude: Specify default longitude for map. Map will be pointed at this longitude at render.
|
|
55
|
-
# - zoom: Specify default zoom for map. Map will be render with this zoom enable.
|
|
56
|
-
# - edit_map: If true, map will display a custom control what enable edit capabilities with map
|
|
57
|
-
#
|
|
58
|
-
# Map object accepts other options scoped in :map_js_options key.
|
|
59
|
-
#
|
|
60
|
-
# - theme: CSS theme used to display. By default none is used
|
|
61
|
-
# - projection: Specify projection. Argument must be a valid OpenLayers.Projection JS object. See more on
|
|
62
|
-
# - units: Units for measure. By default: "'m'"
|
|
63
|
-
# - maxResolution: maxResolution of the map, by default word length: "156543.0339"
|
|
64
|
-
# - meaxExtentd: Bound for projection. Must be valid OpenLayers.Bounds object. By default world length bound. See for more info.
|
|
65
|
-
#
|
|
66
|
-
# After display objects, you can, ofc, call methods from openlayers api to instace js variable. For example
|
|
67
|
-
#
|
|
68
|
-
# <% map = Ropenlayer::Map.new('group_map') %>
|
|
69
|
-
# <%= raw javascript_tag map.to_js %>
|
|
70
|
-
# <%= raw javascript_tag "#{ map.js_id }.setCenter(new OpenLayers.LonLat(0,0), 10);" %>
|
|
71
|
-
#
|
|
72
|
-
# Will call the setCenter OpenLayer.Map JS method to map.js_id js instace object
|
|
73
|
-
#
|
|
74
|
-
def initialize(dom_id, options = {})
|
|
75
|
-
@js_id = "#{ MAP_JS_PREFIX }_#{ dom_id }"
|
|
76
|
-
@div_id = "#{ dom_id }"
|
|
77
|
-
@options = options
|
|
78
|
-
|
|
79
|
-
@js_propierties = map_js_propierties(options[:map_js_options])
|
|
80
|
-
|
|
81
|
-
@layer_names = @options[:layers] || self.class.default_layers
|
|
82
|
-
@layers = Ropenlayer::Layer::Base.build_collection(self)
|
|
83
|
-
|
|
84
|
-
@control_names = @options[:controls] || self.class.default_controls
|
|
85
|
-
@controls = Ropenlayer::Control.build_collection(self)
|
|
86
|
-
|
|
87
|
-
@latitude = @options[:latitude] || self.class.default_latitude
|
|
88
|
-
@longitude = @options[:longitude] || self.class.default_longitude
|
|
89
|
-
@zoom = @options[:zoom] || self.class.default_zoom
|
|
90
|
-
|
|
91
|
-
@layers_select = @options[:layer_select].nil? or @options[:layer_select]
|
|
92
|
-
@edit_map = @options[:edit_map]
|
|
93
|
-
|
|
94
|
-
@markers_layer = Ropenlayer::Layer::ElementsMarker.new(self)
|
|
95
|
-
@vectors_layer = Ropenlayer::Layer::ElementsVector.new(self)
|
|
96
|
-
|
|
97
|
-
@js_notification_area = "#{ @js_id }_notification_area"
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def map_js_propierties(map_js_options = {})
|
|
101
|
-
map_js_options ||= {}
|
|
102
|
-
propierties = {}
|
|
103
|
-
|
|
104
|
-
propierties[:div] = "'#{ div_id }'"
|
|
105
|
-
propierties[:controls] = "[]"
|
|
106
|
-
|
|
107
|
-
propierties[:theme] = map_js_options[:theme] if map_js_options[:theme]
|
|
108
|
-
propierties[:projection] = map_js_options[:projection] || "#{ Ropenlayer::Js.new_method("OpenLayers.Projection", :args => ["'EPSG:900913'"]) }"
|
|
109
|
-
propierties[:units] = map_js_options[:units] || "'m'"
|
|
110
|
-
propierties[:maxResolution] = map_js_options[:units] || "156543.0339"
|
|
111
|
-
propierties[:maxExtent] = map_js_options[:maxExtent] || "#{ Ropenlayer::Js.new_method("OpenLayers.Bounds", :args => ["-20037508", "-20037508", "20037508", "20037508.34"]) }"
|
|
112
|
-
propierties
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
def set_center
|
|
117
|
-
%(// Setting center
|
|
118
|
-
#{ Ropenlayer::Js.new("#{ @js_id }.setCenter(#{ Ropenlayer::Js.new_method("OpenLayers.LonLat", :args => [ @longitude, @latitude ]) }, #{ @zoom })").to_js } )
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def add_notification_area
|
|
122
|
-
%(// Notification area
|
|
123
|
-
#{ Ropenlayer::Js.new_var(@js_notification_area,
|
|
124
|
-
Ropenlayer::Js.new_method('Element', :args => ["'div'"],
|
|
125
|
-
:propierties => { :class => "'olMapNotificationArea'",
|
|
126
|
-
:style => "'display: none;'",
|
|
127
|
-
:id => "'#{ @js_notification_area }'" }).to_s).to_js }
|
|
128
|
-
#{ Ropenlayer::Js.new("#{ @js_id }.div.insert(#{ @js_notification_area });").to_js }
|
|
129
|
-
)
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
def self.default_layers
|
|
135
|
-
[ :google_hybrid, :google_streets, :wms, :google_satellite, :google_physical, :osm ]
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
def self.default_latitude
|
|
139
|
-
4580313.35287
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
def self.default_longitude
|
|
143
|
-
263274.20626803
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
def self.default_zoom
|
|
147
|
-
4
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
def self.default_controls
|
|
151
|
-
[ :scale_line, :mouse_position, :pan_panel, :navigation, :zoom_panel ]
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
# Map to JS OpenLayer construtor
|
|
155
|
-
def to_js
|
|
156
|
-
%(// Ropenlayer::Map.to_s OpenLayers Cartographic JS project licensed under BSD~style license. More information can be found at http://openlayers.org/
|
|
157
|
-
#{ Ropenlayer::Js.new_var(@js_id, Ropenlayer::Js.new_method("OpenLayers.Map", :propierties => @js_propierties)).to_js }
|
|
158
|
-
|
|
159
|
-
#{ add_notification_area }
|
|
160
|
-
|
|
161
|
-
#{ @layers.map(&:to_js) }
|
|
162
|
-
#{ @controls.map(&:to_js) }
|
|
163
|
-
|
|
164
|
-
#{ set_center }
|
|
165
|
-
|
|
166
|
-
#{ Ropenlayer::BoxControl::LayersSelect.new(self).to_js if @layers_select }
|
|
167
|
-
#{ Ropenlayer::BoxControl::EditMap.new(self).to_js if @edit_map }
|
|
168
|
-
|
|
169
|
-
#{ @vectors_layer.to_js }
|
|
170
|
-
#{ @markers_layer.to_js }
|
|
171
|
-
)
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
|