在使用Extjs开发的时候,比较喜欢自己扩展一个类,将自己需要做的操作,已经定义等等都放在这一个类里面。那需要集成OpenLayers的地图的话,自然也想扩展一个类来集成地图。那么是做一个Ext.Panel的插件呢?还是就扩展一个Ext.Panel呢?这个主要看以后想怎么用Map对象。怎么做都是无所谓的。
扩展Ext.Panel来自定一个MapPanel试试看。
1.可以由先建立一个OpenLayers.Map对象传给MapPanel来使用,也可以由MapPanel自己来创建一个OpenLayers.Map对象,然后在通过MapPanel来添加图层。
2.建立Map对象之后将Map对象与MapPanel所管理的dom关联。
3.当MapPanel调整大小或状态之后Map对象同样需要进行相应的调整。
/**
* 可以通过事先创建一个OpenLayers.Map对象给本类,或者不建立,由iniComponent函数来创建
*/
Vgs.MapPanel = Ext.extend(Ext.Panel, {
map : null,
layers : null,
/**
* 实例化函数,在次判断所需的成员变量是否符合要求
*/
initComponent : function() {
if (this.map == null || !(this.map instanceof OpenLayers.Map))
this.map = new OpenLayers.Map();
Vgs.MapPanel.superclass.initComponent.call(this);
},
/**
* 将Map对象与Panel所依托的dom div 节点相关联。
*/
afterRender : function() {
Vgs.MapPanel.superclass.afterRender.apply(this, arguments);
if (this.map != null) {
this.map.render(this.body.dom);
}
},
// 处理响应Panel的resize事件,然后调整地图的大小
onResize : function() {
Vgs.MapPanel.superclass.onResize.apply(this, arguments);
if (this.map && this.map.updateSize)
this.map.updateSize();
},
// 当Panel关闭或删除的时候需要删除在initComponent 函数中新建的Map对象,避免内存溢出
beforeDestroy : function() {
// 判断Panel成员变量是由配置文件中传入的还是在initComponent
// 函数中新建,如果为后种情况,则需要将map对象delete.
if (!this.initialConfig.map
|| !(this.initialConfig.map instanceof OpenLayers.Map)) {
if (this.map && this.map.destroy) {
this.map.destroy();
}
}
delete this.map;
Vgs.MapPanel.superclass.beforeDestroy.apply(this, arguments);
},
/**向地图中添加地图图层
*
* @param {} lyr 地图图层对象 为OpenLayers.Layer或其子类的实例
*/
addLayer:function(lyr)
{
if(lyr instanceof OpenLayers.Layer && this.map instanceof OpenLayers.Map)
{
this.map.addLayer(lyr);
}
}
});
分享到:
相关推荐
今天我们将聚焦于一个特定的包——`collective.geo.openlayers-0.2.tar.gz`,这是一个在PyPI上可下载的资源,主要用于集成OpenLayers地图库到Zope和Plone内容管理系统中的Python项目。 `collective.geo.openlayers`...
8. **兼容性和API**:ol-ext与OpenLayers保持良好的兼容性,开发者可以轻松地将现有的OpenLayers代码集成到ol-ext中。其API设计友好,方便开发者理解和使用。 9. **文档和示例**:ol-ext通常会提供详尽的文档和丰富...
我们需要了解`OpenLayers.Control.OverviewMap`类的工作原理,以及如何定制它的样式和行为。 3. **HTML布局**:"MapQuest.html"可能是实现鹰眼控件的示例页面,开发者需要掌握HTML和CSS,以便正确地在页面上布局...
OpenLayers 是一个强大的开源JavaScript库,用于在网页上创建交互式的地图应用。它支持多种地图数据源,包括WMS、WMTS、TMS、GeoJSON等,使得开发者能够轻松地将地理信息集成到Web应用中。这个"openlayers中文.rar...
`heatmap.js` 是基础库,而`heatmap-openlayers.js` 可能是专门为OpenLayers定制的一个版本,它可能包含了将heatmap.js集成到OpenLayers的特定函数或适配器。 下面是如何使用OpenLayers和heatmap.js创建热力图的...
OpenLayers应用通常由几个关键部分组成:地图(Map)对象、图层(Layer)对象、控件(Control)以及视图(View)。地图对象是应用的核心,它管理着图层、控件和视图。图层对象代表地图上的数据源,而视图则定义了地图的显示...
OpenLayers 是一个强大的开源JavaScript库,专用于在Web上创建交互式地图应用。这个"openlayers中文api.zip"文件包含了OpenLayers中文版的API文档,为开发者提供了详细且易懂的指南,帮助他们更好地理解和使用这个库...
它支持多种数据源,包括WMS、WMTS、TMS、GeoJSON等,使得开发者能够轻松地将地理信息集成到网页中。`ol.js`是OpenLayers的核心JavaScript库,包含了所有的地图渲染、图层管理、交互操作等功能;而`ol.css`则是配套的...
基于Openlayers的业务功能型二次开发地图库,集成包括**地图底图控制**、**地图鼠标样式控制**等功能,这些功能可通过*插件*方式按需引入到地图库统一入口类WebMap中。 基于Openlayers的业务功能型二次开发地图库...
OpenLayers网站构建实用程序使用main的更新来更新站点要求您已安装和 。 当前,构建网站还需要所有openlayers。 # only once: clonegit clone -b build ... 这将从openlayers存储库的main分支中更新站点文档和示例。...
2. **地图服务兼容性**:它可以与多种地图服务提供商集成,如Google Maps、Bing Maps、MapQuest、OpenStreetMap等,也可以直接使用WMS(Web Map Service)和WMTS(Web Map Tile Service)。 3. **丰富的地图操作**...
OpenLayers 是一个强大的开源JavaScript库,专为构建交互式的、基于Web的地图应用...通过下载提供的压缩包文件"v4.6.4-dist",你可以快速地将这个最新版本的OpenLayers集成到你的项目中,享受其带来的便利和性能优势。
Java+OpenLayers3+GeoServer 二次开发应用
OpenLayers 是一个强大的开源JavaScript库,专为在Web上创建交互式地图应用而设计。它支持多种地图数据源,包括WMS、WMTS、TMS等服务,以及GeoJSON和KML等本地格式。OpenLayers v5.3.0是这个库的一个重要版本更新,...
这个文件中包含了 Openlayers6.2.1 版本的部分功能示例代码,详细教程请参考文章:https://blog.csdn.net/Supreme_Sir/article/details/105123438
### 基于OpenLayers 3生成专题图 在地理信息系统(GIS)领域,专题图是一种重要的可视化工具,用于表达特定主题或现象的空间分布。...对于希望在GIS项目中集成专题图功能的开发者来说,这是一个非常有用的解决方案。
本文实例为大家分享了vue+openlayers加载geojson并实现点击弹窗教程,供大家参考,具体内容如下 第一步:安装vue-cli cnpm install -g @vue/cli 第二步:新建一个项目 1.新建项目 (vue-openlayers为项目...div id=map
openlayers的类与方法.doc OpenLayers技术研究参考文档.doc Openlayers加载wms.doc openlayers介绍.ppt openlayers开发.doc OpenLayers心得文档.doc openlayers资料1.doc OpenLayer源代码总体结构分析...OpenLayers.pdf
5. **实现双屏对比功能**:为了同步两个Map实例的视图,我们需要监听一个Map实例的移动、缩放等事件,并将相应的变化应用到另一个Map实例。例如,可以监听`moveend`事件: ```javascript mapLeft.on('moveend', ...