`

extjs4使用google map

阅读更多
首先引入JS

   
<script src="../ext4/examples/ux/GMapPanel.js"></script>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=zh-CN"></script>


其中GMapPanel.js是extjs中自带的,代码是
/**
 * @author Shea Frederick
 */
Ext.define('Ext.ux.GMapPanel', {
    extend: 'Ext.panel.Panel',
    
    alias: 'widget.gmappanel',
    
    requires: ['Ext.window.MessageBox'],
    
    initComponent : function(){
        Ext.applyIf(this,{
            plain: true,
            gmapType: 'map',
            border: false
        });
        
        this.callParent();        
    },
    
    afterFirstLayout : function(){
        var center = this.center;
        this.callParent();       
        
        if (center) {
            if (center.geoCodeAddr) {
                this.lookupCode(center.geoCodeAddr, center.marker);
            } else {
                this.createMap(center);
            }
        } else {
            Ext.Error.raise('center is required');
        }
              
    },
    
    createMap: function(center, marker) {
        var options = Ext.apply({}, this.mapOptions);
        
        options = Ext.applyIf(options, {
            zoom: 14,
            center: center,
            mapTypeId: google.maps.MapTypeId.HYBRID
        });
        this.gmap = new google.maps.Map(this.body.dom, options);
        if (marker) {
            this.addMarker(Ext.applyIf(marker, {
                position: center
            }));
        }
        
        Ext.each(this.markers, this.addMarker, this);
        this.fireEvent('mapready', this, this.gmap);
    },
    
    addMarker: function(marker) {
        marker = Ext.apply({
            map: this.gmap
        }, marker);
        
        if (!marker.position) {
            marker.position = new google.maps.LatLng(marker.lat, marker.lng);
        }
        var o =  new google.maps.Marker(marker);
        Ext.Object.each(marker.listeners, function(name, fn){
            google.maps.event.addListener(o, name, fn);    
        });
        return o;
    },
    
    lookupCode : function(addr, marker) {
        this.geocoder = new google.maps.Geocoder();
        this.geocoder.geocode({
            address: addr
        }, Ext.Function.bind(this.onLookupComplete, this, [marker], true));
    },
    
    onLookupComplete: function(data, response, marker){
        if (response != 'OK') {
            Ext.MessageBox.alert('Error', 'An error occured: "' + response + '"');
            return;
        }
        this.createMap(data[0].geometry.location, marker);
    },
    
    afterComponentLayout : function(w, h){
        this.callParent(arguments);
        this.redraw();
    },
    
    redraw: function(){
        var map = this.gmap;
        if (map) {
            google.maps.event.trigger(map, 'resize');
        }
    }
 
});


显示google map的代码是

var mapOptions =
        {
            zoom: 7, //缩放级别 可以使用 0(最低缩放级别,在地图上可以看到整个世界)到 19(最高缩放级别,可以看到独立建筑物)之间的缩放级别
            center: new google.maps.LatLng(23, 114), //将地图的中心设置为指定的地理点
            mapTypeId: google.maps.MapTypeId.ROADMAP,   //ROADMAP - 默认视图 SATELLITE-显示Google地球卫星图像 HYBRID-混合显示普通视图和卫星视图 TERRAIN-地形图
            scaleControl: true,    //比例尺
            mapTypeControl: true
        };
        var mapPanel = Ext.create('Ext.ux.GMapPanel',{
            title:'Google Map',
            name:'pic',
            height:500,
            align:'center',
            width:this.mapWidth,
            mapOptions:mapOptions
        });
        var items = [
            container,mapPanel
        ];
        var formPanel = Ext.create('Ext.form.Panel',{
            layout:'form',
            buttonAlign:'center',
            bodyStyle: 'background:white; padding:10px;',
            labelAlign:'right',
            border:false,
            items:items,
            buttons:[{text:'保存',iconCls:'save',name:'save',parent:this},
                {text:'关闭',iconCls:'cancel',parent:this,handler:function(){
                    window.AddAdWindow.hide();
                    var form = this.up('form').getForm();
                }}]
        });

在地图中添加标记,并将经纬度读取到文本框中
registerAction:function(){
        var me = this;
        var map = me.down('gmappanel').gmap;
        if(map){
            if(!this.marker){
                this.marker = new google.maps.Marker({
                    position: map.getCenter(),
                    map: map,
                    draggable: true,
                    title: "position"
                });
                var marker = this.marker;
                google.maps.event.addListener(marker, "dragend", function(event) {
                    var latLng = event.latLng;
                    var picField = me.down('textfield[name=pic]');
                    if(picField){
                        picField.setValue(latLng.lat()+":"+latLng.lng())
                    }
                    console.log(latLng.lat()+":"+latLng.lng()+":"+map.getZoom());
                });
            }
        }
    }


设置地图中的标记位置


                    this.marker.setPosition(new google.maps.LatLng(x, y));
                    this.down('gmappanel').gmap.setCenter(new google.maps.LatLng(x, y));
分享到:
评论

相关推荐

    Ext Google Map 简易开发框架

    开发者可以解压后研究其结构,学习如何将ExtJs和Google Maps API结合使用,从而提升自己的地图应用开发能力。总的来说,Ext Google Map简易开发框架为开发者提供了一个高效、灵活的工具,用于构建具有高级功能的交互...

    Extjs google map调用

    当我们需要在ExtJS应用中集成Google Map时,就需要理解如何调用Google Map API以及如何与ExtJS组件进行交互。 首先,让我们了解一下在ExtJS中调用Google Map的基本步骤: 1. **引入Google Maps API**:在HTML页面...

    Extjs4.2添加谷歌地图

    在本文中,我们将深入探讨如何在ExtJS 4.2框架中集成并使用谷歌地图,实现地图标注和定位功能。ExtJS是一个强大的JavaScript组件库,它允许开发人员创建丰富的、交互式的Web应用程序。通过集成谷歌地图API,我们可以...

    Extjs google maps添加标记,还支持中文

    4. **处理中文地址**:如果你需要将中文地址解析为经纬度,可以使用Google Maps的`Geocoder`服务。先创建一个`Geocoder`实例,然后调用`geocode`方法,传入包含中文地址的对象: ```javascript var geocoder = new ...

    extjs json所需jar包

    4. **Json-lib**: 这是一个Java JSON库,提供了多种框架(如Spring、Hibernate、EJB等)的集成,以及对XML、JavaBean、Collections、Map等类型的JSON转换支持。 5. **org.extjs.extjs**: 这可能是ExtJS自身的Java...

    搭建简单的EXT-GWT(GXT)的开发环境(四)ext-gwt(gxt)结合google map第三版开发

    它基于Google Web Toolkit (GWT),提供了丰富的UI组件和功能,使得开发者可以使用Java语言来编写前端代码,然后由GWT编译器转换为优化过的JavaScript。在本篇内容中,我们将探讨如何搭建一个简单的EXT-GWT(GXT)...

    campus-map-tech:列出交互式校园地图及其使用的主要技术

    传单 + Mapbox + TileMill + OSM :传单 + Mapbox + TileMill + OSM :OpenLayers + OSM / Leaflet + OSM : TileMill :OpenLayers + OSM :OpenLayers + OSM :OpenLayers + ExtJS谷歌地图校园地图使用谷歌地图...

    Ext5OpenLayers3:Sencha Architect + ExtJS 5.0 with OpenLayers 3.1.1 示例应用程序

    - **地图集成**:应用中的核心功能是地图展示,这通过OpenLayers实现,可以加载不同地图服务,例如Google Maps、Bing Maps或OpenStreetMap。 - **交互性**:用户可以进行缩放、平移、图层切换等操作,增强用户体验。...

    ExtApp:ExtApp是一个基于三层架构,使用NHibernate,API Controller和ExttJs创建的,用于简化政府和企业应用开发的Web应用程序框架

    不再使用ExtJs模块加载器,替换使用导入和导出约会和转换模块,并使用rollup.js将所有js文件打包。删除不符合时代潮流的经典风格,专注于现代风格,并修改cs尝试向Google物料设计风格靠拢。所有图标不再使用图片,...

    百万商业圈 .NET 开发框架及开发框架API说明书 核心库

    框架核心API库 包括:常用加密解密,缓存集群,IP地址库,Html Parse,金额转换,GoogleMap Api,Google PR,ImageMagick(图片处理),SharpZipLib压缩解压缩,中文分词核心库 2、WebSystem.Framework.dll 框架核心...

    课程讲解文档

    - **GWT (Google Web Toolkit)**: GWT是一个用于编写高性能Web应用程序的开发工具包,支持使用Java语言开发前端程序,并编译成JavaScript。 - **ExtJS**: ExtJS是一个基于jQuery的企业级前端框架,提供了丰富的UI...

    JBob开发手册

    - **客户端浏览器**:兼容IE6及以上版本(建议使用IE7及以上)、Mozilla Firefox、Google Chrome等浏览器,确保了用户体验的一致性和兼容性。 **1.3 技能要求** - **Java基础知识**:熟悉Java面向对象编程的基本...

Global site tag (gtag.js) - Google Analytics