【问题标题】:Geolocation Error Detection地理位置错误检测
【发布时间】:2013-07-17 20:13:38
【问题描述】:

我正在使用地理定位,但我无法识别错误以提供替代方案。

我的 HTML 如下所示:

<button onclick="getLocation()">Get your location now</button>
<div id="google_canvas"></div>
<p id = 'error'></p>

我的脚本如下所示:

function getLocation(){
  if(navigator.geolocation) 
  {
    var map;
    var mapOptions = 
    {
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }           
    map = new google.maps.Map(document.getElementById('google_canvas'), mapOptions);
    navigator.geolocation.getCurrentPosition(function(position) 
    {
      var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude),latitude=document.getElementById("latitude"),longitude=document.getElementById("longitude");
      var infowindow = new google.maps.InfoWindow(
      {
        map: map,
        position: geolocate,
        content:
        ' * output content within map * '
      });

      map.setCenter(geolocate);
      latitude.value = position.coords.latitude;
      longitude.value = position.coords.longitude;
    });         
  } 

  else 
  {
    document.getElementById('error').innerHTML = 'No Geolocation Support';
  }

 };
google.maps.event.addListener(map, 'idle', function() {
});

我的 IE9 版本不支持地理定位(我已经用他们自己的脚本尝试过他们的测试站点),但它没有给我任何错误或警告,而且如果我不允许在 Firefox 或 Chrome 中定位,我不会得到任何错误或警报。

有人可以帮忙吗?如果它无法运行,我可以提供一个替代方案,因此我认为我不需要过多地查看错误代码,但我确实需要能够检测到故障,以便我可以提供我的替代方案,但我的脚本中的错误部分无论如何都不会运行。

我的问题真的是,为什么这 else 不运行?

else 
{
document.getElementById('error').innerHTML = 'No Geolocation Support';
}

谢谢

【问题讨论】:

    标签: javascript geolocation


    【解决方案1】:

    如果您的浏览器不支持地理定位,则会出现错误消息,要在支持它的浏览器上启用禁用地理定位,您通常需要查看地址栏旁边应该有一个小图标,您可以使用它来禁用/启用地理定位。

    为了让您检测之前启用/禁用地理定位的决策天气,您可以使用我在本文中建议的解决方案:

    Is there a way of detecting whether a user has already given permission to use navigator.geolocation?

    对于 IE9 来说它工作正常,唯一的事情是你应该点击网页底部的Allow blocked cnotent

    【讨论】:

    • 虽然我没有收到错误消息 - 如果我收到了,那很好
    • 在你的IE9中看看底部然后点击allow blocked script...
    • 试试 F12 并确保您的浏览器模式是 IE9 以确保我们处于相同的波长 为什么不创建一个 jsfiddle 这样它可以很容易地重现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多