sencha touch 2 中的谷歌地图实现(MVC 方式)

Posted

技术标签:

【中文标题】sencha touch 2 中的谷歌地图实现(MVC 方式)【英文标题】:google maps implementation in sencha touch 2 (the MVC way) 【发布时间】:2013-08-17 15:30:46 【问题描述】:

谁能指出我正确的方向,如何以 MVC 方式在 sencha touch 2.2.1 中实现谷歌地图?也许是一个很好的分步教程?

我需要一个视图和一个控制器,但我不确定在定义地图选项和初始化地图方面的正确方法是什么。一直在查看 Internet 上的各种教程,但没有一个与我想要实现的完全匹配。

我正在使用选项卡面板,单击其中一个选项卡(称为位置)时需要显示我的地图...

【问题讨论】:

【参考方案1】:

首先,您必须将地图面板作为选项卡容器的项目:


  xtype: 'map',
  useCurrentLocation: false,
  mapOptions: 
    disableDefaultUI: true,
    zoom: 11,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  

接下来,你可以这样在这个视图的具体控制器中引用它:

config: 
  refs: 
    ...
    mymap: '.map',
    ...
  ,
  ...

这样,您可以通过键入以下内容在控制器中引用您的地图对象:

this.getMymap()

并且可以在地图上附加一个处理程序,以便在地图被渲染时对其进行一些操作:

this.getMymap().on('maprender', this.onMapRender, this,  single: true );

其中“onMapRender”是控制器的一种方法。例如,如果您想在地图上渲染一个标记并将其居中,则必须这样做,因为在地图调度“maprender”事件之前,您不能对其执行任何操作(GMap 对象只是尚不存在),因此,例如,在您的控制器中,处理程序可能是:

onMapRender: function(e) 
    var latLngCoordinates = new google.maps.LatLng(..., ...)
        marker = new google.maps.Marker(
            position: latLngCoordinates,
            animation: google.maps.Animation.DROP,
            map: this.getMymap().getMap()
        );

    this.getMymap().setMapCenter(latLngCoordinates);

尽情享受吧;)

【讨论】:

成功了,谢谢。我做的一个小改动是将我的地图面板作为扩展 Ext.Map 的单独视图。

以上是关于sencha touch 2 中的谷歌地图实现(MVC 方式)的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch + 带有在线/离线应用程序的谷歌地图:当应用程序在线时可以加载地图吗?

sencha 中的谷歌地图处理

Sencha Touch 2 谷歌地图啥都不做

Sencha Touch - 谷歌地图和居中标记

集成谷歌地图时,sencha touch 应用程序仍处于蓝色加载屏幕

如何从 SenCha Touch 中的商店检索数据