提示信息
提示信息在很多业务场景中都需要,比如显示当前位置周边的饭店列表,或者点击饭店,显示饭店详细信息,交通路线,电话号码等等。 鉴于显示的业务信息比较多,所以通常的做法都是采用overlay
的方式来做。 用传统的HTML来布局和排版信息,然后附加到地图上的指定位置就可以了。 官网中提供了一个具体的例子: popup。 下面就解读一下这个例子的代码:
<!--此处用html布局,各种样式均在css中定义好了-->
<div id="popup" class="ol-popup">
<a href="#" id="popup-closer" class="ol-popup-closer"></a>
<div id="popup-content"></div>
</div>
......
<script>
// 获取到popup的节点
var container = document.getElementById('popup');
var content = document.getElementById('popup-content');
var closer = document.getElementById('popup-closer');
// 创建一个overlay, 绑定html元素container
var overlay = new ol.Overlay(/** @type {olx.OverlayOptions} */ ({
element: container,
autoPan: true,
autoPanAnimation: {
duration: 250
}
}));
......
// 监听地图点击事件
map.on('singleclick', function(evt) {
// 获取当前点击坐标,并设置到HTML元素上去
var coordinate = evt.coordinate;
var hdms = ol.coordinate.toStringHDMS(ol.proj.transform(
coordinate, 'EPSG:3857', 'EPSG:4326'));
content.innerHTML = '<p>You clicked here:</p><code>' + hdms +
'</code>';
// 设置overlay的位置,从而显示在鼠标点击处
overlay.setPosition(coordinate);
});
</script>