0

有人可以帮帮我吗?我在煎茶中有一张地图,可以跟踪我当前的位置并画线。但我也想要一个按钮来停止跟踪。所以我想设置autoUpdate: false;但我真的不知道该怎么做......

这是我的代码

Ext.application({
name: 'Applicatie3.',
launch: function() {
    var view = Ext.create('Ext.NavigationView', {
        fullscreen: true,
        items: [{
            title: "I'm lost",
            xtype: 'tabpanel',
            items:[{
                title               : 'Home',
                xtype               : 'map',
                iconCls             : 'home',
                mapOptions          : { zoom: 20  },
                useCurrentLocation  : true,
                listeners           : {
                    maprender: function(comp, map){
                        var marker = new google.maps.Marker({
                            position    : new google.maps.LatLng( ),
                            map         : map
                        }),
                        infowindow = new google.maps.InfoWindow({
                            content     : '........'
                        }),
                        route = [ ],
                        geo = Ext.create('Ext.util.Geolocation', {
                            frequency         : 3000,
                            autoUpdate        : true,
                            allowHighAccuracy : true,
                            listeners         : {
                                locationupdate : function(geo) {
                                    polyline = new google.maps.Polyline({
                                        path : route,
                                        strokeColor: "red",
                                        strokeOpacity: 1.0,
                                        strokeWeight: 5
                                    });
                                    polyline.setMap(map),

                                    //alert(route);
                                    route.push( new google.maps.LatLng( geo.getLatitude(),geo.getLongitude() ) );

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

                                    google.maps.event.addListener(marker, 'click', function() {
                                         infowindow.open(map, marker);
                                    });

                                },
                                locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) {
                                    if(bTimeout){
                                        alert('Timeout occurred.');
                                    } else {
                                        alert('Error occurred.');
                                    }
                                }
                            } 
                        });
                        geo.updateLocation();
                    }                   
                } 
            } ]
        }]
    });
}

});

4

3 回答 3

1

我用一个设置为假的全局变量解决了这个问题,当我按下开始按钮时,变量变为真。在函数中,我有一个 if(true) {do location update},当变量设置为 false 时,位置更新不起作用。

于 2013-05-01T10:42:48.230 回答
0

寻找 setAutoUpdate() 方法?- http://docs.sencha.com/touch/2-1/#!/api/Ext.util.Geolocation-method-setAutoUpdate

于 2013-01-08T21:48:55.820 回答
0

您需要某种类型的侦听器来触发事件。

添加带有按钮的工具栏(注意“处理程序”配置)或为来自 google.maps.Map 的事件添加侦听器(请参阅getMap(0获取该对象,this添加侦听器)。

但是,您决定这样做,在处理函数中为地图执行Ext.ComponentQuery('map')并调用setUserCurrentLocation(false)

希望这可以帮助。

于 2013-06-11T04:33:42.107 回答