2013-06-27 2 views
0

На Android (устройство HTC Incredible S и Android Virtual Device), когда я перехожу к своему «где я?» страница:worklight v6.0 проблема с индикатором занятости с Android

  1. инициализации и показывает индикатор занятости "Проверка местоположения"
  2. нагрузки Google Maps API
  3. геолокации и отображения Google Map
  4. скрывается индикатор занятости

В первый раз я иду на этой странице индикатор занятости никогда не отображается.

Во второй раз, когда я перехожу на эту страницу, появляется индикатор «Загрузка» занятости, замерзающий мое приложение. Я должен убить процесс вне приложения.

Когда я удаляю строки кода для индикатора занятости, мое приложение работает нормально.

Вот код с Busy замораживания Индикатор:

// Geolocation of collaborators 
var map; 
function initialize() { 
    var busyInd = new WL.BusyIndicator('content', {text : 'Checking your location...'}); 
    busyInd.show(); 
    console.log('Initializing google Maps'); 

     // Try HTML5 geolocation 
    if(navigator.geolocation) { 
     var options = { timeout: 30000, enableHighAccuracy: true }; 

     navigator.geolocation.getCurrentPosition(function(position) { 
     var mapOptions = { 
         zoom: 6, 
         streetViewControl: false, 
         mapTypeControl: false, 
         mapTypeId: google.maps.MapTypeId.ROADMAP 
        }; 
     map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions); 

     var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
     var infowindow = new google.maps.InfoWindow({ 
      map: map, 
      position: pos, 
      content: 'You are here', 
      maxWidth: 60 
     }); 
     map.setCenter(pos); 
     }, function(error) { 
      console.log('Hiding busy indicator when geolocation failed'); 
    busyInd.hide(); 
     handleNoGeowith location(true, error); 
     }, options); 
    } else { 
     // Browser doesn't support Geolocation 
     handleNoGeolocation(false); 
     busyInd.hide(); 
    } 
busyInd.hide(); 
} 

function handleNoGeolocation(errorFlag, error) { 
    console.log('Handle no geolocation message error'); 
var content; 
if (errorFlag) { 
    var errorCode = error.code; 
    var errorMsg = error.message; 
    content = 'Error: The Geolocation service failed. Code: '+errorCode+', Message: '+errorMsg; 
} else { 
    content = 'Error: Your browser doesn\'t support geolocation.'; 
} 

alert(content); 
} 
var isGMapAPILoaded = false; 
function loadGoogleMaps() { 
    console.log('initializing google maps api'); 
    if(isGMapAPILoaded){ 
     // Google Maps API already loaded 
     console.log('Google Maps API already loaded, call initialize'); 
     initialize(); 
    } else { 
     var script = document.createElement("script"); 
     script.type = "text/javascript"; 
     script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize"; 
     document.body.appendChild(script); 
     isGMapAPILoaded = true; 
     console.log('Google Maps API loaded with success'); 
    } 
} 

ответ

0

вы пробовали создать свой напряженный объект индикатор глобально, а не внутри этой конкретной функции (я также не понимаю сферу этой функции «инициализации» ... Я предполагаю, что это код, специфичный для приложения).

В .js файле вашего приложения (yourProject \ приложение \ YourApp \ общий \ yourApp.js) сделать что-то вроде этого:

var busy; 

function wlCommonInit() { 

    busy = new WL.BusyIndicator(); 

Тогда в ваших initialize() функцию, вызовите busy.show() и busy.hide() при необходимости.