尝试在单击事件上绑定openlayers地图时出错

时间:2019-06-06 02:34:40

标签: javascript html openlayers

我想在单击地图时从openlayers地图对象获取纬度/经度。我试图用Map.on('click',function(e){})

但发生错误。从控制台中,我捕获了以下内容:

  

“未捕获的TypeError:map.on不是函数”


代码:

  <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
  <script>

    var map = new OpenLayers.Map("mapdiv");
    map.addLayer(new OpenLayers.Layer.OSM());

    var lonLat = new OpenLayers.LonLat( 114.5931866, -3.3171685 )
          .transform(
            new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
            map.getProjectionObject() // to Spherical Mercator Projection
          );

    var zoom=16;

    var markers = new OpenLayers.Layer.Markers( "Markers" );
    map.addLayer(markers);

    markers.addMarker(new OpenLayers.Marker(lonLat));
    map.setCenter (lonLat, zoom);


    map.on('click',function(evt){
      var coords = ol.proj.toLonLat(evt.coordinate);
      var lat = coords[1];
      var lon = coords[0];
      var loctxt = "latitude : " + lat + " Longitude: "+ lon;
      alert(loctxt);
    });


  </script>

</body></html>

我希望它会在点击地图上显示latlong警报

1 个答案:

答案 0 :(得分:0)

您共享的错误是访问诸如函数之类的属性时发生的典型js错误。两件事:

  1. 提取与您从中复制代码的map.on方法相对应的openlayers版本。否则,除非有意使用旧版本,否则请尝试引用最新的OpenLayers library。看来<script src="http://www.openlayers.org/api/OpenLayers.js"></script>加载的资产是OpenLayers 2.13.1(从2013年开始)。

  2. 在5.3.0中,
  3. 使用MousePosition控件将根据OpenLayers文档站点中提供的mouse-position demo提供相应的经度/纬度。他们的示例提供了如何将元素定位到鼠标位置变化的目标,您可以在单击事件期间使用该信息。下面是我提供的示例,当将其添加到鼠标位置演示中时,它会向控制台输入经纬度:

    document.getElementById("map").addEventListener('click', function(e) { console.log(document.getElementById("mouse-position").childNodes[0].innerHTML) });