Sencha Touch 2获取当前位置按钮单击

时间:2012-09-17 16:34:05

标签: sencha-touch sencha-touch-2

我有一个工具栏按钮,点击后应该将我的地图更新到我当前的位置。我无法找到这个功能的工作示例,并希望有人可以建议我。请参阅下面的示例代码 - 感谢您的帮助

地图:

Ext.define('MyApp.view.Myap', {
    extend: 'Ext.Map',
    alias: 'widget.mymap',
    config: {
        useCurrentLocation: false,
        mapOptions:{
            zoom: 9,
            center: new google.maps.LatLng(42.2, -72.5),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        },
        listeners: {
            maprender : function(comp, map){
                google.maps.event.addListenerOnce(map, "idle", function () {
                    var host = window.location.origin ? window.location.origin : window.location.protocol + "/" + window.location.host;
                    var kmlOptions = {preserveViewport: false}
                    var now = +new Date();
                    var layer = new google.maps.KmlLayer(host + '/path/to.kml?timestamp=' + now, kmlOptions);
                    layer.setMap(map);
                    return layer;
                });  
            },
        }
    },
})

工具栏按钮:

Ext.define('MyApp.view.btnLocateMe', {
    extend: 'Ext.Button',
    alias: 'widget.btnlocateme',

    config: {
        ui: 'normal',
        iconCls: 'locate',
        iconMask: true,
        text: 'Locate Me',
        listeners: [
            {
                fn: 'onButtonTap',
                event: 'tap'
            }
        ]
    },

    onButtonTap: function(button, e, options) {
        //Produces error: cannot call method of undefined
        currentLocation: new google.maps.LatLng(this._geo.getLatitude(), this._geo.getLongitude());
        MyApp.view.MyMap.map.setCenter(currentLocation);
    }
});

3 个答案:

答案 0 :(得分:0)

我有一个建议。

尝试将当前位置更改为

new google.maps.LatLng( this.geo.getLatitude(),this.geo.getLongitude() ) ;

我认为您可以在here中收集此问题的更多信息。

答案 1 :(得分:0)

我的两分钱贡献,试试这个

1)在MyApp.view.Myap替换

    useCurrentLocation: false,

通过

       useCurrentLocation : {
           autoUpdate : false
       },

此外,您应该将currentLocation声明为变量(我推测)

       var currentLocation = ...

这应该有效。我在onButtonTap中使用了与你相似的逻辑但是在没有问题的控制器里面

祝你好运

答案 2 :(得分:-2)

最简单的方法 - 在配置

中设置选项 useCurrentLocation true 切换到另一个地图视图