IE8和移动浏览器的HTML5地理定位

时间:2011-04-13 16:02:30

标签: html5 internet-explorer-8 geolocation google-gears mobile-browser

所以我一直在开发一个Web应用程序,并且我已经实现了HTML5地理定位功能。我使用从Google网站上获取的Javascript代码实现了这一点,该代码也与我在我的网页上的Google地图进行了互动。以下是代码:

// Note that using Google Gears requires loading the Javascript
// at http://code.google.com/apis/gears/gears_init.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();

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

  // Try W3C Geolocation (Preferred)
  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  // Try Google Gears Geolocation
  } else if (google.gears) {
    browserSupportFlag = true;
    var geo = google.gears.factory.create('beta.geolocation');
    geo.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeoLocation(browserSupportFlag);
    });
  // Browser doesn't support Geolocation
  } else {
    browserSupportFlag = false;
    handleNoGeolocation(browserSupportFlag);
  }

  function handleNoGeolocation(errorFlag) {
    if (errorFlag == true) {
      alert("Geolocation service failed.");
      initialLocation = newyork;
    } else {
      alert("Your browser doesn't support geolocation. We've placed you in Siberia.");
      initialLocation = siberia;
    }
    map.setCenter(initialLocation);
  }
}

所以这段代码的作用是,它检查您访问该站点的浏览器是否支持新的WC3地理定位功能,如果是,则使用它来查找纬度和经度。如果你不支持它,它会尝试使用Google Gears来获取这些信息,最后,如果你不支持它,它就会失败。

我对Firefox,Safari,Opera和Chrome等浏览器的使用方式完全没问题,因为大多数新版本(甚至是一些旧版本)都支持这些功能,但IE8(9种作品),没有:(

IE8甚至没有使用Google Gears的故障保护,它根本不起作用。无论如何(像上面的代码一样免费),在IE8上使用某种形式的地理定位,即使它不能获得纬度和经度那么准确,所以我可以把它插入地图?

此外,我还没有测试,但是,如果您使用移动浏览器(在主要设备上)登录此站点,它是否也支持WC3 Geolocation / Google Gears,或者它会像IE8的确如此。我知道如果来自移动设备,如果他们打开GPS,我也可以在请求位置时使用sensor=true属性,这是另一种方法,但我宁愿只使用地理位置,如果他们支持它

谢谢你们。

1 个答案:

答案 0 :(得分:2)

我正在等待HTML5地理位置功能在我开始全面使用之前成熟一点。与此同时,我使用了MaxMind提供的API和数据集,取得了巨大的成功。

编辑:

我忘了提及,这有时不适用于移动浏览器,所以你可能仍然想在那里使用HTML5地理定位功能,因为我发现它在移动浏览器上更加快速和可靠。