`
jjxliu306
  • 浏览: 156012 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

openlayer4 弹出框封装

    博客分类:
  • GIS
阅读更多

 很多场景需要在地图上弹出一个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

 

 

 

  • 大小: 87.1 KB
0
0
分享到:
评论

相关推荐

    弹出层表单提交数据完美解决

    在网页设计和开发中,用户交互的一个常见场景是通过弹出层(modal)表单来收集数据。这种设计模式能够提供一种不打断整体用户体验的方式来获取信息,如注册、登录、编辑或确认操作。本文将详细讲解如何实现弹出层...

    Openlayers扩展右键菜单

    可以使用弹出框(`popup`)或者浮动元素(`div`)来实现。菜单项可以是链接或按钮,每个都绑定到一个处理函数。 4. **样式覆盖**:描述中提到,样式可以自行覆盖调整。这意味着开发者可以使用CSS来定制菜单的外观,...

    SSM框架JSP使用Layui实现layer弹出层效果

    在SSM(Spring、SpringMVC、MyBatis)框架中,使用JSP页面和Layui前端框架来实现layer弹出层效果是常见的做法,这样可以为用户提供更好的交互体验。Layui是一款轻量级的前端组件库,其中的layer模块提供了丰富的弹窗...

    基于layui点击按钮弹出包含表单的窗口

    layui的每个功能都被封装为一个模块,例如`form`模块用于处理表单操作,`layer`模块则用于弹窗功能。在使用前,我们需要通过`layui.use()`方法引入这些模块。 1. 引入layui库: 在HTML文件头部引入layui的CSS和JS...

    在layer弹出层中通过ajax返回html拼接字符串填充数据的方法

    在本例中,我们需要在Layer弹出层中显示一组复选框(Checkbox),这些复选框的数据来自服务器。由于视图(View)中无法直接处理复杂的业务逻辑,因此我们选择在用户点击编辑按钮时,通过Ajax向服务器发送请求获取所...

    openlayers3点选、框选、多边形选择demo

    如果重合,就选择该要素并触发相应的操作,例如高亮显示或弹出信息窗口。点选通常适用于选择特定的点状要素,如标记、图标等。 2. **框选(Rectangle Selection)**: 框选允许用户通过拖动鼠标绘制一个矩形框,...

    C# 弹出Loading遮罩层

    在C#编程中,"弹出Loading遮罩层"是一个常见的功能需求,特别是在进行异步操作或者长时间数据加载时,为了提升用户体验,我们会显示一个遮罩层,通常带有"加载中"或"请稍候"的提示信息。下面将详细解释如何在C#中...

    layui 弹出层值回传解决方式

    4. 处理返回的数据,如`console.log(res)`,然后关闭弹出层`layer.close(index)`。 通过这种方式,我们可以方便地在弹出层与主页面之间传递数据,实现更灵活的功能交互。这种机制在处理表单提交、数据验证、用户...

    利用layer实现表单完美验证的方法

    弹出提示错误 function qxMsg(msgStr) { layer.open({ type: 1, title: '提示消息', offset: '10%;', content: '&lt;div xss=removed&gt;'+msgStr+'&lt;/div&gt;', btn: '关闭', btnAlign: 'c', shade: 0.2, yes: ...

    layui 实现二级弹窗弹出之后 关闭一级弹窗的方法

    本篇文章将详细介绍如何使用 Layui 实现二级弹窗弹出后自动关闭一级弹窗的方法,这对于构建多层交互的页面逻辑尤为重要。 首先,我们需要理解 Layui 弹窗的工作原理。Layui 的弹窗组件是基于 iframe 或 div 实现的...

    Jquery 弹出层插件实现代码

    - 直接初始化并打开弹出层:`$("#buttonID").layer().open();` - 初始化弹出层对象后打开:`var layer = $("#buttonID").layer(); layer.open();` - 初始化弹出层对象时传入自定义配置后打开:`var layer = $("#...

    layui加载表格,绑定新增,编辑删除,查看按钮事件的例子

    - 使用了`layer.open`方法来创建一个弹出层,其中包括保存和取消按钮,点击保存会执行指定的保存函数。 - 为了防止弹出层重复打开,使用时间戳作为弹出层的ID。 2. **createTable方法**: - 这个方法用于初始化...

    使用layer弹窗和layui表单实现新增功能

    Layer是一个基于jQuery的弹出层插件,支持页面内生成弹窗效果,如模态框、信息提示框、iframe页面等。在本文中,layer被用于创建一个包含表单的模态窗口。配置项中的`type:1`指定了弹窗类型为模态框;`title`用于...

    70款经典Dreamweaver插件

    Open_Browser_Window+ 操作弹出式窗口升级版 StyleApplier 表格的鼠标触发效果 checkform 表单验证插件 Realplayer 嵌入网页Real播放器插件 BannerImageBuilder 创建多图片随机显示 CloseCW 方便的插入一个关闭当前...

    Dreamweaver 插件集

    一个弹出日历表格,用以确保输入的日历是按照特定的格式进行输入的,主要特色包括:日历链接,按照需要的方式设定日历的格式,按照需要可以在日期项目间增加分隔符等等功能 MX95982_shortcutIconOB_v1 插入.icon图标...

    Easy-Ui后台搭建

    例如,添加一个触发弹出对话框的按钮: ```html ()"&gt;打开对话框 ``` ```javascript function showDialog() { $('#dialog').dialog('open'); } ``` 在实际开发中,我们还需要处理用户操作的事件,比如表单提交、...

    用Ajax结合div来实现的查询控件

    - **交互逻辑**: 在用户点击某些元素时触发进一步的动作,例如关闭弹出框或打开子菜单等。 - **示例**: ```javascript function OpenSubColumn(id, name, dvID) { // 进一步处理逻辑 } function hiddenLayer...

    400个DreamWeaver插件

    如果做很多弹出窗口的话,这个插件比DW自带的open browser window方便一些 mxp/一些Flash Button,一共7款 mxp/Winamp和Dreamweaver都是软件中的精品,有了这个插件,你可以方便的在DW中控制Winamp。边工作,边听...

Global site tag (gtag.js) - Google Analytics