openlayers中实现自定冒泡的效果
自定义的Openlayers.Popup.FreshCloud继承自Openlayers.Popup.Framed,实现了比较简洁的冒泡效果,详细代码如下
/**
* Class: OpenLayers.Popup.FramedCloud
*
* Inherits from:
* - <OpenLayers.Popup.Framed>
*/
OpenLayers.Popup.FreshCloud =
OpenLayers.Class(OpenLayers.Popup.Framed, { /**
* Property: contentDisplayClass
* {String} The CSS class of the popup content div.
*/
contentDisplayClass: "olFreshCloudPopupContent", /**
* APIProperty: autoSize
* {Boolean} Framed Cloud is autosizing by default.
*/
autoSize: true, /**
* APIProperty: panMapIfOutOfView
* {Boolean} Framed Cloud does pan into view by default.
*/
panMapIfOutOfView: true, /**
* APIProperty: imageSize
* {<OpenLayers.Size>}
*/
imageSize: new OpenLayers.Size(1276, 736), /**
* APIProperty: isAlphaImage
* {Boolean} The FramedCloud does not use an alpha image (in honor of the
* good ie6 folk out there)
*/
isAlphaImage: false, /**
* APIProperty: fixedRelativePosition
* {Boolean} The Framed Cloud popup works in just one fixed position.
*/
fixedRelativePosition: false, /**
* Property: positionBlocks
* {Object} Hash of differen position blocks, keyed by relativePosition
* two-character code string (ie "tl", "tr", "bl", "br")
*/
positionBlocks: {
"tl": {
'offset': new OpenLayers.Pixel(55, 0),
'padding': new OpenLayers.Bounds(5, 35, 5, 5),
'blocks': [
{ // top-left
size: new OpenLayers.Size('auto', 'auto'),
anchor: new OpenLayers.Bounds(0, 35, 5, 0),
position: new OpenLayers.Pixel(0, 0)
},
{ //top-right
size: new OpenLayers.Size(5, 'auto'),
anchor: new OpenLayers.Bounds(null, 35, 0, 0),
position: new OpenLayers.Pixel(-1271, 0)
},
{ //bottom-left
size: new OpenLayers.Size('auto', 5),
anchor: new OpenLayers.Bounds(0, 30, 5, null),
position: new OpenLayers.Pixel(0, -641)
},
{ //bottom-right
size: new OpenLayers.Size(5, 5),
anchor: new OpenLayers.Bounds(null, 30, 0, null),
position: new OpenLayers.Pixel(-1271, -641)
},
{ // stem
size: new OpenLayers.Size(42, 33),
anchor: new OpenLayers.Bounds(null, 0, 30, null),
position: new OpenLayers.Pixel(-5, -699)
}
]
},
"tr": {
'offset': new OpenLayers.Pixel(-50,0),
'padding': new OpenLayers.Bounds(5, 35, 5, 5),
'blocks': [
{ // top-left
size: new OpenLayers.Size('auto', 'auto'),
anchor: new OpenLayers.Bounds(0, 35, 5, 0),
position: new OpenLayers.Pixel(0, 0)
},
{ //top-right
size: new OpenLayers.Size(5, 'auto'),
anchor: new OpenLayers.Bounds(null, 35, 0, 0),
position: new OpenLayers.Pixel(-1271, 0)
},
{ //bottom-left
size: new OpenLayers.Size('auto', 5),
anchor: new OpenLayers.Bounds(0, 30, 5, null),
position: new OpenLayers.Pixel(0, -641)
},
{ //bottom-right
size: new OpenLayers.Size(5, 5),
anchor: new OpenLayers.Bounds(null, 30, 0, null),
position: new OpenLayers.Pixel(-1271, -641)
},
{ // stem
size: new OpenLayers.Size(42, 33),
anchor: new OpenLayers.Bounds(33, 0, null, null),
position: new OpenLayers.Pixel(-5, -699)
}
]
},
"bl": {
'offset': new OpenLayers.Pixel(52, 0),
'padding': new OpenLayers.Bounds(4, 4, 4, 35),
'blocks': [
{ // top-left
size: new OpenLayers.Size('auto', 'auto'),
anchor: new OpenLayers.Bounds(0, 5, 5, 30),
position: new OpenLayers.Pixel(0, 0)
},
{ //top-right
size: new OpenLayers.Size(5, 'auto'),
anchor: new OpenLayers.Bounds(null, 5, 0, 30),
position: new OpenLayers.Pixel(-1271, 0)
},
{ //bottom-left
size: new OpenLayers.Size('auto', 5),
anchor: new OpenLayers.Bounds(0, 0, 5, null),
position: new OpenLayers.Pixel(0, -641)
},
{ //bottom-right
size: new OpenLayers.Size(5, 5),
anchor: new OpenLayers.Bounds(null, 0, 0, null),
position: new OpenLayers.Pixel(-1271, -641)
},
{ // stem
size: new OpenLayers.Size(42, 32),
anchor: new OpenLayers.Bounds(null, null, 30, 2),
position: new OpenLayers.Pixel(-52, -697)
}
]
},
"br": {
'offset': new OpenLayers.Pixel(-50, 5),
'padding': new OpenLayers.Bounds(5, 5, 0, 35),
'blocks': [
{ // top-left
size: new OpenLayers.Size('auto', 'auto'),
anchor: new OpenLayers.Bounds(0, 5, 5, 30),
position: new OpenLayers.Pixel(0, 0)
},
{ //top-right
size: new OpenLayers.Size(5, 'auto'),
anchor: new OpenLayers.Bounds(null, 5, 0, 30),
position: new OpenLayers.Pixel(-1271, 0)
},
{ //bottom-left
size: new OpenLayers.Size('auto', 5),
anchor: new OpenLayers.Bounds(0, 0, 5, null),
position: new OpenLayers.Pixel(0, -641)
},
{ //bottom-right
size: new OpenLayers.Size(5, 5),
anchor: new OpenLayers.Bounds(null, 0, 0, null),
position: new OpenLayers.Pixel(-1275, -641)
},
{ // stem
size: new OpenLayers.Size(42, 32),
anchor: new OpenLayers.Bounds(30, null, null, 2),
position: new OpenLayers.Pixel(-52, -697)
}
]
}
}, /**
* APIProperty: minSize
* {<OpenLayers.Size>}
*/
minSize: new OpenLayers.Size(105, 10), /**
* APIProperty: maxSize
* {<OpenLayers.Size>}
*/
maxSize: new OpenLayers.Size(1200, 660), /**
* Constructor: OpenLayers.Popup.FramedCloud
*
* Parameters:
* id - {String}
* lonlat - {<OpenLayers.LonLat>}
* contentSize - {<OpenLayers.Size>}
* contentHTML - {String}
* anchor - {Object} Object to which we'll anchor the popup. Must expose
* a 'size' (<OpenLayers.Size>) and 'offset' (<OpenLayers.Pixel>)
* (Note that this is generally an <OpenLayers.Icon>).
* closeBox - {Boolean}
* closeBoxCallback - {Function} Function to be called on closeBox click.
*/
initialize: function (id, lonlat, contentSize, contentHTML, anchor, closeBox,
closeBoxCallback) { this.imageSrc = OpenLayers.Util.getImageLocation('fresh-popup-relative.gif');
OpenLayers.Popup.Framed.prototype.initialize.apply(this, arguments);
this.contentDiv.className = this.contentDisplayClass;
}, CLASS_NAME: "OpenLayers.Popup.FreshCloud"
});
JS文件地址:http://files.cnblogs.com/wanfeng/FreshCloud.js
图片地址: http://files.cnblogs.com/wanfeng/fresh-popup-relative.gif
openlayers中实现自定冒泡的效果的更多相关文章
- OpenLayers中的图层
OpenLayers有多个不同的图层类,每一个都可以连接到不同的地图服务器.例如通过Layer.WMS类可以连接到WMS地图服务器,通过Layer.Google类可以连接到谷歌地图服务器.OpenLa ...
- 理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();
原文地址:http://www.cnblogs.com/binyong/articles/1750263.html 这篇文章对于了解Javascript的事件处理机制非常好,将它全文转载于此,以备不时 ...
- 在WPF中使用PlaneProjection模拟动态3D效果
原文:在WPF中使用PlaneProjection模拟动态3D效果 虽然在WPF中也集成了3D呈现的功能,在简单的3D应用中,有时候并不需要真实光影的3D场景.毕竟使用3D引擎会消耗很多资源,有时候使 ...
- OpenLayers中的图层(转载)
作者:田念明出处:http://www.cnblogs.com/nianming/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法 ...
- WPF中的事件及冒泡事件和隧道事件(预览事件)的区别
WPF快速指导10:WPF中的事件及冒泡事件和隧道事件(预览事件)的区别 WPF快速指导10:WPF中的事件及冒泡事件和隧道事件(预览事件)的区别 本文摘要: 1:什么是路由事件: 2:中断事件路 ...
- openlayers中单击获取要素
openlayers中单击获取要素 分类专栏: GIS 总结 OpenLayers 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- Web 开发中很实用的10个效果【附源码下载】
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- 在IE6、IE7中实现块元素的inline-block效果
在IE6.IE7中实现块元素的inline-block效果有以下两种方法: 1先使用display:inline-block属性触发layout,然后再定义display:inline让块元素呈现内联 ...
- bootstrap中table页面做省市区级联效果(级联库见前面级联编辑)(非select下拉框)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
随机推荐
- Linux运维人员如何学习python编程
Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...
- ubuntu 配置vim(vimrc)
打开终端:ctrl+alt+t 进入vim文件:cd /etc/vim 打开vimrc文件:sudo gedit vimrc 然后在行末if语句前加上下面的内容," 这个符号为注释,后面内 ...
- Mac 使用 SSH 免密连接服务器
1.生成 SSH 秘钥 ssh-keygen -t rsa 生成的密钥对 id_rsa 和 id_rsa.pub,默认存储在 ~/.ssh 目录,其中没有后缀的是私有,有后缀 .pub 的为公钥.生 ...
- C++结构、共用体、枚举
一.结构 结构是C++OOP的基石.学习有关结构的知识僵尸我们离C++的核心OOP更近. 结构是用户定义的类型,同一个结构可以存储多种类型数据,这使得将一个事物的不同属性构成一个对象成为了可能.另外C ...
- OpenGL变换
概述 OpenGL变换矩阵 实例:GL_MODELVIEW矩阵 实例:GL_PROJECTION矩阵 概述 OpenGL管线中,在光栅化操作之前,包括顶点位置与法线向量的几何数据经顶点操作与图元装配操 ...
- 国内最新Unity3D视频教程合辑
麦子学院最新Unity3D视频教程上线啦,此为现目前国内最全.最新Unity3D教程,分享给广大小伙伴,希望对大家学习Unity3D有帮助: 第一阶段:Unity3D概要及入门 零基础学C#开发 Un ...
- Request.UrlReferrer
1:Request.UrlReferrer可以获取客户端上次请求的url,这样就可以实现类似“上一页”的功能等 2:刷新当前页面,不会改变Request.UrlReferrer的值 3:如果有A,B两 ...
- break,continue的使用
break,continue 使用break命令允许跳出所有循环下面的例子中,脚本进入死循环直至用户输入数字大于5.要跳出这个循环,返回到shell提示符下,就要使用break命令. #!/bin/b ...
- Android数据库的运用
很简单的应用,所以我直接简单明了. android中数据库的运用: 1.定义类继承SQLiteOpenHelper ps: public class DBHelper exten ...
- 在 Web 项目中应用 Apache Shiro
Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证.授权.加密.会话管理等功能.认证和授权为权限控制的核心,简单来说,"认证"就是证明你是谁? Web ...