socmap_adf 0.0.1
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/.gitignore +10 -0
- data/.rvmrc +81 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +17 -0
- data/MIT-LICENSE +20 -0
- data/README.md +3 -0
- data/Rakefile +36 -0
- data/lib/assets/.gitkeep +0 -0
- data/lib/assets/javascripts/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/init.js.coffee.erb +9 -0
- data/lib/assets/javascripts/socmap_adf/lib/adf_delegate.js.coffee +13 -0
- data/lib/assets/javascripts/socmap_adf/lib/adf_view.js.coffee +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/init.js.coffee +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/lib/elycharts.js +3769 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/lib/raphael.js +5815 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/templates/chart.jst.eco +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/chart.js.coffee +107 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/chart_icon.js.coffee +106 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/cluster.js.coffee +127 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/default_icon.js.coffee +170 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/main.js.coffee +10 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/marker_clusterer.js.coffee +358 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/init.js.coffee +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/existing_file.jst.eco +10 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/file.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/main.jst.eco +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/uploading.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/views/main.js.coffee +76 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/init.js.coffee +9 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/models/base.js.coffee +73 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/models/error.js.coffee +12 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/models/field_binder.js.coffee +104 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/models/validator.js.coffee +65 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/templates/error_field.jst.eco +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/templates/field_set.jst.eco +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/templates/field_set_button.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/templates/field_sets.jst.eco +2 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/views/base.js.coffee +9 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/views/field_set.js.coffee +88 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/views/field_set_with_button.js.coffee +38 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/views/field_sets.js.coffee +81 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/init.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/custom_marker.js.coffee +36 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/marker.js.coffee +72 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/marker_with_label.js +566 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/overlay.js.coffee +237 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/overlay_view.js.coffee +143 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/polygon.js.coffee +107 -0
- data/lib/assets/javascripts/socmap_adf/modules/image_uploader/init.js.coffee +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/image_uploader/templates/main.jst.eco +10 -0
- data/lib/assets/javascripts/socmap_adf/modules/image_uploader/views/main.js.coffee +69 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/init.js.coffee +9 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/models/custom_map.js.coffee +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/models/map.js.coffee +63 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/templates/main.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/templates/moving_pin.jst.eco +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/templates/tooltip.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/views/google_marker_clusterer.js.coffee +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/views/main.js.coffee +79 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/views/moving_pin.js.coffee +47 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/views/tooltip.js.coffee +46 -0
- data/lib/assets/javascripts/socmap_adf/modules/marker/init.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/marker/views/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/marker/views/main.js.coffee +132 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/init.js.coffee +9 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/models/minimap.js.coffee +36 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/templates/moving_pin.jst.eco +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/templates/tooltip.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/views/main.js.coffee +68 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/views/moving_pin.js.coffee +55 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/views/tooltip.js.coffee +47 -0
- data/lib/assets/javascripts/socmap_adf/modules/mvc/init.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/mvc/views/base.js.coffee +5 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/init.js.coffee +10 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/models/overlay.js.coffee +4 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/templates/main.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/templates/polygon_label.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/views/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/views/main.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/views/overlay.js.coffee +55 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/views/polygon_label.js.coffee +17 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay_push/init.js.coffee +8 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay_push/templates/colibration.jst.eco +4 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay_push/views/new.js.coffee +32 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/init.js.coffee +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/templates/base.jst.eco +5 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/templates/basic.jst.eco +5 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/views/base.js.coffee +98 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/views/basic.js.coffee +86 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/collections/empty +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/init.js.coffee +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/models/slice.js.coffee +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/bottomlink.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/bottomlinkaction.jst.eco +2 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/content.jst.eco +2 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/sidebar.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/tab.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/tabs.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/bottomlink.js.coffee +41 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/content.js.coffee +63 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/sidebar.js.coffee +163 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/tab.js.coffee +52 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/tabcontent.js.coffee +23 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/tabs.js.coffee +63 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/collections/points.js.coffee +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/collections/zones.js.coffee +2 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/init.js.coffee +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/models/polygon.js.coffee +72 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/templates/main.jst.eco +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/views/main.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/views/test.js.coffee +17 -0
- data/lib/assets/javascripts/socmap_adf/requiress.js.coffee.erb +3 -0
- data/lib/generators/install_generator.rb +15 -0
- data/lib/generators/templates/socmap.rb.erb +9 -0
- data/lib/socmap_adf/engine.rb +5 -0
- data/lib/socmap_adf/version.rb +3 -0
- data/lib/socmap_adf.rb +17 -0
- data/lib/tasks/socmap-adf_tasks.rake +4 -0
- data/socmap_adf.gemspec +26 -0
- data/test/socmap-adf_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- metadata +202 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
class ADF.Map.Views.Main extends ADF.MVC.Views.Base
|
|
2
|
+
|
|
3
|
+
template: JST['socmap_adf/modules/map/templates/main']
|
|
4
|
+
left: 370
|
|
5
|
+
top: 0
|
|
6
|
+
heightOffset: 39
|
|
7
|
+
map_id: "adf_map_canvas"
|
|
8
|
+
mapOptions: {}
|
|
9
|
+
clusterOptions: {}
|
|
10
|
+
|
|
11
|
+
constructor: (options) ->
|
|
12
|
+
super(options)
|
|
13
|
+
@model = new ADF.Map.Models.Map(@mapOptions, @clusterOptions)
|
|
14
|
+
@map_id = options.map_id if options.map_id
|
|
15
|
+
|
|
16
|
+
render: () ->
|
|
17
|
+
@containerArea = @make("div", {"id" : @map_id} )
|
|
18
|
+
@setElement( @containerArea )
|
|
19
|
+
@
|
|
20
|
+
|
|
21
|
+
renderMap: ->
|
|
22
|
+
@bindResizeEvents()
|
|
23
|
+
@model.initGMap(@map_id)
|
|
24
|
+
@tooltip = new ADF.Map.Views.Tooltip({map: @getMap(), containerArea: @containerArea })
|
|
25
|
+
@resize()
|
|
26
|
+
@initTooltip()
|
|
27
|
+
@onRenderCompleted()
|
|
28
|
+
|
|
29
|
+
initTooltip: () ->
|
|
30
|
+
$("body").append( @tooltip.render().el )
|
|
31
|
+
|
|
32
|
+
bindResizeEvents: ->
|
|
33
|
+
$(window).resize =>
|
|
34
|
+
@resize()
|
|
35
|
+
|
|
36
|
+
$(document).ready =>
|
|
37
|
+
@resize()
|
|
38
|
+
|
|
39
|
+
resize: ->
|
|
40
|
+
height = $(window).height() - @heightOffset
|
|
41
|
+
width = $(window).width() - @left
|
|
42
|
+
$(@containerArea).css({"position" : "absolute", "top" : @top + "px", "left" : @left + "px", "height" : height + "px", "width" : width + "px"})
|
|
43
|
+
google.maps.event.trigger( @model.getGMap(), "resize") if @model.getGMap()
|
|
44
|
+
|
|
45
|
+
getMap: () ->
|
|
46
|
+
@model
|
|
47
|
+
|
|
48
|
+
setCenter: (latLng) ->
|
|
49
|
+
@model.setCenter(latLng)
|
|
50
|
+
|
|
51
|
+
setZoom: (zoom) ->
|
|
52
|
+
@getGMap().setZoom(zoom)
|
|
53
|
+
|
|
54
|
+
setCenterWithOffset: (position, offsetx, offsety) ->
|
|
55
|
+
@model.setCenter(position)
|
|
56
|
+
zoomLevel = @model.getGMap().getZoom()
|
|
57
|
+
max = Math.pow(2,zoomLevel) * 256;
|
|
58
|
+
lng = -(offsetx / max) * 100 + position.lng()
|
|
59
|
+
lat = -(offsety / max) * 100 + position.lat()
|
|
60
|
+
pos = new google.maps.LatLng(lat, lng)
|
|
61
|
+
@model.setCenter(pos)
|
|
62
|
+
|
|
63
|
+
getGMap: () ->
|
|
64
|
+
@model.getGMap()
|
|
65
|
+
|
|
66
|
+
getProjection: () ->
|
|
67
|
+
@getGMap().getProjection()
|
|
68
|
+
|
|
69
|
+
fitBounds: (bounds_array, centerWithOffset = false) ->
|
|
70
|
+
if bounds_array
|
|
71
|
+
bounds = new google.maps.LatLngBounds()
|
|
72
|
+
_.each bounds_array, (marker) =>
|
|
73
|
+
bounds.extend(new google.maps.LatLng(marker.lat, marker.lng))
|
|
74
|
+
@model.fitBounds(bounds)
|
|
75
|
+
@model.getGMap().setZoom(@model.getGMap().getZoom() - 1)
|
|
76
|
+
@setCenterWithOffset(@model.getGMap().getCenter(), 0, -300) if centerWithOffset
|
|
77
|
+
|
|
78
|
+
# Callback methods
|
|
79
|
+
onRenderCompleted: () ->
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
class ADF.Map.Views.MovingPin extends ADF.MVC.Views.Base
|
|
2
|
+
|
|
3
|
+
template: JST['socmap_adf/modules/map/templates/moving_pin']
|
|
4
|
+
offset_left: 0
|
|
5
|
+
offset_top: -91
|
|
6
|
+
|
|
7
|
+
initialize: =>
|
|
8
|
+
@map = @options.map
|
|
9
|
+
@containerArea = @options.containerArea
|
|
10
|
+
@label = @options.label
|
|
11
|
+
@pin = @options.pin
|
|
12
|
+
@color = @options.color
|
|
13
|
+
@setActive()
|
|
14
|
+
|
|
15
|
+
render: () ->
|
|
16
|
+
@setElement( @make("div", {"class":"mapitem_block", "style" : "display:none;"}) )
|
|
17
|
+
@$el.html(@template({color: @color, label: @label, pin: @pin }))
|
|
18
|
+
@
|
|
19
|
+
|
|
20
|
+
setInactive: () ->
|
|
21
|
+
$(@containerArea).unbind "mouseover"
|
|
22
|
+
$(@containerArea).unbind "mouseout"
|
|
23
|
+
$(@containerArea).unbind "mousemove"
|
|
24
|
+
@remove()
|
|
25
|
+
|
|
26
|
+
movingPinHeight: () ->
|
|
27
|
+
@$el.height()
|
|
28
|
+
|
|
29
|
+
remove: (e) =>
|
|
30
|
+
@$el.remove()
|
|
31
|
+
|
|
32
|
+
show: (e) =>
|
|
33
|
+
@$el.show()
|
|
34
|
+
|
|
35
|
+
hide: (e) =>
|
|
36
|
+
@$el.hide()
|
|
37
|
+
|
|
38
|
+
move: (e) =>
|
|
39
|
+
left = e.pageX + @offset_left - (@$el.width() / 2)
|
|
40
|
+
top = e.pageY + @offset_top - @movingPinHeight()
|
|
41
|
+
@$el.css("top", top+"px").css("left", left+"px")
|
|
42
|
+
|
|
43
|
+
setActive: () ->
|
|
44
|
+
$(@containerArea).bind "mouseover", @show
|
|
45
|
+
$(@containerArea).bind "mouseleave", @hide
|
|
46
|
+
$(@containerArea).bind "mousemove", @move
|
|
47
|
+
$(@containerArea).trigger("mousemove")
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
class ADF.Map.Views.Tooltip extends ADF.MVC.Views.Base
|
|
2
|
+
|
|
3
|
+
template: JST['socmap_adf/modules/map/templates/tooltip']
|
|
4
|
+
|
|
5
|
+
offset_left: 5
|
|
6
|
+
offset_top: 0
|
|
7
|
+
text: ""
|
|
8
|
+
active: false
|
|
9
|
+
|
|
10
|
+
initialize: =>
|
|
11
|
+
@map = @options.map
|
|
12
|
+
@containerArea = @options.containerArea
|
|
13
|
+
|
|
14
|
+
render: () ->
|
|
15
|
+
newElement = @make("div", {"class": "show_tip", "id" : "map_ballon", "style" : "display:none;position:absolute;"} )
|
|
16
|
+
@setElement( newElement )
|
|
17
|
+
@$el.html( @template )
|
|
18
|
+
@
|
|
19
|
+
|
|
20
|
+
setInactive: () ->
|
|
21
|
+
@active = false
|
|
22
|
+
$(@containerArea).unbind "mouseover"
|
|
23
|
+
$(@containerArea).unbind "mouseout"
|
|
24
|
+
$(@containerArea).unbind "mousemove"
|
|
25
|
+
@hide()
|
|
26
|
+
|
|
27
|
+
show: (e) =>
|
|
28
|
+
@move(e)
|
|
29
|
+
@$el.show()
|
|
30
|
+
|
|
31
|
+
hide: (e) =>
|
|
32
|
+
@$el.hide()
|
|
33
|
+
|
|
34
|
+
move: (e) =>
|
|
35
|
+
left = e.pageX + @offset_left
|
|
36
|
+
top = e.pageY + @offset_top
|
|
37
|
+
@$el.css("top", top+"px").css("left", left+"px")
|
|
38
|
+
|
|
39
|
+
setText: ( text ) ->
|
|
40
|
+
if not @active
|
|
41
|
+
@active = true
|
|
42
|
+
$(@containerArea).bind "mouseover", @show
|
|
43
|
+
$(@containerArea).bind "mouseleave", @hide
|
|
44
|
+
$(@containerArea).bind "mousemove", @move
|
|
45
|
+
|
|
46
|
+
@$("span").html(text)
|
|
Binary file
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
class ADF.Marker.Views.Main extends ADF.MVC.Views.Base
|
|
2
|
+
|
|
3
|
+
icon: false
|
|
4
|
+
shadow: false
|
|
5
|
+
shape: false
|
|
6
|
+
draggable: false
|
|
7
|
+
point: false
|
|
8
|
+
label: null
|
|
9
|
+
labelClass: "marker_label"
|
|
10
|
+
customMarker: null
|
|
11
|
+
clickable: true
|
|
12
|
+
asLabel: false
|
|
13
|
+
showAfterDrag: false
|
|
14
|
+
clustering: false
|
|
15
|
+
data: 1
|
|
16
|
+
zindex: 1
|
|
17
|
+
|
|
18
|
+
constructor: (options) ->
|
|
19
|
+
super(options)
|
|
20
|
+
@map = options.map
|
|
21
|
+
@point = options.point
|
|
22
|
+
@data = options.data if options.data?
|
|
23
|
+
@initMarker()
|
|
24
|
+
|
|
25
|
+
setMarkerIcon: (icon) ->
|
|
26
|
+
@icon = icon
|
|
27
|
+
@marker.setIcon(@icon)
|
|
28
|
+
|
|
29
|
+
getMarkerIcon: () ->
|
|
30
|
+
@icon
|
|
31
|
+
|
|
32
|
+
setCustomMarker: (customMarker) ->
|
|
33
|
+
@customMarker = customMarker
|
|
34
|
+
@marker.setMap(null)
|
|
35
|
+
@initMarker()
|
|
36
|
+
|
|
37
|
+
getCustomMarker: () ->
|
|
38
|
+
@customMarker
|
|
39
|
+
|
|
40
|
+
isClustering: () ->
|
|
41
|
+
@clustering
|
|
42
|
+
|
|
43
|
+
getData: () ->
|
|
44
|
+
@data
|
|
45
|
+
|
|
46
|
+
setDraggable: (draggable) ->
|
|
47
|
+
@draggable = draggable
|
|
48
|
+
@overlay.setDraggable(@draggable)
|
|
49
|
+
|
|
50
|
+
setLabel: (label) ->
|
|
51
|
+
@label = label
|
|
52
|
+
@overlay.setLabel()
|
|
53
|
+
|
|
54
|
+
setMap: (map) ->
|
|
55
|
+
@marker.setMap(map)
|
|
56
|
+
|
|
57
|
+
getPosition: () ->
|
|
58
|
+
@point
|
|
59
|
+
|
|
60
|
+
getMap: () ->
|
|
61
|
+
@marker.getMap()
|
|
62
|
+
|
|
63
|
+
getMarker: () ->
|
|
64
|
+
@marker
|
|
65
|
+
|
|
66
|
+
setLabel: (label) ->
|
|
67
|
+
@label = label
|
|
68
|
+
@marker.setMap(null)
|
|
69
|
+
@initMarker()
|
|
70
|
+
|
|
71
|
+
center: () ->
|
|
72
|
+
@map.getGMap().setCenter(@point)
|
|
73
|
+
|
|
74
|
+
centerPan: (x = 0, y = 0) ->
|
|
75
|
+
@map.getGMap().panTo(@point)
|
|
76
|
+
@map.getGMap().panBy(x, y)
|
|
77
|
+
|
|
78
|
+
initMarker: () ->
|
|
79
|
+
@options =
|
|
80
|
+
position: @point,
|
|
81
|
+
map: @map.getGMap()
|
|
82
|
+
draggable: @draggable
|
|
83
|
+
zIndex: 1
|
|
84
|
+
if @getCustomMarker()
|
|
85
|
+
@options.icon = @getCustomMarker().getIcon()
|
|
86
|
+
@options.shadow = @getCustomMarker().getShadow()
|
|
87
|
+
@options.shape = @getCustomMarker().getShape()
|
|
88
|
+
else
|
|
89
|
+
@options.icon = @icon if @icon
|
|
90
|
+
@options.shadow = @shadow if @shadow
|
|
91
|
+
@options.shape = @shape if @shape
|
|
92
|
+
|
|
93
|
+
@options.cursor = "hand"
|
|
94
|
+
if @draggable
|
|
95
|
+
@options.cursor = "move"
|
|
96
|
+
if @clickable
|
|
97
|
+
@options.cursor = "pointer"
|
|
98
|
+
|
|
99
|
+
if @label != null
|
|
100
|
+
@options.labelContent = @label
|
|
101
|
+
@options.labelClass = @labelClass
|
|
102
|
+
@options.labelAnchor = new google.maps.Point(60, 0)
|
|
103
|
+
@marker = new MarkerWithLabel @options
|
|
104
|
+
else
|
|
105
|
+
@marker = new google.maps.Marker @options
|
|
106
|
+
@bindMarkerEvents()
|
|
107
|
+
@map.addOverlay(@, true)
|
|
108
|
+
|
|
109
|
+
bindMarkerEvents: () ->
|
|
110
|
+
@markerDragstartEvent = google.maps.event.addListener @marker, 'dragstart', (e) =>
|
|
111
|
+
@hide()
|
|
112
|
+
|
|
113
|
+
@markerDragendEvent = google.maps.event.addListener @marker, 'dragend', (e) =>
|
|
114
|
+
@point = e.latLng
|
|
115
|
+
@onMarkerMoved(@point)
|
|
116
|
+
|
|
117
|
+
@markerClickEvent = google.maps.event.addDomListener @marker, 'click', (e) =>
|
|
118
|
+
if @clickable
|
|
119
|
+
@beforeMarkerClicked()
|
|
120
|
+
|
|
121
|
+
@markerMouseoverEvent = google.maps.event.addDomListener @marker, 'mouseover', (e) =>
|
|
122
|
+
if @hoverable
|
|
123
|
+
@onMarkerMouseOver()
|
|
124
|
+
|
|
125
|
+
@markerMouseoutEvent = google.maps.event.addDomListener @marker, 'mouseout', (e) =>
|
|
126
|
+
if @hoverable
|
|
127
|
+
@onMarkerMouseOut()
|
|
128
|
+
|
|
129
|
+
# Callback methods
|
|
130
|
+
beforeMarkerClicked: () ->
|
|
131
|
+
onMarkerMouseOver: () ->
|
|
132
|
+
onMarkerMouseOut: () ->
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
class ADF.Minimap.Models.Minimap extends Backbone.Model
|
|
2
|
+
|
|
3
|
+
overlays: []
|
|
4
|
+
|
|
5
|
+
defaults:
|
|
6
|
+
center: new google.maps.LatLng(57,25)
|
|
7
|
+
zoom: 7
|
|
8
|
+
mapTypeId: google.maps.MapTypeId.HYBRID
|
|
9
|
+
mapTypeControl: false
|
|
10
|
+
zoomControl: true
|
|
11
|
+
zoomControlOptions:
|
|
12
|
+
style: google.maps.ZoomControlStyle.SMALL
|
|
13
|
+
position: google.maps.ControlPosition.RIGHT_TOP
|
|
14
|
+
panControl: false
|
|
15
|
+
streetViewControl: false
|
|
16
|
+
|
|
17
|
+
initGMap: (mapElement) ->
|
|
18
|
+
@map = new google.maps.Map(document.getElementById(mapElement), @attributes)
|
|
19
|
+
return @map
|
|
20
|
+
|
|
21
|
+
getGMap: () ->
|
|
22
|
+
return @map
|
|
23
|
+
|
|
24
|
+
addOverlay: (overlay) ->
|
|
25
|
+
@overlays.push(overlay)
|
|
26
|
+
|
|
27
|
+
setCenter: (latLng) ->
|
|
28
|
+
@map.setCenter(latLng)
|
|
29
|
+
|
|
30
|
+
fitBounds: (bounds) ->
|
|
31
|
+
@map.fitBounds(bounds)
|
|
32
|
+
|
|
33
|
+
clearMap: () ->
|
|
34
|
+
for overlay in @overlays
|
|
35
|
+
overlay.setMap(null)
|
|
36
|
+
@overlays = []
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<div style="position:relative;">
|
|
2
|
+
<% if @label: %>
|
|
3
|
+
<div class="content <%= @color %>">
|
|
4
|
+
<div class="label_block">
|
|
5
|
+
<%= @label %>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="background"></div>
|
|
8
|
+
</div>
|
|
9
|
+
<% end %>
|
|
10
|
+
<div class="new_marker"><img src="<%= @pin %>" /></div>
|
|
11
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<span></span>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
class ADF.Minimap.Views.Main extends ADF.MVC.Views.Base
|
|
2
|
+
|
|
3
|
+
mapOptions: {}
|
|
4
|
+
map_id: "adf_minimap_canvas"
|
|
5
|
+
|
|
6
|
+
constructor: (options) ->
|
|
7
|
+
super(options)
|
|
8
|
+
@model = new ADF.Minimap.Models.Minimap(@mapOptions)
|
|
9
|
+
@map_id = options.map_id if options.map_id
|
|
10
|
+
|
|
11
|
+
render: () ->
|
|
12
|
+
@containerArea = @make("div", {"id" : @map_id} )
|
|
13
|
+
@setElement( @containerArea )
|
|
14
|
+
@
|
|
15
|
+
|
|
16
|
+
return this
|
|
17
|
+
|
|
18
|
+
renderMap: ->
|
|
19
|
+
@bindResizeEvents()
|
|
20
|
+
@model.initGMap(@map_id)
|
|
21
|
+
@tooltip = new ADF.Minimap.Views.Tooltip({map: @getMap(), containerArea: @containerArea })
|
|
22
|
+
@resize()
|
|
23
|
+
@initTooltip()
|
|
24
|
+
@onRenderCompleted()
|
|
25
|
+
|
|
26
|
+
initTooltip: () ->
|
|
27
|
+
$(@containerArea).append( @tooltip.render().el )
|
|
28
|
+
|
|
29
|
+
bindResizeEvents: ->
|
|
30
|
+
$(window).resize =>
|
|
31
|
+
@resize()
|
|
32
|
+
|
|
33
|
+
$(document).ready =>
|
|
34
|
+
@resize()
|
|
35
|
+
|
|
36
|
+
resize: ->
|
|
37
|
+
$(@containerArea).css({"position" : "relative", "height" : "100%", "width" : "100%"})
|
|
38
|
+
google.maps.event.trigger( @model.getGMap(), "resize") if @model.getGMap()
|
|
39
|
+
|
|
40
|
+
getMap: () ->
|
|
41
|
+
@model
|
|
42
|
+
|
|
43
|
+
setCenter: (latLng) ->
|
|
44
|
+
@model.setCenter(latLng)
|
|
45
|
+
|
|
46
|
+
setCenterWithOffset: (position, offsetx, offsety) ->
|
|
47
|
+
@model.setCenter(position)
|
|
48
|
+
zoomLevel = @model.getGMap().getZoom()
|
|
49
|
+
max = Math.pow(2,zoomLevel) * 256;
|
|
50
|
+
lng = -(offsetx / max) * 100 + position.lng()
|
|
51
|
+
lat = -(offsety / max) * 100 + position.lat()
|
|
52
|
+
pos = new google.maps.LatLng(lat, lng)
|
|
53
|
+
@model.setCenter(pos)
|
|
54
|
+
|
|
55
|
+
getGMap: () ->
|
|
56
|
+
@model.getGMap()
|
|
57
|
+
|
|
58
|
+
fitBounds: (bounds_array, centerWithOffset) ->
|
|
59
|
+
if bounds_array
|
|
60
|
+
bounds = new google.maps.LatLngBounds()
|
|
61
|
+
_.each bounds_array, (marker) =>
|
|
62
|
+
bounds.extend(new google.maps.LatLng(marker.lat, marker.lng))
|
|
63
|
+
@model.fitBounds(bounds)
|
|
64
|
+
@model.getGMap().setZoom(@model.getGMap().getZoom() - 1)
|
|
65
|
+
@setCenterWithOffset(@model.getGMap().getCenter(), 0, -300) if centerWithOffset
|
|
66
|
+
|
|
67
|
+
# Callback methods
|
|
68
|
+
onRenderCompleted: () ->
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
class ADF.Minimap.Views.MovingPin extends ADF.MVC.Views.Base
|
|
2
|
+
|
|
3
|
+
template: JST['socmap_adf/modules/minimap/templates/moving_pin']
|
|
4
|
+
offset_left: 0
|
|
5
|
+
offset_top: -91
|
|
6
|
+
label: ""
|
|
7
|
+
offsetElement: {offset: ->
|
|
8
|
+
left: 0
|
|
9
|
+
right: 0}
|
|
10
|
+
|
|
11
|
+
initialize: =>
|
|
12
|
+
@map = @options.map
|
|
13
|
+
@containerArea = @options.containerArea
|
|
14
|
+
@label = @options.label if @options.label
|
|
15
|
+
@pin = @options.pin
|
|
16
|
+
@color = @options.color
|
|
17
|
+
@offsetElement = @options.offsetElement if @options.offsetElement
|
|
18
|
+
@offset_top = @options.offset_top if @options.offset_top?
|
|
19
|
+
|
|
20
|
+
render: () ->
|
|
21
|
+
@setElement( @make("div", {"class":"minimapitem_block", "style" : "display:none;position:absolute;"}) )
|
|
22
|
+
@$el.html(@template({color: @color, label: @label, pin: @pin }))
|
|
23
|
+
@setActive()
|
|
24
|
+
@
|
|
25
|
+
|
|
26
|
+
setInactive: () ->
|
|
27
|
+
$(@containerArea).unbind "mouseover"
|
|
28
|
+
$(@containerArea).unbind "mouseout"
|
|
29
|
+
$(@containerArea).unbind "mousemove"
|
|
30
|
+
@remove()
|
|
31
|
+
|
|
32
|
+
movingPinHeight: () ->
|
|
33
|
+
@$el.height()
|
|
34
|
+
|
|
35
|
+
remove: (e) =>
|
|
36
|
+
@$el.remove()
|
|
37
|
+
|
|
38
|
+
show: (e) =>
|
|
39
|
+
@$el.show()
|
|
40
|
+
|
|
41
|
+
hide: (e) =>
|
|
42
|
+
@$el.hide()
|
|
43
|
+
|
|
44
|
+
move: (e) =>
|
|
45
|
+
parentOffset = @offsetElement.offset()
|
|
46
|
+
left = e.pageX - parentOffset.left + @offset_left - (@$el.width() / 2)
|
|
47
|
+
top = e.pageY - parentOffset.top + @offset_top - @movingPinHeight()
|
|
48
|
+
|
|
49
|
+
@$el.css("top", top+"px").css("left", left+"px")
|
|
50
|
+
|
|
51
|
+
setActive: () ->
|
|
52
|
+
$(@containerArea).bind "mouseover", @show
|
|
53
|
+
$(@containerArea).bind "mouseleave", @hide
|
|
54
|
+
$(@containerArea).bind "mousemove", @move
|
|
55
|
+
$(@containerArea).trigger("mousemove")
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
class ADF.Minimap.Views.Tooltip extends ADF.MVC.Views.Base
|
|
2
|
+
|
|
3
|
+
template: JST['socmap_adf/modules/minimap/templates/tooltip']
|
|
4
|
+
|
|
5
|
+
offset_left: 5
|
|
6
|
+
offset_top: 0
|
|
7
|
+
text: ""
|
|
8
|
+
active: false
|
|
9
|
+
|
|
10
|
+
initialize: =>
|
|
11
|
+
@map = @options.map
|
|
12
|
+
@containerArea = @options.containerArea
|
|
13
|
+
|
|
14
|
+
render: () ->
|
|
15
|
+
newElement = @make("div", {"class": "show_tip", "id" : "minimap_ballon", "style" : "display:none;position:absolute;"} )
|
|
16
|
+
@setElement( newElement )
|
|
17
|
+
@$el.html( @template )
|
|
18
|
+
@
|
|
19
|
+
|
|
20
|
+
setInactive: () ->
|
|
21
|
+
@active = false
|
|
22
|
+
$(@containerArea).unbind "mouseover"
|
|
23
|
+
$(@containerArea).unbind "mouseout"
|
|
24
|
+
$(@containerArea).unbind "mousemove"
|
|
25
|
+
@hide()
|
|
26
|
+
|
|
27
|
+
show: (e) =>
|
|
28
|
+
@move(e)
|
|
29
|
+
@$el.show()
|
|
30
|
+
|
|
31
|
+
hide: (e) =>
|
|
32
|
+
@$el.hide()
|
|
33
|
+
|
|
34
|
+
move: (e) =>
|
|
35
|
+
parentOffset = @$el.parent().offset()
|
|
36
|
+
left = e.pageX - parentOffset.left + @offset_left
|
|
37
|
+
top = e.pageY - parentOffset.top + @offset_top
|
|
38
|
+
@$el.css("top", top+"px").css("left", left+"px")
|
|
39
|
+
|
|
40
|
+
setText: ( text ) ->
|
|
41
|
+
if not @active
|
|
42
|
+
@active = true
|
|
43
|
+
$(@containerArea).bind "mouseover", @show
|
|
44
|
+
$(@containerArea).bind "mouseleave", @hide
|
|
45
|
+
$(@containerArea).bind "mousemove", @move
|
|
46
|
+
|
|
47
|
+
@$("span").html(text)
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<div></div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<div class="polygon_label"><%= @label %></div>
|
|
Binary file
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
class ADF.Overlay.Views.Overlay extends ADF.GMap.Views.OverlayView
|
|
2
|
+
|
|
3
|
+
constructor: (options) ->
|
|
4
|
+
super(options)
|
|
5
|
+
@map = options.map
|
|
6
|
+
@point = options.point
|
|
7
|
+
@pushOverlay()
|
|
8
|
+
|
|
9
|
+
setTop: (top) ->
|
|
10
|
+
@top = top
|
|
11
|
+
@redraw()
|
|
12
|
+
|
|
13
|
+
render: () ->
|
|
14
|
+
$(@el).html(@template)
|
|
15
|
+
@onRenderCompleted()
|
|
16
|
+
return this
|
|
17
|
+
|
|
18
|
+
hide: () ->
|
|
19
|
+
@overlay.hide() if @overlay
|
|
20
|
+
|
|
21
|
+
redraw: () ->
|
|
22
|
+
@overlay.draw()
|
|
23
|
+
|
|
24
|
+
pushOverlay: () ->
|
|
25
|
+
@overlay = new ADF.GMap.Views.Overlay( @map.getGMap(), @ )
|
|
26
|
+
@map.addOverlay(@overlay)
|
|
27
|
+
|
|
28
|
+
setMarkerIcon: (icon) ->
|
|
29
|
+
@icon = icon
|
|
30
|
+
@overlay.setMarkerIcon()
|
|
31
|
+
|
|
32
|
+
getMarkerIcon: () ->
|
|
33
|
+
@overlay.getMarkerIcon()
|
|
34
|
+
|
|
35
|
+
setLabel: (label) ->
|
|
36
|
+
@label = label
|
|
37
|
+
@overlay.setLabel()
|
|
38
|
+
|
|
39
|
+
remove: () ->
|
|
40
|
+
@overlay.setMap(null)
|
|
41
|
+
|
|
42
|
+
center: () ->
|
|
43
|
+
@overlay.map.setCenter(@point)
|
|
44
|
+
|
|
45
|
+
canterPan: (x = 0, y = 0) ->
|
|
46
|
+
@overlay.map.panTo(@point)
|
|
47
|
+
@overlay.map.panBy(x, y)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# Callback methods
|
|
51
|
+
onRenderCompleted: () ->
|
|
52
|
+
onMarkerAdded: () ->
|
|
53
|
+
beforeMarkerClicked: () ->
|
|
54
|
+
beforeOverlayShowed: () ->
|
|
55
|
+
onOverlayShowed: () ->
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class ADF.Map.Views.PolygonLabel extends ADF.Overlay.Views.Overlay
|
|
2
|
+
|
|
3
|
+
template: JST['socmap_adf/modules/overlay/templates/polygon_label']
|
|
4
|
+
dontRenderMarker: true
|
|
5
|
+
|
|
6
|
+
initialize: () ->
|
|
7
|
+
super()
|
|
8
|
+
@label = @options.label
|
|
9
|
+
|
|
10
|
+
render: ->
|
|
11
|
+
$(@el).html( @template( {label: @label } ) )
|
|
12
|
+
@onRenderCompleted()
|
|
13
|
+
@left = 400
|
|
14
|
+
@top = 45
|
|
15
|
+
@initResize()
|
|
16
|
+
@redraw()
|
|
17
|
+
return this
|