google maps sencha touch 2 配置

Posted

技术标签:

【中文标题】google maps sencha touch 2 配置【英文标题】:google maps sencha touch 2 configuration 【发布时间】:2013-08-19 11:01:40 【问题描述】:

您好,我正在按照此处的建议在 sencha touch 中实施谷歌地图: 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>');
    

);

【问题讨论】:

查看我的更新答案 【参考方案1】:

你定义了地图视图并扩展了Ext.Map,这样视图就变成了地图,当你给你的视图提供xtype时,它不应该是预定义的xtype,比如地图、面板、按钮等。

您应该学习Ext class system 并尝试此代码。

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>');
        
    
);

【讨论】:

谢谢!它起作用了...我的错误是我将 mapOptions 节放在了配置之外,因此它被忽略了...肯定会观看视频... @bert ya,这也是我说你需要学习班级系统的原因。【参考方案2】:

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

    
        xtype: 'map',
        mapOptions: 
           center: new google.maps.LatLng(-34.397, 150.644)
        
    
    

    您可以覆盖 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
            
        
    );
    

【讨论】:

这个覆盖方法有效,谢谢......我之前已经解决了它并编辑了代码,但你看起来真的很快:)

以上是关于google maps sencha touch 2 配置的主要内容,如果未能解决你的问题,请参考以下文章

在 Sencha Touch MVC 中实现 Google Maps Directions

Sencha Touch 2:Google Maps Directions Route 不会显示

如何在 Sencha Touch 的 Google Map 上的 svg 上添加触摸和按住事件

HTML5开发移动web应用——Sencha Touch篇(12)

使用 Sencha Touch 时,Google 地图标记点击在 iPad 上不起作用

Sencha Touch - Map.Geo = null