1

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

地图:

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);
    }
});
4

3 回答 3

0

我有一个建议。

尝试将当前位置更改为

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

我想你可以在这里从这个问题中收集更多信息。

于 2012-09-18T04:02:42.520 回答
0

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

1) 在 MyApp.view.Myap 中替换

    useCurrentLocation: false,

经过

       useCurrentLocation : {
           autoUpdate : false
       },

您还应该将 currentLocation 声明为变量(我想)

       var currentLocation = ...

这应该有效。我在 onButtonTap 中使用了与您类似的逻辑,但在控制器内部没有问题

此致

于 2012-09-19T02:44:03.273 回答
-2

The simplest way - switch to the another map view with option useCurrentLocation: true set in the config

于 2012-09-18T09:14:42.653 回答