ExtJS Google Map SetCenter错误

时间:2013-07-02 14:55:03

标签: google-maps extjs

    var layout = Ext.create('Ext.panel.Panel', {
                //renderTo: 'layout',
                width: window.innerWidth,
                height: window.innerHeight,
                //title: 'Border Layout', //no title will be blank
                layout: 'border',
                items: [{
                    title: 'Message List',
                    region: 'south',     // position for region
                    xtype: 'panel',
                    height: 100,
                    split: true,         // enable resizing
                    collapsible: true,
                    margins: '0 5 5 5',
                    collapsed: true
                },tree,{
                    xtype: 'gmappanel',
                    region: 'center',
                    id : 'mygooglemap',
                    center: new google.maps.LatLng(3.951941, 102.052002),
                    mapOptions: {
                        zoom: 7,
                        mapTypeId: google.maps.MapTypeId.ROADMAP                    
                    }
                    }],
                renderTo: Ext.getBody() //get the body and display Layout at there
            });
        });

function addInfoWindow(lat,lng) {
    var map123 = Ext.getCmp('mygooglemap'); 
    var latLng = new google.maps.LatLng(lat, lng);
    map123.SetCenter(latLng);
    }

为什么我不能将地图设置为坐标的中心?
Firebug出现此错误

TypeError: map123.setCenter is not a function
[Break On This Error]   

map123.setCenter(latLng);

EDITED

我的GMapPanel.js从https://raw.github.com/VinylFox/ExtJS.ux.GMapPanel/master/src/GMapPanel3.js下载 然后我把它放在我的localhost / ux / GMapPanel3.js中 这是我使用GMapPanel之前的配置

Ext.Loader.setPath('Ext.ux', 'ux/');
Ext.require([
    'Ext.tree.*',
    'Ext.data.*',
    'Ext.window.MessageBox',
    'Ext.window.*',
    'Ext.ux.GMapPanel'
]);

但未设置中心,为什么?

1 个答案:

答案 0 :(得分:0)

我假设您正在使用此处的插件:https://github.com/VinylFox/ExtJS.ux.GMapPanel

假设情况属实,从查看代码开始,您需要在调用getMap()之前在gmappanel上使用setCenter()

map123.getMap().setCenter(latLng);

或者,您可以在配置setCenter时指定gmappanel属性:

{
    xtype: 'gmappanel',
    region: 'center',
    id : 'mygooglemap',
    setCenter: {
        lat: 3.951941, 
        long: 102.052002
    },
    mapOptions: {
        zoom: 7,
        mapTypeId: google.maps.MapTypeId.ROADMAP                    
    }
}

ExtJS / Javascript的一大优点是您可以访问所有库的代码。当您看到“xxx不是函数”之类的错误时,它应该是非常明显的:您尝试使用的函数在您调用它的对象上不可用。