我在这里有OpenLayers / jQuery冲突吗?

时间:2012-09-07 05:48:37

标签: jquery ruby-on-rails coffeescript openlayers

这是我在控制器js.coffee文件中的咖啡脚本代码。我只是想尝试打开一个以特定位置为中心的简单地图等。我的地图有效且moveend_event回调被触发,因为如果我取消注释alert("hello")调用它可以正常工作。

$(document).ready ->

  map = undefined
  options =
    projection: new OpenLayers.Projection('EPSG:900913')
    displayProjection: new OpenLayers.Projection("EPSG:4326")
    center: new OpenLayers.LonLat(-115.540123, 54.073189)
    controls: [new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.LayerSwitcher()]
    eventListeners:
      'moveend': moveend_event
  map = new OpenLayers.Map("map_element", options)
  osm = new OpenLayers.Layer.OSM('OpenStreetMap Layer')
  map.addLayer osm
  map_center = new OpenLayers.LonLat(-115.540123, 54.073189).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject())
  map.setCenter(map_center, 11)

moveend_event = ->
  #alert "Hello!"
  #$(".map_location").innerHTML "Hello!"

我很接近,但我认为我可能没有Openlayers / jQuery冲突。如果我尝试使用$(".map_location").innerHTML "Hello!"设置我的map_location div,页面创建者和错误控制台会显示:

  

TypeError:'undefined'不是一个函数(评估   '$( “map_location ”)。innerHTML的(“ 你好!”)')

如果有帮助,我在打开图层之前加载jquery。我做了一些谷歌搜索,它可能是jQuery noConflict模式(http://api.jquery.com/jQuery.noConflict/),但我是一个javascript新手,我不知道这里的问题或如何修复它。我相信这很容易解决,但我目前没有线索。

1 个答案:

答案 0 :(得分:4)

innerHtml不是jQuery函数,使用$('selector').html(new html here);代替。

html是javascript的innerHtml

的jQuery对应物