2014-04-29 36 views
0

我想在点击一个新的标记添加到地图中,并试图挽救标题和描述上显示标记悬停但是我收到以下错误:打开图层无法读取属性“加层”的不确定

Cannot read property 'add Layer' of undefined 

的Javascript:

<script type="text/javascript"> 
    var map; 
    function init() { 
     var map = new OpenLayers.Map('map'); 
     var proj4326 = new OpenLayers.Projection("EPSG:4326"); 
     var projmerc = new OpenLayers.Projection("EPSG:900913"); 
     var layerOSM = new OpenLayers.Layer.OSM("Street Map"); 
     map.addLayers([layerOSM]); 
     if (!map.getCenter()) map.zoomToMaxExtent(); 
     map.events.register("mousemove", map, function (e) { 
      var position = this.events.getMousePosition(e); 
      OpenLayers.Util.getElement("coords").innerHTML = 'MOUSE POSITION ' + position; 
      var lonlat = map.getLonLatFromPixel(this.events.getMousePosition(e)); 
      //OpenLayers.Util.getElement("lonlatTG").innerHTML = 'lonlat => ' + lonlat; 
      var lonlatTransf = lonlat.transform(map.getProjectionObject(), proj4326); 
      //OpenLayers.Util.getElement("lonlatTrans").innerHTML = 'lonlatTransf => ' + lonlatTransf; 
      //OpenLayers.Util.getElement("lonlatDouble").innerHTML = 'lonlat => ' + lonlat; 
      document.getElementById("lon").innerHTML = "Longitude: " + lonlatTransf.lon; 
      document.getElementById("lat").innerHTML = "Latidue : " + lonlatTransf.lat; 
     }); 

     map.events.register("click", map, function (e) { 


      var iconT = "http://maps.google.com/mapfiles/ms/icons/red-pushpin.png"; //document.getElementsByName("Icon").value; 
      var title = document.getElementById("Title").value; 
      var description = document.getElementById("Description").value; 
      var position = this.events.getMousePosition(e); 
      var icon = new OpenLayers.Icon(iconT); 
      var lonlat = map.getLonLatFromPixel(position); 
      var lonlatTransf = lonlat.transform(map.getProjectionObject(), proj4326); 
      var longitude = lonlatTransf.lon; 
      var latitude = lonlatTransf.lat; 

      var lonlat = lonlatTransf.transform(proj4326, map.getProjectionObject()); 
      /*var markerslayer = new OpenLayers.Layer.Markers("Markers");*/ 


      $.ajax({ 
       type: 'POST', 
       data: { 'desc': description, 'title': title, 'icon': iconT, 'lon': longitude, 'lat': latitude }, 
       url: '@Url.Action("Test")', 
       success: function() { 
        alert('Your Marker was saved successfully!'); 
        addMarker(title, description, longitude, latitude); 
        /* markerslayer.addMarker(new OpenLayers.Marker(lonlat, icon)); 
        map.addLayer(markerslayer);*/ 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
        alert(thrownError.toString()); 
       } 
      }); 

     }); 
     /*map.addControl(new OpenLayers.Control.LayerSwitcher());*/ 
    } 

    function addMarker(title,description,lon,lat){ 
     var markerslayer = new OpenLayers.Layer.Markers("Markers"); 
     map.addLayer(markerLayer); 

     lonLat = new OpenLayers.LonLat(lon,lat); 
     marker = new OpenLayers.Marker(lonLat); 
     markerLayer.addMarker(marker); 
     marker.icon.imageDiv.title = title; //is this correct way to add title? How can I description too? 
    } 
</script> 

回答

2

你的地图变量是本地的初始化函数:

<script type="text/javascript"> 
var map; 
function init() { 
    var map = new OpenLayers.Map('map'); 

删除“var”:

var map; 
function init() { 
    map = new OpenLayers.Map('map'); 
+0

是的你是对的,我完全忘了这一点,并没有看到错误,感谢指出它! 你能帮我设置lon和lat吗?请因为某种原因设置错误的lon和lat – rikket

+1

这可能是一个不同的问题,需要更多的信息,请创建一个至少包含以下内容:1.你是什么意思是“错误的lon和lat正在设置”? 2.你在看什么? 3.你期望看到什么? 4.一个演示问题的jsfiddle(或者除了您正在使用的代码之外的指向页面的链接)? – geocodezip

相关问题