JavaScript文件
JavaScript是例子页面上展示的API背后的引擎,Geolocation API是通过调用initGeoApp()函数来初始化的,这就是由< body>标签中的onLoad()事件来执行的函数:其决定了你的浏览器是否能够使用地理位置数据(参见清单6)。如果你的浏览器可以使用地理位置数据的话,则Geolocation API就会被调用。如果调用成功的话,就会使用Position中的属性值来绘制地图,然后属性的值会接在地图的后面打印出来。
广州网站建设,网站建设,广州网页设计,广州网站设计
清单6. Geolocation的函数
- function initGeoApp()
- {
- if( navigator.geolocation )
- {
- navigator.geolocation.getCurrentPosition( success, failure);
- }
- else
- {
- alert("Your browser does not support geolocation services.");
- }
- }
基于你在HTML文件中提供的ID,document.getElementById被用来检索值。document.getElementById是文档对象的一个方法,应该通过使用document.getElementById来访问,如清单7所示。Position的属性值存放在这里,这样它们就能够用来在要渲染的地图下面打印属性。
清单7. 使用getElementById来获取coords的值
- var map;
- function success(position)
- {
- document.getElementById("accuracyOutput").innerHTML =
- position.coords.accuracy;
- document.getElementById("altitudeOutput").innerHTML =
- position.coords.aktitude;
- document.getElementById("altitudeAccuracyOutput").innerHTML =
- position.coords.altitudeAccuracy;
- document.getElementById("headingOutput").innerHTML =
- position.coords.heading;
- document.getElementById("latitudeOutput").innerHTML =
- position.coords.latitude;
- document.getElementById("longitudeOutput").innerHTML =
- position.coords.longitude;
- document.getElementById("speedOutput").innerHTML =
- position.coords.speed;
接下来的这部分定义的是Google Map API的LatLng对象的坐标,如清单8所示。Google Map API LatLng对象提供了需要用来创建地图的坐标信息,你可以设置缩放级别和其他的几个选项,这些选项创建了呈现给用户的地图的外观。
清单8. Google Map的选项
- var coordinates = new google.maps.LatLng(position.coords.latitude,
- position.coords.longitude);
- var myOptions =
- {
- zoom: 14,
- center: coordinates,
- mapTypeControl: false,
- navigationControlOptions: {style: google.maps.NavigationControlStyle.small},
- mapTypeId: google.maps.MapTypeId.ROADMAP
- };
注意一下mapTypeID这一选项,该选项选择的是ROADMAP,该值所呈现的地图的样子如图2所示。该选项有四个可选的值:
1. ROADMAP
2. HYBRID
3. SATELLITE
4. TERRAIN
图3给出了选择HYBRID选项时网页看起来的样子。
图3. 使用混合式地图的API网页。
广州网站建设,网站建设,广州网页设计,广州网站设计
map_canvas这一ID被用来创建地图,该ID是HTML文件中的< div>的ID。
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 在地图上放一个初始位置的标记,清单9给出了这一代码。
清单9. 放置一个初始的地图标记
- var marker = new google.maps.Marker({
- position: coordinates,
- map: map,
- title: "You are here."
- });
- }
- function failure()
- {
- alert("Sorry, could not obtain location");
- }
web worker在页面初始化之后就开始执行。如果用户想要显示所执行的计算的输出的话,他/她可以点击Display Web Worker按钮,这将会调用displayWorker()函数。清单10给出了它的代码。
清单10. web worker
- var worker = new Worker('PrimeNumberWebWorker.js');
- function displayWorker()
- {
- worker.onmessage = function (event)
- {
- document.getElementById('result').innerHTML = event.data;
- };
- }
如果用户想要停止web worker的话,他/她可以点击Stop Web Worker按钮,这会调用清单11中给出的stopWorker()函数。
清单11. 终止worker
- function stopWorker()
- {
- worker.terminate();
- }
web worker文件
该文件是素数计算器的web worker,其计算出每个素数直到被终止执行。清单12给出了它的代码。
清单12. 计算素数
- var n = 1;
- search: while (true) {
- n += 1;
- for (var i = 2; i <= Math.sqrt(n); i += 1)
- if (n % i == 0)
- continue search;
- postMessage(n);
- }
CSS3文件
清单13中给出的CSS3文件提供了HTML5页面中显示的格式。
清单13. CSS3描述
- * {font-family: Arial,Helvetica,sans-serif ;
- }
- body {
- margin: 0 300px 0 300px;
- color: #990000;
- background-color:#FFFFCC;
- }
- header > hgroup h1 {
- margin: 0 0 3px 0;
- padding: 0;
- text-align: center;
- font-size: 30px;
- }
- header > hgroup h2 {
- margin: 0 0 15px 0;
- padding: 0;
- text-align: center;
- font-style: italic;
- font-size: 12px;
- }
- header p {
- margin: 0 0 20px 0 ;
- padding: 0;
- text-align: center;
- font-size: 12px;
- }
- aside {
- width: 200px;
- height: 175px;
- margin: -450px 0 0 450px;
- background-color: #990000;
- padding: .5px 0 0 10px ;
- color:#FFFFFF;
- font-weight:bold;
- }
- div {
- width: 400px;
- height: 250px;
- }
结论
文章系列的这一部分内容研究了Geolocation和Web Worker API的实用性。选择这两个API是因为把它们放在一起既说明了API使用的创新性又说明了实际上的可用性。对于HTML5规范在创建新的业务模型方面的使用来说,Geolocation是一个很好的例子。同样,Web Worker的角色是JavaScript的并发性所固有的一些问题的解决方案。
这两个API共同说明了一种用于商业和社会的HTML5使用模式的组合,因此,它们的功效说明了HTML5富互联网应用的特有便利性和一般管理手段。




