用于 IE8 和移动浏览器的 HTML5 地理位置
Posted
技术标签:
【中文标题】用于 IE8 和移动浏览器的 HTML5 地理位置【英文标题】:HTML5 Geolocation for IE8 and Mobile Browsers 【发布时间】:2011-08-04 20:42:06 【问题描述】:所以我一直在开发一个 Web 应用程序,并且我已经实现了 html5 地理定位功能。我已经使用取自谷歌网站的 javascript 代码实现了这一点,该代码与我页面上的谷歌地图交互。下面是代码:
// 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 可以。我知道我也可以在请求位置时使用sensor=true
属性,如果他们打开了 GPS,则来自移动设备,所以这是另一种方法,但如果他们支持,我宁愿只使用地理定位。
谢谢大家。
【问题讨论】:
【参考方案1】:在开始全面使用它们之前,我正在等待 HTML5 地理定位功能更加成熟。同时,我使用MaxMind 提供的API 和数据集取得了巨大成功。
编辑:
我忘了提一下,这有时不适用于移动浏览器,因此您可能仍想在那里使用 HTML5 地理定位功能,因为我发现它在移动浏览器上更加快速和可靠。
【讨论】:
这很酷,他们所要求的只是返回他们网站的链接以使用免费 API :) 我肯定会使用它,我什至可能会购买许可证以便我可以删除链接。 250 美元/年不算什么。谢谢! 你用移动浏览器测试过 HTML5 地理定位吗?如果是这样,哪些(在哪些手机上),效果好吗?以上是关于用于 IE8 和移动浏览器的 HTML5 地理位置的主要内容,如果未能解决你的问题,请参考以下文章