2011-03-02 55 views
0

我有一个web应用程序,它在Web视图中显示网页。但网页无法拿起getcurrentposition,但是如果我在android broswer中显示它的网页,但不是在web应用程序中?Android Web应用程序无法启动GPS

当页从一个Web应用程序运行时显示该页面的地图显示有 它会在下面的JS的“这里”警报和 “错误:地理定位服务失败。”

有没有人写过本地的网络应用程序,可以拿起地理位置? java web应用程序或许可中必须有其他必需的东西。有没有人做到了这一点..

这里是我想要使用谷歌例如HTML,

http://code.google.com/apis/maps/documentation/javascript/examples/map-geolocation.html 这里是JS

var initialLocation; 
var siberia = new google.maps.LatLng(60, 105); 
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687); 
var browserSupportFlag = new Boolean(); 
var map; 
var infowindow = new google.maps.InfoWindow(); 

function initialize() { 
    var myOptions = { 
     zoom: 6, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    // Try W3C Geolocation method (Preferred) 
    if (navigator.geolocation) { 
     browserSupportFlag = true; 
     alert('here navigator'); 
     navigator.geolocation.getCurrentPosition(function (position) { 
      initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
      contentString = "Location found using W3C standard"; 
      map.setCenter(initialLocation); 
      infowindow.setContent(contentString); 
      infowindow.setPosition(initialLocation); 
      infowindow.open(map); 
     }, function() { 
      handleNoGeolocation(browserSupportFlag); 
     }); 
    } else if (google.gears) { 
     // Try Google Gears Geolocation 
     browserSupportFlag = true; 
     var geo = google.gears.factory.create('beta.geolocation'); 
     geo.getCurrentPosition(function (position) { 
      initialLocation = new google.maps.LatLng(position.latitude, position.longitude); 
      contentString = "Location found using Google Gears"; 
      map.setCenter(initialLocation); 
      infowindow.setContent(contentString); 
      infowindow.setPosition(initialLocation); 
      infowindow.open(map); 
     }, function() { 
      handleNoGeolocation(browserSupportFlag); 
     }); 
    } else { 
     // Browser doesn't support Geolocation 
     browserSupportFlag = false; 
     handleNoGeolocation(browserSupportFlag); 
    } 
} 

function handleNoGeolocation(errorFlag) { 
    if (errorFlag == true) { 
     initialLocation = newyork; 
     contentString = "Error: The Geolocation service failed."; 
    } else { 
     initialLocation = siberia; 
     contentString = "Error: Your browser doesn't support geolocation. Are you in Siberia?"; 
    } 
    map.setCenter(initialLocation); 
    infowindow.setContent(contentString); 
    infowindow.setPosition(initialLocation); 
    infowindow.open(map); 
} 

任何想法.. 感谢迈克

+0

你想做什么?我从来没有听说过原生的网络应用程序。我假定你的意思是你制作了一个Android应用程序,只显示你的网页应用程序的页面? – 2011-04-11 13:34:22

+0

是的,你是正确的一个Android应用程序,显示一个网站地理位置.. – ozmike 2011-07-05 13:40:37

回答

0

是的,它得到它的工作。但是我在js中编写了自己的导航器对象,并通过jsinterface连接到了java。基本上我首先在非网络应用程序中使用GPS。然后在java中写了一个java脚本接口。然后从js中调用java中的jsinterface来获取地理位置。我的方法的好处是它应该在1.5以上工作,它在仿真器上工作。坏消息是它需要编码的负担。这种方法将工作,但不幸的是在2.3的JavaScript界面​​不是很稳定 - 其他版本的Android都可以。