Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将HTML5地理定位API与Android 2.0+;浏览器_Android_Html_Geolocation - Fatal编程技术网

将HTML5地理定位API与Android 2.0+;浏览器

将HTML5地理定位API与Android 2.0+;浏览器,android,html,geolocation,Android,Html,Geolocation,我正在尝试在Android设备上使用地理定位和HTML5API。我用Galaxy S LC(相当于Galaxy S1)进行了测试。Android版本是2.2.1 我已经读了很多关于它的话题,但我仍然没有找到解决办法 我使用以下典型代码进行地理定位: ` 写下(“试图找到你”); if(导航器.地理位置){ document.write(“支持地理定位”); navigator.geolocation.getCurrentPosition(successCallback、errorCallbac

我正在尝试在Android设备上使用地理定位和HTML5API。我用Galaxy S LC(相当于Galaxy S1)进行了测试。Android版本是2.2.1

我已经读了很多关于它的话题,但我仍然没有找到解决办法

我使用以下典型代码进行地理定位:

`


写下(“试图找到你”);
if(导航器.地理位置){
document.write(“支持地理定位”);
navigator.geolocation.getCurrentPosition(successCallback、errorCallback、,
{
EnableHighAccurance:正确,
超时:10000,//10s
最大值:0
}
);
函数成功回调(位置){
写下(“你已经被定位了。纬度:+position.coords.Latitude+”,经度:+position.coords.longitude”);
};
函数errorCallback(错误){
写(“它不起作用”);
开关(错误代码){
案例错误。权限被拒绝:
文件。写入(“拒绝许可”);
打破
案例错误。位置不可用:
文件。填写(“职位不可用”);
打破
大小写错误。超时:
文件。写入(“超时”);
打破
案例错误。未知错误:
文件。写入(“未知错误”);
打破
}
}
}
否则{
文件(写“LG GooListaln'ES-PAS支持E PAL LE导航员”);
}
它在带有Chrome和Opera的PC上运行良好(但不适用于Firefox)。它还可以在移动设备上与Opera配合使用。但它不适用于Android浏览器。它的版本是2.2.1。 这就是这一次发生的事情: 1.出现以下消息: “试图找到你” “支持地理定位” 2.在超时指定的时间(此处为10秒)后,将显示空白页。 不会调用SuccessCallback或errorCallback函数

当我没有指定超时(timeout=infinity)时,如果启用了GPS,它就会工作。如果不是,我也会得到一个没有错误消息的空白页

我在Android浏览器上尝试了HTML5地理定位测试:但也不起作用

我试过了(第一个答案)。它有时会起作用,但我们必须等待2分钟才能得到位置(如评论中所述)

我也试着用一个Webview来获得它,但它的效果完全一样

据说要解决Android浏览器上的这个错误,我们只需要将EnableHighAccurance指定为true,但是如果GPS没有激活,仍然没有调用任何函数(SucesCallback或errorCallback)

如果有人有一个解决方案,这将是一个很大的帮助我

谢谢你的帮助


实际上,空白页是由“文档写入”函数引起的。我用innerHTML替换了它,现在它可以工作了。这意味着将显示错误,并调用errorCallback

现在的问题是Android浏览器只能使用GPS(高精度)确定位置。如果GPS未启用或无法拾取位置(例如在建筑物内),则不会返回位置。 相反,Opera浏览器将使用中继网络(单元ID方法)确定位置(在这种情况下,精度小于150m)


你知道如何强制Android浏览器使用手机ID源吗?

这样试试。应该这样做

<!DOCTYPE html>
<html>
<body>
<p id="demo">Click the button to get your coordinates:</p>
<button onclick="getLocation()">Try It</button>
<script>
var x=document.getElementById("demo");
function getLocation()
  {
  if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition,showError,
          {
            enableHighAccuracy : true,
            timeout : 10000, // 10s
            //maximumAge : 0
          }
        );
    }
  else{x.innerHTML="Geolocation is not supported by this browser.";}
  }
function showPosition(position)
  {
  x.innerHTML="Latitude: " + position.coords.latitude + 
  "<br>Longitude: " + position.coords.longitude;    
  }
function showError(error)
  {
  switch(error.code) 
    {
    case error.PERMISSION_DENIED:
      x.innerHTML="User denied the request for Geolocation."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML="Location information is unavailable."
      break;
    case error.TIMEOUT:
      x.innerHTML="The request to get user location timed out."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML="An unknown error occurred."
      break;
    }
  }
</script>

</body>
</html>

单击按钮获取您的坐标:

试试看 var x=document.getElementById(“演示”); 函数getLocation() { if(导航器.地理位置) { navigator.geolocation.getCurrentPosition(显示位置、淋浴位置、, { EnableHighAccurance:正确, 超时:10000,//10s //最大值:0 } ); } else{x.innerHTML=“此浏览器不支持地理位置。”;} } 功能显示位置(位置) { x、 innerHTML=“纬度:”+position.coords.Latitude+ “
经度:”+position.coords.Longitude; } 功能错误(错误) { 开关(错误代码) { 案例错误。权限被拒绝: x、 innerHTML=“用户拒绝了地理位置请求。” 打破 案例错误。位置不可用: x、 innerHTML=“位置信息不可用。” 打破 大小写错误。超时: x、 innerHTML=“获取用户位置的请求超时。” 打破 案例错误。未知错误: x、 innerHTML=“发生未知错误。” 打破 } }
今年1月,谷歌改变了Chrome中定位服务的行为。其中一个变化是,如果http连接未加密,Chrome不会返回当前位置坐标。几个月前我们也遇到过类似的问题,除了Chrome浏览器,我们的web应用程序中的定位服务在所有设备(PC、手机、平板电脑等)上的所有客户端上都能正常工作。在该应用程序上安装SSL证书修复了所有地理位置问题。希望这有帮助。

查看此帖子及其解决方案。
<!DOCTYPE html>
<html>
<body>
<p id="demo">Click the button to get your coordinates:</p>
<button onclick="getLocation()">Try It</button>
<script>
var x=document.getElementById("demo");
function getLocation()
  {
  if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition,showError,
          {
            enableHighAccuracy : true,
            timeout : 10000, // 10s
            //maximumAge : 0
          }
        );
    }
  else{x.innerHTML="Geolocation is not supported by this browser.";}
  }
function showPosition(position)
  {
  x.innerHTML="Latitude: " + position.coords.latitude + 
  "<br>Longitude: " + position.coords.longitude;    
  }
function showError(error)
  {
  switch(error.code) 
    {
    case error.PERMISSION_DENIED:
      x.innerHTML="User denied the request for Geolocation."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML="Location information is unavailable."
      break;
    case error.TIMEOUT:
      x.innerHTML="The request to get user location timed out."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML="An unknown error occurred."
      break;
    }
  }
</script>

</body>
</html>