`
lozpeng
  • 浏览: 39490 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ext.Panel 集成OpenLayers.Map

阅读更多
在使用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);
		}
	}
});
分享到:
评论
1 楼 wqrtx 2012-05-17  
为什么不行啊。。。。this.map.render(this.body.dom);  好像没执行

相关推荐

    PyPI 官网下载 | collective.geo.openlayers-0.2.tar.gz

    今天我们将聚焦于一个特定的包——`collective.geo.openlayers-0.2.tar.gz`,这是一个在PyPI上可下载的资源,主要用于集成OpenLayers地图库到Zope和Plone内容管理系统中的Python项目。 `collective.geo.openlayers`...

    Openlayers扩展插件ol-ext ,2022年4月版本v3.2.23

    8. **兼容性和API**:ol-ext与OpenLayers保持良好的兼容性,开发者可以轻松地将现有的OpenLayers代码集成到ol-ext中。其API设计友好,方便开发者理解和使用。 9. **文档和示例**:ol-ext通常会提供详尽的文档和丰富...

    yingyan.rar_openlayers

    我们需要了解`OpenLayers.Control.OverviewMap`类的工作原理,以及如何定制它的样式和行为。 3. **HTML布局**:"MapQuest.html"可能是实现鹰眼控件的示例页面,开发者需要掌握HTML和CSS,以便正确地在页面上布局...

    openlayers中文.rar

    OpenLayers 是一个强大的开源JavaScript库,用于在网页上创建交互式的地图应用。它支持多种地图数据源,包括WMS、WMTS、TMS、GeoJSON等,使得开发者能够轻松地将地理信息集成到Web应用中。这个"openlayers中文.rar...

    openlayers热力图用heatmap.js

    `heatmap.js` 是基础库,而`heatmap-openlayers.js` 可能是专门为OpenLayers定制的一个版本,它可能包含了将heatmap.js集成到OpenLayers的特定函数或适配器。 下面是如何使用OpenLayers和heatmap.js创建热力图的...

    openlayers案例demo(详细注释)

    OpenLayers应用通常由几个关键部分组成:地图(Map)对象、图层(Layer)对象、控件(Control)以及视图(View)。地图对象是应用的核心,它管理着图层、控件和视图。图层对象代表地图上的数据源,而视图则定义了地图的显示...

    openlayers中文api.zip

    OpenLayers 是一个强大的开源JavaScript库,专用于在Web上创建交互式地图应用。这个"openlayers中文api.zip"文件包含了OpenLayers中文版的API文档,为开发者提供了详细且易懂的指南,帮助他们更好地理解和使用这个库...

    openlayers : ol.js、ol.css 下载

    它支持多种数据源,包括WMS、WMTS、TMS、GeoJSON等,使得开发者能够轻松地将地理信息集成到网页中。`ol.js`是OpenLayers的核心JavaScript库,包含了所有的地图渲染、图层管理、交互操作等功能;而`ol.css`则是配套的...

    基于Openlayers的业务功能型二次开发地图库API源码+项目说明.zip

    基于Openlayers的业务功能型二次开发地图库,集成包括**地图底图控制**、**地图鼠标样式控制**等功能,这些功能可通过*插件*方式按需引入到地图库统一入口类WebMap中。 基于Openlayers的业务功能型二次开发地图库...

    openlayers.github.io:OpenLayers网站基础架构

    OpenLayers网站构建实用程序使用main的更新来更新站点要求您已安装和 。 当前,构建网站还需要所有openlayers。 # only once: clonegit clone -b build ... 这将从openlayers存储库的main分支中更新站点文档和示例。...

    openLayers-API中文版.zip

    2. **地图服务兼容性**:它可以与多种地图服务提供商集成,如Google Maps、Bing Maps、MapQuest、OpenStreetMap等,也可以直接使用WMS(Web Map Service)和WMTS(Web Map Tile Service)。 3. **丰富的地图操作**...

    openlayers js库,最新版

    OpenLayers 是一个强大的开源JavaScript库,专为构建交互式的、基于Web的地图应用...通过下载提供的压缩包文件"v4.6.4-dist",你可以快速地将这个最新版本的OpenLayers集成到你的项目中,享受其带来的便利和性能优势。

    JAVA+GeoServer+OpenLayers.zip_Openlayers java_geoserver_idae开发

    Java+OpenLayers3+GeoServer 二次开发应用

    OpenLayers v5.3.0 release

    OpenLayers 是一个强大的开源JavaScript库,专为在Web上创建交互式地图应用而设计。它支持多种地图数据源,包括WMS、WMTS、TMS等服务,以及GeoJSON和KML等本地格式。OpenLayers v5.3.0是这个库的一个重要版本更新,...

    OpenLayers6.rar

    这个文件中包含了 Openlayers6.2.1 版本的部分功能示例代码,详细教程请参考文章:https://blog.csdn.net/Supreme_Sir/article/details/105123438

    基于openlayers3生成专题图

    ### 基于OpenLayers 3生成专题图 在地理信息系统(GIS)领域,专题图是一种重要的可视化工具,用于表达特定主题或现象的空间分布。...对于希望在GIS项目中集成专题图功能的开发者来说,这是一个非常有用的解决方案。

    vue集成openlayers加载geojson并实现点击弹窗教程

    本文实例为大家分享了vue+openlayers加载geojson并实现点击弹窗教程,供大家参考,具体内容如下 第一步:安装vue-cli cnpm install -g @vue/cli 第二步:新建一个项目 1.新建项目 (vue-openlayers为项目...div id=map

    openlayers教程

    openlayers的类与方法.doc OpenLayers技术研究参考文档.doc Openlayers加载wms.doc openlayers介绍.ppt openlayers开发.doc OpenLayers心得文档.doc openlayers资料1.doc OpenLayer源代码总体结构分析...OpenLayers.pdf

    Leaflet双屏对比

    5. **实现双屏对比功能**:为了同步两个Map实例的视图,我们需要监听一个Map实例的移动、缩放等事件,并将相应的变化应用到另一个Map实例。例如,可以监听`moveend`事件: ```javascript mapLeft.on('moveend', ...

Global site tag (gtag.js) - Google Analytics