`
ninggy
  • 浏览: 114662 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

GeoExt的使用

阅读更多

GeoExt是一款结合openlayers和Extjs的gis前端框架。目前支持openlayers2.10和Ext3.2.

下载地址:http://geoext.org/index.html

下面是用GeoExt改写的一个小的例子:

 

js代码:

 

/**
 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
 * 
 * Published under the BSD license.
 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
 * of the license.
 */

/** api: example[mappanel-div]
 *  Map Panel
 *  ---------
 *  Render a map panel in any block level page element.
 */

var mapPanel,map;

Ext.onReady(function() {
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
  var bounds = new OpenLayers.Bounds(113.235,23.04,113.416,23.12);

     map = new OpenLayers.Map();
    var layer = new OpenLayers.Layer.WMS(
        "Global Imagery",
        "http://maps.opengeo.org/geowebcache/service/wms",
        {layers: "bluemarble"}
    );

    map.addLayer(layer);

 map.addControl(new OpenLayers.Control.LayerSwitcher());

  map.addControl(new OpenLayers.Control.Navigation());
  map.addControl(new OpenLayers.Control.Scale($('scale')));
  map.addControl(new OpenLayers.Control.MousePosition({
        element : $('location')
      }));
  map.addControl(new OpenLayers.Control.OverviewMap());
  map.addControl(new OpenLayers.Control.ScaleLine());

 var simple = new Ext.FormPanel({
        labelWidth: 60, // label settings here cascade unless overridden
        url:'save-form.php',
        frame:true,
        title: '',
        bodyStyle:'padding:5px 5px 0',
        width: 350,
        defaults: {width: 230},
        defaultType: 'textfield',

        items: [{
                fieldLabel: '演示速度',
                name: 'first',
                width:50,
                allowBlank:true
            },{
                fieldLabel: '轨迹速度',
                width:50,
                name: 'last'
            }
        ],

        buttons: [{
            text: '确定',
                handler:function(){win.hide();}
        },{
            text: '取消',
                handler:function(){win.hide();}
        }]
    });
   win = new Ext.Window({
                layout:'fit',
                width:200,
                height:150,
								title:'速度设置',
								draggable:false,
    						resizable : false,
                closeAction:'hide',
                plain: true,
                items: [simple]   
            });
    mapPanel = new GeoExt.MapPanel({
        title: "GeoExt MapPanel",
        renderTo: "mappanel",
        stateId: "mappanel",
        height: 600,
        width: 1000,
        map: map,

        center: new OpenLayers.LonLat(113.31898,23.08618),//two
        zoom: 18,
				//extent: bounds,//one
        // getState and applyState are overloaded so panel size
        // can be stored and restored
   items:[{
            xtype: 'button',
            id: 'basic-button',
						style :'position: absolute; z-index: 1000; right: 15px; top: 5px; left: auto;',
            text: '设置',
						handler:function (b){
								win.x=b.el.dom.offsetParent.offsetWidth+b.el.dom.offsetParent.offsetLeft-230;
								win.y=b.el.dom.offsetParent.offsetTop+30;
						if(!win.isVisible()){
								win.show();
						}else{
								win.hide();
						}

						}
        }],

        getState: function() {
            var state = GeoExt.MapPanel.prototype.getState.apply(this);
            state.width = this.getSize().width;
            state.height = this.getSize().height;
            return state;
        },
        applyState: function(state) {
            GeoExt.MapPanel.prototype.applyState.apply(this, arguments);
            this.width = state.width;
            this.height = state.height;
        }
    });
});

// functions for resizing the map panel
function mapSizeUp() {
    var size = mapPanel.getSize();
    size.width += 40;
    size.height += 40;
    mapPanel.setSize(size);
    map.setCenter(new OpenLayers.LonLat(113.31898,23.08618), 0);
}
function mapSizeDown() {
    var size = mapPanel.getSize();
    size.width -= 40;
    size.height -= 40;
    mapPanel.setSize(size);
}
var selectControl,vectors;
function mapAddLayer(){
var v_style =  new OpenLayers.StyleMap({
                        "default": {
														strokeOpacity: 1,
														strokeWidth: 1,
														pointRadius: 6,
                            fillOpacity:1
                        },
                        "select": {
                            cursor: "pointer",
														strokeColor: "blue",
														fillColor: "blue"                   
                        }
                    });
            vectors = new OpenLayers.Layer.Vector(
                "layer1",
                {
					visibility : true,
                    styleMap: v_style
                }
            );
				map.addLayer(vectors);
        selectControl= new OpenLayers.Control.SelectFeature(
                vectors, {clickout: true, toggle: false,
                    multiple: false, hover: false});
            map.addControl(selectControl);
            selectControl.activate();
				var pointFeature = new OpenLayers.Feature.Vector(
		         new OpenLayers.Geometry.Point(113.31898,23.0861));//
				var pFeature = new OpenLayers.Feature.Vector(
		         new OpenLayers.Geometry.Point(113.32898,23.0861));//
				vectors.addFeatures([pointFeature,pFeature]);


    // create popup on "featureselected"
    vectors.events.on({
        featureselected: function(e) {
            createPopup(e.feature);
        },
  featureunselected :function(e){
			popup.destroy();
			popup = null;
}
    });
}

    var bogusMarkup = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.";
    function createPopup(feature) {
        popup = new GeoExt.Popup({
            title: 'My Popup',
            location: feature,
            width:200,
            html: bogusMarkup,
            maximizable: true,
						unpinnable: false,
            collapsible: true
        });
        // unselect feature when the popup
        // is closed
        popup.on({
            close: function() {
                    selectControl.unselect(feature);
                if(OpenLayers.Util.indexOf(vectors.selectedFeatures,
                                           this.feature) > -1) {
										popup = null;
                }
            }
        });
        popup.show();
    }

 html页面代码:

 

<html>
    <head>
        <title>GeoExt MapPanel Example</title>

        <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.2.1/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.2.1/ext-all.js"></script>
        <link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-3.2.1/resources/css/ext-all.css" />
        <link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-3.2.1/examples/shared/examples.css" />
        <script src="http://www.openlayers.org/api/2.10/OpenLayers.js"></script>
        <script type="text/javascript" src="../script/GeoExt.js"></script>

        <script type="text/javascript" src="mappanel-div.js"></script>

    </head>
    <body>
        <h1>GeoExt.MapPanel with an Existing OpenLayers.Map</h1>
        <p>This example shows the how to create a MapPanel with a map that has
        already been created.  See <a href="mappanel-window.html">mappanel-window.html</a>
        for an example that creates the MapPanel without creating the map first.<p>
        <p>This example makes use of a <code>CookieProvider</code>. The <code>MapPanel</code>
        being a stateful component, if you reload the page the map should be
        at the same location as previously. Also the <code>getState</code> and
        <code>applyState</code> methods are overloaded so the size of the map
        panel is also restored when refreshing the page.</p>
        <p>The js is not minified so it is readable. See <a href="mappanel-div.js">mappanel-div.js</a>.</p>
        <div id="mappanel"></div>
        <input type="button" onclick="mapSizeUp()" value="bigger"></input>
        <input type="button" onclick="mapSizeDown()" value="smaller"></input>
        <input type="button" onclick="mapAddLayer()" value="addlayer"></input>
    </body>
</html>

 效果图:


  • 大小: 116.3 KB
分享到:
评论
1 楼 ka520888 2015-07-26  
帅哥,这个地图是直接使用网上的GOOGLE地图资源么?
另外,这个地图支持那些浏览器,支持IE不。

相关推荐

    前端项目-geoext.zip

    【标题】"前端项目-geoext.zip"是一个包含前端开发资源的压缩包,重点在于将地理信息系统(GIS)的功能与Ext-JS库相结合,...对于想要学习或使用GeoExt的人来说,深入理解这些知识点将有助于他们更好地利用这个工具。

    GeoExt-release-0.6.zip

    7. **查询和过滤**: 开发者可以使用GeoExt创建复杂的查询表单,允许用户根据指定条件筛选地图数据。这在数据分析和决策支持场景中非常有用。 8. **打印和导出**: GeoExt支持地图的打印和导出功能,用户可以将当前...

    基于GeoExt的应用程序的高级组件。_JavaScript_HTML_下载.zip

    这个分支可能包含了源代码、示例、文档等资源,帮助开发者理解和使用GeoExt库。要开始使用这些资源,你需要: 1. **解压文件**:首先,你需要解压“基于GeoExt的应用程序的高级组件。_JavaScript_HTML_下载.zip”到...

    GeoDashBoard:ExtJS 6仪表板上的GeoExt 3示例

    为了显示基于GeoExt 3的面板,在添加了一个新条目: { text: 'GeoExt 3', view: 'geo.MapPanel', leaf: true, iconCls: 'x-fa fa-globe', routeId: 'map' }测试要在本地测试应用程序,可以使用以下命令运行本地...

    开源WebGIS

    在使用GeoExt时,开发者可以利用其丰富的API和预定义的组件,快速构建出具有地图导航、图层管理、查询、编辑等功能的WebGIS应用。例如,GeoExt.MapPanel类可以帮助我们创建一个包含地图的基本面板,GeoExt.data....

    GXC:基于ExtJS 4,GeoExt 2和OpenLayers 2的WebGIS客户端库

    GeoExt 2.0.3 GeoExt是用于Web制图应用程序的丰富工具包,为OpenLayers数据结构添加了ExtJS组件。 它是ExtJS和OpenLayers之间的结合点。 DeftJS DeftJS在ExtJS中添加了一个IoC容器,该容器是GXC.App类的基础。 注册...

    基于openlayer geoserver在线编辑

    - **使用GeoExt增强OpenLayers**:GeoExt是一个基于OpenLayers和ExtJS的JavaScript库,用于构建复杂的应用程序界面。 #### 总结 通过本文档的学习,您将能够掌握如何利用OpenLayers、GeoServer和PostGIS构建一个...

    heron-mc:Heron Mapping Client(以前为Google Code的geoext-viewer)

    如果您安装了Python,则可以运行一个简单的HTTP服务器并从您的计算机( http:// localhost:8000 )开始使用Heron。 见苍鹭/startheron。* 对于开发人员 要构建一个版本,请转到heron / build并在那里阅读说明,...

    pgRouting文档

    这部分介绍了如何使用 **GeoExt** 来实现浏览器端的应用开发。 ##### 9.1 路由方法选择 用户可以选择不同的路由算法来获得不同的结果。 ##### 9.2 选择起始和终点 允许用户在地图上选择起点和终点,或者通过输入...

    openLayers geoserver常见问题

    解析XML在OpenLayers中通常使用JavaScript的内置DOM解析器,例如`document.createElement`, `getElementsByTagName`, `getAttribute`等方法,或者使用jQuery等库简化操作。 关于OpenLayers的popup(弹窗),可以...

    mapknitter-源码.rar

    例如,它使用`OpenLayers.Format.KML`处理KML格式的数据,支持导入和导出地理标记。通过`OpenLayers.Projection`进行坐标系转换,确保不同来源的地图数据可以在同一坐标系统下正确叠加。 在实际应用中,我们可以...

    OPS-GEOPORTAL:OPS项目JavaScriptGeoExt GeoPortal组件

    JavaScript是一种广泛使用的客户端脚本语言,尤其在Web开发中,它允许动态更新内容,实现用户与网页的实时交互。在GIS领域,JavaScript库如OpenLayers、GeoExt等被广泛用于构建交互式地图应用,它们提供了丰富的地图...

    gis影像图下载 图新地球自定义图源.rar

    图新地球是一款基于开源GIS项目OpenLayers和GeoExt开发的桌面应用,它提供了一种直观的方式来浏览和操作地图数据,包括卫星影像、地形图等。自定义图源是用户根据自身需求创建或收集的地图数据源,这些数据源可以是...

    flex for GIS框架(非esri官网框架)

    在实际开发中,开发者通常会结合使用Flex for GIS框架和其他GIS库,如OpenLayers或GeoExt,来实现更复杂的功能。同时,需要注意的是,由于Adobe已经停止了对Flex的官方支持,因此在选择使用Flex for GIS框架时,需要...

    OpenLayers.2.10.Beginners.Guide

    13. **扩展与进阶**:最后,可能会介绍一些高级主题,如OpenLayers与其他库(如GeoExt、Leaflet)的集成,或者如何使用OpenLayers构建复杂的Web GIS应用。 通过《OpenLayers 2.10 初学者指南》,读者将能够逐步掌握...

    proj4js-1.0.1.zip

    此外,Proj4js还支持与OpenLayers、GeoExt等开源GIS库集成,提供更强大的地图操作和可视化功能。它简化了地理空间数据在Web上的处理流程,让开发者无需深入理解复杂的地理坐标系统理论,就能构建出功能丰富的地理...

    WebGIS从基础到开发实践

    2. **WebGIS架构**:介绍WebGIS的典型架构,如客户端-服务器模型,以及流行的WebGIS框架,如OpenLayers、Leaflet、GeoExt等。 3. **GIS数据处理**:讨论地理数据的类型、格式,如Shapefile、GeoJSON、KML等,以及...

    visorCatastroCol:哥伦比亚多用途地籍的观众

    哥伦比亚多用途地籍的观众该地图查看器是在哥伦比亚多用途地籍试验项目的背景下开发的,其主要目的是通过多用途方法建立农村和城市地籍运作... 该查看器是使用JavaScript库OpenLayers 4 , ExtJS 6.2.0和GeoExt 3.1开发

    WebGIS-workshop:Gadjah Mada 大学 WebGIS Workshop 的 Sphinx 文档

    4. **WebGIS框架**:了解如GeoExt、Mapbox GL JS等框架,它们提供了一套完整的工具和组件,简化了WebGIS应用的开发。 5. **Sphinx使用**:学习如何利用Sphinx创建清晰、结构化的文档,包括定义项目结构、编写...

Global site tag (gtag.js) - Google Analytics