我想在单击地图时从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警报
答案 0 :(得分:0)
您共享的错误是访问诸如函数之类的属性时发生的典型js错误。两件事:
提取与您从中复制代码的map.on方法相对应的openlayers版本。否则,除非有意使用旧版本,否则请尝试引用最新的OpenLayers library。看来<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
加载的资产是OpenLayers 2.13.1(从2013年开始)。
使用MousePosition控件将根据OpenLayers文档站点中提供的mouse-position demo提供相应的经度/纬度。他们的示例提供了如何将元素定位到鼠标位置变化的目标,您可以在单击事件期间使用该信息。下面是我提供的示例,当将其添加到鼠标位置演示中时,它会向控制台输入经纬度:
document.getElementById("map").addEventListener('click',
function(e) {
console.log(document.getElementById("mouse-position").childNodes[0].innerHTML)
});