Ir para conteúdo


Foto

Parar a atualização do mapa

map mapa geolocation autoUpdate position latitude longitude

Melhor Resposta Allison WIllian , 11 June 2015 - 17:32

Resolvido

Visualizar todo o conteúdo do post


  • Por favor, faça o login para responder
1 resposta neste tópico

#1 Allison WIllian

Allison WIllian

    Member Avançado

  • Membros
  • PipPipPip
  • 40 posts
  • LocationLondrina

Postado 14 May 2015 - 16:35

Pessoal tenho na minha controller um método que quando chamado carregar pra mim um mapa com as coordenadas configuradas

e no codigo há um opção de autoUpdate que carrega de tempos em tempos o mapa atualizando as coordenadas.

Mais como eu faço para que na view que renderiza o map eu possa parar essa atualização com um button?

 

 

segue codigo nesta ordem abaixo controller e view.

onshowMap: function(){
        console.log('onshowMap');
        
        var me = this,                                   
            dados   = me.getDetailView().getData(),
            mapView = me.getMapaView();
        //console.log();
        if (Ext.feature.has.Geolocation) {
            /*
            Ext.device.Geolocation uses native (phone) Geolocation capabilities if available,
            and falls back to Ext.util.Geolocation if only browser support detected.
            */                      
           
            var destino = dados.endereco+', '+dados.nome_cid+', '+dados.nome_estado+', '+dados.cep,
            
            // instantiate the Geocoder class
            geocoder = new google.maps.Geocoder(),

            // define a sample street address + zip
            address = destino;
            
            // Instantiate a "please wait" message
            Ext.Viewport.setMasked({xtype:'loadmask', message:'Buscando Coordenadas...'});

            // transforma os dados de endereço em coordenadas
            geocoder.geocode( { 'address': address }, function(results, status){
                if (status === google.maps.GeocoderStatus.OK) {
                  var lat=results[0].geometry.location.lat();
                  var lng=results[0].geometry.location.lng();
                  //Ext.Msg.show({title:"lat-lng destino ",lat + "," +lng);                    
                }
              
                var geo = Ext.create('Ext.util.Geolocation', {
                    autoUpdate: true,
                    frequency: "20000",
                    listeners: {
                     locationupdate: function(geo) {
                        var latitude  = geo.position.coords.latitude,
                            longitude = geo.position.coords.longitude,
                            
                            origem  = new google.maps.LatLng(latitude, longitude),
                            destino   = new google.maps.LatLng(lat, lng);                      

                            var request = {
                                origin: origem,
                                destination: destino,
                                provideRouteAlternatives: true,
                                travelMode: google.maps.DirectionsTravelMode.DRIVING
                            };
                            console.log(request);
                                                                                   
                            var directionsDisplay = new google.maps.DirectionsRenderer(),
                                directionsService = new google.maps.DirectionsService();
                            
                            //serviço traça a rota entre dois ponto origem e destino
                            directionsService.route(request, function(response, status){
                                if (status === google.maps.DirectionsStatus.OK){
                                    directionsDisplay.setMap(null);
                                    directionsDisplay.setDirections(response);
                                    directionsDisplay.setMap(mapView.getMap());
                                }
                            });
                                                        
                            directionsDisplay.setMap(mapView.map);                        
                     },
                     locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) {
                        if(bTimeout)
                          Ext.Msg.show({
                              title:'Atenção',
                              message:"Problemas para obter coordenadas."
                          });
                        else                           
                          Ext.Msg.show({
                              title:'Atenção',
                              message:"Ocorreu um erro."
                          });
                        }
                    }                
                });
                
                if (status !== google.maps.DirectionsStatus.OK){                   
                    !Ext.os.is.Phone ? Ext.Msg.show({
                        title:'Atenção',
                        message:'Não há coordenadas para essa OS.'
                    }) 
                    :
                    Ext.Msg.show({
                        title:'Atenção',
                        message:'Sem coordenadas.'
                    });                                        
                }else{
                    //console.log(status);    
                    //console.log(google.maps.DirectionsStatus);
                    me.getMainView().push(me.getMapaView({
                        title: 'Mapa da OS'
                    }));
                    
                    geo.updateLocation();
                }                                                                
            
              // turn off please wait message
              Ext.Viewport.setMasked(false);
            });                        
        }  
    },
config: {
        items: [
            {
                xtype  : 'panel',
                title  : 'Map',
                itemId : 'mapOS',
                items  : [
                    {
                        xtype: 'toolbar',
                        docked: 'top',
                        title: !Ext.os.is.Phone ?'Rota da Ordem de Serviço': 'Rota OS',
                        items:[{                               
                            xtype: 'button',
                            ui: 'decline',
                            text: !Ext.os.is.Phone ?'Parar navegação':'Parar',
                            listeners:[{
                                element: 'element',
                                event: 'tap',
                                fn: function() {
                                    console.log('TAP!');
                                    Ext.ComponentQuery.query('ordemservicosmapa')[0].setUserCurrentLocation(false);
                                    //console.log(mapa);
                                    //Ext.getCmp
                                }
                            }]
                        }]
                    },
                    {
                        xtype: 'map',
                        height: '100%',
                        itemId: 'map'
                    }
                ]
            }
        ],
        navigationBar: {             
            docked: 'bottom',
            items: [
                {
                    xtype: 'button',
                    itemId: 'youAreHereButton',
                    text: 'Iniciar navegação'
                }
            ]
        }
    }


#2 Allison WIllian

Allison WIllian

    Member Avançado

  • Membros
  • PipPipPip
  • 40 posts
  • LocationLondrina

Postado 11 June 2015 - 17:32   Melhor Resposta

Resolvido






0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos