很多场景需要在地图上弹出一个tooltip或者popup之类的小窗口显示一些信息,最近简单做了一下封装,方便后续调用,代码如下:
/* 刘玉峰 jjxliu306@163.com 2018-05-05 */ //点击后高亮下方的feature 并且弹出popup信息做展示 Popup = function(map ){ this.map = map ; //添加一个popup的div var div = document.createElement("div"); div.id = 'popup'; div.className='ol-popup'; div.innerHTML = ' <a href="#" id="popup_closer" class="ol-popup-closer"></a> ' + ' <div id="popup_content"></div> ' ; document.body.appendChild(div); var overlay = new ol.Overlay({ element: div, autoPan: true, autoPanAnimation: { duration: 250 }/* , offset:[0,-45]*/ }); map.addOverlay(overlay); //扔到map里 后面方便调用 this.popup = overlay ; document.getElementById('popup_closer').onclick = function() { overlay.setPosition(undefined); //$('#popup_closer').blur(); return false; }; } /** * 泡泡显示信息 * @param _info 气泡内容 * @param _position 气泡显示的位置 [lon,lat] */ Popup.prototype.tooltip = function(_info , _position) { document.getElementById('popup_content').innerHTML = _info ; //设置popup的位置 this.popup.setPosition(_position); }
需要引入一个样式文件:
.ol-popup { position: absolute; background-color: white; -webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2)); filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2)); padding: 15px; border-radius: 10px; border: 1px solid #cccccc; bottom: 12px; left: -50px; font: italic bold 12px ; min-width: 280px; } .ol-popup:after, .ol-popup:before { top: 100%; border: solid transparent; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; } .ol-popup:after { border-top-color: white; border-width: 10px; left: 48px; margin-left: -10px; } .ol-popup:before { border-top-color: #cccccc; border-width: 11px; left: 48px; margin-left: -11px; } .ol-popup-closer { text-decoration: none; position: absolute; top: 2px; right: 8px; } .ol-popup-closer:after { content: "✖"; }
2、测试,鼠标点击地图后弹出当前鼠标的点击位置信息 :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>openlayers-popup</title> <link rel="stylesheet" href="ol.css" type="text/css"> <link rel="stylesheet" href="popup.css" type="text/css"> <style> .map { height: 500px; width: 100%; } </style> <script src="ol.js" type="text/javascript"></script> <script src="popup.js" type="text/javascript"></script> </head> <body> <h2>openlayers popup 工具封装测试 </h2> <div id="map" class="map"></div> <h2>刘玉峰 jjxliu306@163.com</h2> <script type="text/javascript"> var osm = new ol.layer.Tile({ source: new ol.source.OSM() }); var map = new ol.Map({ target: 'map', layers:[osm], view: new ol.View({ center: [ 120, 30], zoom: 10, projection: 'EPSG:4326' }) }); var popup = new Popup(map); //下面对鼠标点击时间进行监听 map.on('click', function(evt) { var position = map.getEventCoordinate(evt.originalEvent); popup.tooltip(position , position); }); </script> </body> </html>
效果如图:
公网的案例:
http://47.98.238.202:8000/ol_extension/tool/popup/
码云代码地址:
https://gitee.com/jjxliu306/ol_extension/tree/master/tool/popup
相关推荐
在网页设计和开发中,用户交互的一个常见场景是通过弹出层(modal)表单来收集数据。这种设计模式能够提供一种不打断整体用户体验的方式来获取信息,如注册、登录、编辑或确认操作。本文将详细讲解如何实现弹出层...
在SSM(Spring、SpringMVC、MyBatis)框架中,使用JSP页面和Layui前端框架来实现layer弹出层效果是常见的做法,这样可以为用户提供更好的交互体验。Layui是一款轻量级的前端组件库,其中的layer模块提供了丰富的弹窗...
可以使用弹出框(`popup`)或者浮动元素(`div`)来实现。菜单项可以是链接或按钮,每个都绑定到一个处理函数。 4. **样式覆盖**:描述中提到,样式可以自行覆盖调整。这意味着开发者可以使用CSS来定制菜单的外观,...
layui的每个功能都被封装为一个模块,例如`form`模块用于处理表单操作,`layer`模块则用于弹窗功能。在使用前,我们需要通过`layui.use()`方法引入这些模块。 1. 引入layui库: 在HTML文件头部引入layui的CSS和JS...
在本例中,我们需要在Layer弹出层中显示一组复选框(Checkbox),这些复选框的数据来自服务器。由于视图(View)中无法直接处理复杂的业务逻辑,因此我们选择在用户点击编辑按钮时,通过Ajax向服务器发送请求获取所...
如果重合,就选择该要素并触发相应的操作,例如高亮显示或弹出信息窗口。点选通常适用于选择特定的点状要素,如标记、图标等。 2. **框选(Rectangle Selection)**: 框选允许用户通过拖动鼠标绘制一个矩形框,...
在C#编程中,"弹出Loading遮罩层"是一个常见的功能需求,特别是在进行异步操作或者长时间数据加载时,为了提升用户体验,我们会显示一个遮罩层,通常带有"加载中"或"请稍候"的提示信息。下面将详细解释如何在C#中...
4. 处理返回的数据,如`console.log(res)`,然后关闭弹出层`layer.close(index)`。 通过这种方式,我们可以方便地在弹出层与主页面之间传递数据,实现更灵活的功能交互。这种机制在处理表单提交、数据验证、用户...
弹出提示错误 function qxMsg(msgStr) { layer.open({ type: 1, title: '提示消息', offset: '10%;', content: '<div xss=removed>'+msgStr+'</div>', btn: '关闭', btnAlign: 'c', shade: 0.2, yes: ...
本篇文章将详细介绍如何使用 Layui 实现二级弹窗弹出后自动关闭一级弹窗的方法,这对于构建多层交互的页面逻辑尤为重要。 首先,我们需要理解 Layui 弹窗的工作原理。Layui 的弹窗组件是基于 iframe 或 div 实现的...
- 直接初始化并打开弹出层:`$("#buttonID").layer().open();` - 初始化弹出层对象后打开:`var layer = $("#buttonID").layer(); layer.open();` - 初始化弹出层对象时传入自定义配置后打开:`var layer = $("#...
- 使用了`layer.open`方法来创建一个弹出层,其中包括保存和取消按钮,点击保存会执行指定的保存函数。 - 为了防止弹出层重复打开,使用时间戳作为弹出层的ID。 2. **createTable方法**: - 这个方法用于初始化...
Layer是一个基于jQuery的弹出层插件,支持页面内生成弹窗效果,如模态框、信息提示框、iframe页面等。在本文中,layer被用于创建一个包含表单的模态窗口。配置项中的`type:1`指定了弹窗类型为模态框;`title`用于...
Open_Browser_Window+ 操作弹出式窗口升级版 StyleApplier 表格的鼠标触发效果 checkform 表单验证插件 Realplayer 嵌入网页Real播放器插件 BannerImageBuilder 创建多图片随机显示 CloseCW 方便的插入一个关闭当前...
一个弹出日历表格,用以确保输入的日历是按照特定的格式进行输入的,主要特色包括:日历链接,按照需要的方式设定日历的格式,按照需要可以在日期项目间增加分隔符等等功能 MX95982_shortcutIconOB_v1 插入.icon图标...
例如,添加一个触发弹出对话框的按钮: ```html ()">打开对话框 ``` ```javascript function showDialog() { $('#dialog').dialog('open'); } ``` 在实际开发中,我们还需要处理用户操作的事件,比如表单提交、...
- **交互逻辑**: 在用户点击某些元素时触发进一步的动作,例如关闭弹出框或打开子菜单等。 - **示例**: ```javascript function OpenSubColumn(id, name, dvID) { // 进一步处理逻辑 } function hiddenLayer...
如果做很多弹出窗口的话,这个插件比DW自带的open browser window方便一些 mxp/一些Flash Button,一共7款 mxp/Winamp和Dreamweaver都是软件中的精品,有了这个插件,你可以方便的在DW中控制Winamp。边工作,边听...