Android上的JavaScript地理定位不起作用

我正在开发一个依靠提取移动用户的地理位置数据的网站。 我正在通过以下方式进行典型的方式:

function initialize() { if(window.google && google.gears) { var geo = google.gears.factory.create('beta.geolocation'); geo.getCurrentPosition(useLocation, errorOnLocate); } else if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(useLocation, errorOnLocate); } else { alert("no geo found"); } } function errorOnLocate(message) { alert(message); zoomTo(-34.397, 150.644); } 

即使我切换地理位置方法的顺序,这总是失败,并且[对象PositionError]进入errorOnLocate函数。

这是一个HTC的英雄与android 2.1使用任何浏览器内置。我的GPS是开着的,我已经指示浏览器,让网站查看我的位置。 谷歌地图原生应用程序的“位置”function,在手机上拿起我的位置就好了

更进一步,如果我在个人电脑上使用FireFox 3.5访问我的网站,它会正确地find我的位置(我相信它使用ip和ap数据点的组合)。 无论哪种方式,它使用相同的JavaScript

编辑:这是在浏览器中的html / js,而不是本机应用程序。 另外确切的错误信息是'最后的位置提供者被禁用'

  • 在javascript中捕获Android手机中的原生button点击
  • TypeError在将项目升级到最新版本的Cordova 4.0.0时,无法在控制台中设置#<Navigator>的属性连接
  • Android中如何突破Twitter应用内浏览器?
  • Android / phonegap - 点击响应时间慢
  • 如何将parameter passing给PhoneGap数据库事务函数
  • 无法在Android设备上的Javascript中获取touchevents的坐标
  • mediaelement.js自动播放在移动设备上不起作用
  • Javascript界面​​不能使用android 4.2
  • 这是从一个WebView或从Android浏览器应用程序访问? 如果来自WebView ,则可能需要通过Java调用启用地理定位。 请参阅WebView参考 。

    否则,我不能确定你的JS究竟出了什么问题,但是我知道HTML + JS可以在Android浏览器中使用:

     <!DOCTYPE html> <html> <head> <script type="text/javascript"> function watchLocation(successCallback, errorCallback) { successCallback = successCallback || function(){}; errorCallback = errorCallback || function(){}; // Try HTML5-spec geolocation. var geolocation = navigator.geolocation; if (geolocation) { // We have a real geolocation service. try { function handleSuccess(position) { successCallback(position.coords); } geolocation.watchPosition(handleSuccess, errorCallback, { enableHighAccuracy: true, maximumAge: 5000 // 5 sec. }); } catch (err) { errorCallback(); } } else { errorCallback(); } } function init() { watchLocation(function(coords) { document.getElementById('test').innerHTML = 'coords: ' + coords.latitude + ',' + coords.longitude; }, function() { document.getElementById('test').innerHTML = 'error'; }); } </script> </head> <body onload="init()"> <div id="test">Loading...</div> </body> </html> 

    这是不是在我的Android 2.4的工作,这个问题是通过启用无线networking位置除了GPS(不只是与GPS工作)

    设置 – >位置和隐私 – >启用无线networking。

    我使用以下两款手机testing了html5地理定位function:

    • HTC野火
    • HTC Galaxy

    两者都运行Android 2.1 update1操作系统,都没有使用内置的Google浏览器和演示网站进行地理定位,如:

    不过,我已经开发了我自己的应用程序(使用上面已经介绍的代码的组合)成功运行:

    • HTC野火
    • Android 2.1 update1模拟器
    • 还没有HTC Galaxy尚未testing

    和我使用的代码是:

    1. Javascript库:

      函数is_browser_gps_capable(){
           var _locator_object;
          尝试{
               _locator_object = navigator.geolocation;
           catch(e){return false;  }
          如果(_locator_object)
              返回true;
          其他
              返回false;
       } 

      函数watchLocation(successCallback,errorCallback){
      successCallback = successCallback || function(){};
      errorCallback = errorCallback || function(){};

       // Try HTML5-spec geolocation. var geolocation = navigator.geolocation; if (geolocation) { // We have a real geolocation service. try { function handleSuccess(position) { successCallback(position.coords); } geolocation.watchPosition(handleSuccess, errorCallback, { enableHighAccuracy: true, maximumAge: 5000 // 5 sec. }); } catch (err) { errorCallback(); } } else { errorCallback(); } 

      }

    2. 实际的代码在我的html文件中:

       if(is_browser_gps_capable()){
           $('geo_location')。innerHTML ='定位设备...';
           watchLocation(函数(coords){
                 var latlng = new google.maps.LatLng(coords.latitude,coords.longitude);
                 var myOptions = {
                  缩放:16,
                  中心:latlng,
                   mapTypeId:google.maps.MapTypeId.ROADMAP
                 };
                 var map = new google.maps.Map(document.getElementById(“map_canvas”),myOptions);
                 var marker = new google.maps.Marker({
                    位置:latlng, 
                    地图:地图,
                 }); 
      $('geo_location')。innerHTML = coords.latitude +','+ coords.longitude; },function(){ $('geo_location')。innerHTML ='不支持'; }); } else { $('geo_location')。innerHTML ='不支持'; }

    对不起,这个源代码只是不想格式正确,消息我,我会直接发送给你的代码,如果你愿意的话。

    我遇到了这个问题,我想这是因为设备上的电源很低。 充电并且问题消失了。