1

嗨,我正在按照此处的建议在 sencha touch 中实现 google maps: google maps implementation in sencha touch 2 (the MVC way)

但是,当地图出现时,它首先显示一个默认位置(在美国的某个地方),然后根据我的配置再次重新渲染以显示地图。我怎样才能避免这种情况?

Ext.define('App.view.Map', {
extend: 'Ext.Map',
xtype: 'map',
useCurrentLocation: false,
config: {
  layout: 'fit',
  iconCls: 'icon-location',
  title: 'Location',
  styleHtmlContent: true,
    items: {
        docked: 'top',
        xtype: 'titlebar',
        title: 'Location'
    }
},
mapOptions: {
    center: new google.maps.LatLng(<value>, <value>),
    disableDefaultUI: true
},
constructor: function(config) {
    this.callParent(config);
    if (!(window.google || {}).maps) {
            this.setHtml('<p id="maperror">Internet Connection Required!</p>');
    }
}
});
4

2 回答 2

0
  1. 您可以通过在地图的“mapOptions”配置中添加“中心”选项来设置起始位置。

    {
        xtype: 'map',
        mapOptions: {
           center: new google.maps.LatLng(-34.397, 150.644)
        }
    }
    
  2. 您可以覆盖 Ext.Map 类并添加您自己的消息。

    Ext.define('MyApp.overrides.Map', {
        constructor: function() {
           this.callParent(arguments);
           // this.element.setVisibilityMode(Ext.Element.OFFSETS);
    
            if (!(window.google || {}).maps) {
                // do your own thing here
            }
        }
    });
    
于 2013-08-19T11:17:42.970 回答
0

您定义了地图视图和扩展Ext.Map,以便视图成为地图,并且当您为视图提供 xtype 时,它​​不应该是预定义的 xtype,如地图、面板、按钮等。

您应该学习Ext 类系统并尝试此代码。

Ext.define('myapp.view.Map', {
    extend: 'Ext.Map',
    xtype: 'mymap',
    config: {
        layout: 'fit',
        iconCls: 'icon-location',
        title: 'Location',
        useCurrentLocation: false,
        styleHtmlContent: true,
        items: [{
            docked: 'top',
            xtype: 'titlebar',
            title: 'Location'
        }],
        mapOptions: {
          center: new google.maps.LatLng(<value>, <value>),
          disableDefaultUI: true
       }
    },
    constructor: function(config) {
        this.callParent(config);
        if (!(window.google || {}).maps) {
            this.setHtml('<p id="maperror">Internet Connection Required!</p>');
        }
    }
});
于 2013-08-19T11:18:24.443 回答