javascript - 尝试在点击事件上绑定 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 的警报
解决方案
您分享的错误是访问函数等属性时发生的典型 js 错误。两件事情:
拉取与您复制代码的 map.on 方法相对应的 openlayers 版本。否则,除非有意使用旧版本,否则请尝试引用最新的OpenLayers 库。加载的资产似乎
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
是 2013 年的 OpenLayers 2.13.1。在 5.3.0 中,使用 MousePosition 控件将根据 OpenLayers 文档站点中提供的鼠标位置演示提供相应的纬度/经度。他们的示例提供了如何在鼠标位置更改时定位元素,您可以在单击事件期间使用该信息。下面是我提供的一个示例,当添加到鼠标位置演示时,单击日志纬度/经度到控制台:
document.getElementById("map").addEventListener('click', function(e) { console.log(document.getElementById("mouse-position").childNodes[0].innerHTML) });
推荐阅读
- vulkan - 更改窗口大小时必须重新创建 Vulkan 管道吗?
- curl - 使用 curl 向服务器发送二进制 dns 数据包
- loopbackjs - Loopback-4 模拟注入
- javascript - React NPM NodeJS 如何处理 JSX 文件?
- java - 在eclipse中打开一个外部项目
- javascript - 倒计时后如何拨打报警电话?之前因为某种原因打电话?
- lua - WoW - 在 Lua 中四舍五入到小数点后两位
- python - 作为一个列表元素读入段落
- python-3.x - np.cos 的 FFT 有两个峰值
- javascript - 在javascript中找不到树枝变量