
若你在页面开头使用了一个有效的HTMLCTYPE,
宁波网站制作认为地图所显示的HTML元素必须包含position:fixed或position:absolute。否则,OpenLayers将不显示任何东西。
有趣的是,在没有DOCTYPE的情况下此限制不会出现。更多关于这个话题的信息可以从下面地址找到:http://openlayers.org/pipermail/users/9-July/0.html。V初体验:在浏览器中使用地理定位在测试浏览器的地理定位功能的过程中,我们需要用到代码清单中的JavaScript代码:
代码备单用navigator.geolocation输出位置的函数function$(id){returndocument.getElementByld(id);}window.onload=function(){if(navigator.geolocation){navigator.geolocation.getCurrentPosition(function(pos){$f"laf'KinnerHTML=pos.coords,latitude;$(Mlon").innerHTML=pos.coords.longitude;{("alf'J.innerHTML=pos.coords.altitude;function(){},{enableHighAccuracy:true,maximumAge:0}
\
}else{
$("status'*).innerHTML=
1*NoGeolocationsupportforyourBrowser';为了将函数documentgetElementByldO用缩写符号代替(也就是起个别名),代码清单的第一行定义了一个辅助函数$。此技巧来自著名的jQuery库,这为我们编写代码提供了很大方便,因为需要填充的元素在网页上都是通过ID属性标记的。如前面的案例所示(见代码清单及代码清单),window.onload保证了在应用并设置HTML元素之前网页内容已经被完整加载。第一个if语句判断浏览器是否支持GeolocationAPI。若浏览器不支持,将根据ID在相应元素里写入一段适当的提示信息,否则,决定位置的函数navigator.geolocation.getCurrentPosition()将被执行。
根据规范,浏览器在调用此函数时必须询问用户是否要定位他的当前位置并将其分享至网站。图展示了MozillaFirefox下的相关对话框。
根据规范,后面两个参数为可选项,成功回调函数则总是存在。为了不影响后续要执行的JavaScript脚本,getCurrentPosition()应在后台异步执行,相关回调函数仅在成功定位或发生错误后回调。
在这个简短例子中,两个回调函数都是匿名函数,没考虑出错的情况。值对enableHighAccuracy:true告知浏览器需要尽量精确地计算定位。在Android手机上,此设定用于激活内置GPS传感器(这方面更多信息见节)。最后,maximumAge标注了位置信息的过期时间,以毫秒为单位,在信息过期之后则需要重新定位一^在我们的案例中设为每lOmin。
在成功定位之后,坐标数据(pos.coords)及一个表示从0年至今经过的毫秒数的时间戳(pos.timestamp)被放人成功回调函数-------即Position接口--的变fflpos中。
图中显示了可能存在的有效属性及其对应的值。
除了经度、纬度及高度外,pos.coords还包含了位置精度(精度,高度精度)(accuracy,altitudeAccuracy)以及可能的速度与方向(heading)信息。在GoogleChrome受限于规范规定的属性同时,Firefox(这里指的是版本)却能够输出许多额外信息——甚至包括从JSON.stringify(pos)中提取的详细地址(见代码清单):
代码清单在Firefox下从JSON.stringify(pos)的结果中提取数据{"coords":
"address":
{"streetNumber":"6","street":"Postgasse","premises":null,"city丨:"MurnauamStafFelsee","county":"Garmisch-Partenkirchen","region":"Bavaria","country":"Germany"/countryCode":"DEW,"postalCode":""/contractlD","classDescription":"wifigeopositionaddressobject",//...
II...
____}
这个浏览器提供的信息实在太多了!
本文由乐华网络编辑,转载请注明出处
宁波网站制作www.leseo.net