在地图上移动鼠标后,使长lat坐标可见。我用最新的OpenLayers版本重写HTML页面。
我想在点击地图中的某个位置后显示这个长lat坐标,而不是像代码中那样在地图上移动鼠标后。使最后一个坐标可见,直到有人点击到下一个位置,什么都没有。我不希望坐标像代码中那样立即消失。
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.3.0/css/ol.css" type="text/css">
<style>
.map {
height: 400px;
width: 100%;
}
</style>
<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.3.0/build/ol.js"></script>
<title>OpenLayers example</title>
</head>
<body>
<div id="myposition"></div>
<h2>My Map</h2>
<div id="map" class="map"></div>
<script type="text/javascript">
var osm_default = new ol.layer.Tile({
source: new ol.source.OSM()
});
var map = new ol.Map({
layers: [osm_default],
target: 'map',
view: new ol.View({
center: ol.proj.transform([-1.81185, 52.443141], 'EPSG:4326', 'EPSG:3857'),
zoom: 6
})
});
var mousePosition = new ol.control.MousePosition({
coordinateFormat: ol.coordinate.createStringXY(2),
projection: 'EPSG:4326',
target: document.getElementById('myposition'),
innerHTML: ' '
});
map.addControl(mousePosition);
</script>
</body>
</html>
在地图上使用singleclick
或click
事件:
map.on('singleclick', event => {
const coordinate = ol.proj.toLonLat(event.coordinate);
const innerText = `Lon: ${coordinate[0].toFixed(4)}, Lat: ${coordinate[1].toFixed(4)}`;
document.getElementById('myposition').innerText = innerText;
});