我不明白爲什麼這會不會CoffeeScript的工作。我試圖簡化此示例:http://openlayers.org/dev/examples/click-handler.html的OpenLayers + Rails的3 +的CoffeeScript = a.draw不是一個函數
在視圖中,我有ID映射一個div並調用initMap()。
我得到的錯誤是:
TypeError: a.draw is not a function
在的OpenLayers中間的lib
我在一家.js.coffeescript文件下面的代碼:
@MarkOnce = OpenLayers.Class OpenLayers.Control,
defaultHandlerOptions:
'single': true
'double': false
'pixelTolerance': 0
'stopSingle': false
'stopDouble': false
initialize: ->
this.handlerOptions = OpenLayers.Util.extend({}, this.defaultHandlerOptions)
OpenLayers.Control.prototype.initialize.apply(this, arguments)
this.handler = new OpenLayers.Handler.Click(this, {'click': this.mark}, this.handlerOptions)
mark: (evt) ->
console.log 'mark'
alert('pan')
default_marker = (lonlat) ->
size = new OpenLayers.Size(21,25)
offset = new OpenLayers.Pixel(-(size.w/2), -size.h)
icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',size,offset)
marker = new OpenLayers.Marker(lonlat,icon)
return marker
@initMap = (lon,lat,marker) ->
@map = load_map(lon,lat)
render_marker(@map,lon,lat) if marker
set_projection(@map,lon,lat)
set_callbacks(@map)
load_map = (lon,lat) ->
map = new OpenLayers.Map 'map'
layer = new OpenLayers.Layer.OSM()
map.addLayer(layer)
map
set_projection = (map, lon, lat) ->
projection = new OpenLayers.Projection("EPSG:4326")
point = new OpenLayers.LonLat(lon,lat)
console.log(point)
center = point.transform(projection, map.getProjectionObject())
map.setCenter(point, 5)
render_marker = (map,lon,lat) ->
layer_once = new OpenLayers.Layer.Markers("mark_once")
map.addLayer(layer_once)
lonlat = new OpenLayers.LonLat(lon,lat)
layer_once.addMarker(@default_marker(lonlat))
@numMarkers++
set_callbacks = (map) ->
click = new MarkOnce()
map.addControl(click)
click.activate()
編輯:看來,如果你更改this.defaultHandlerOptions {得出: - >警報「鍋」}它的工作原理。現在的問題是:在這個範圍內發生了什麼?這是什麼」?
EDIT2:這個abordage一個可能的問題是,每當我在地圖上縮小或放大,標記放置在地圖的中心。如何避免這種情況發生?
EDIT3:如果你到這一點,炸燬你所做的一切,去使用單張。
您好,感謝您的評論,但是這是很久以前的事,我無法測試,如果現在這個問題解決了。如前所述,我最終轉向傳單。但是,既然你正在恢復這一點,你應該是對的,所以我把你的答案設定爲接受。歡迎來到SO。 – fotanus