构建移动网站与APP:HTML 5移动开发入门与实战(跨平台移动开发丛书)
上QQ阅读APP看书,第一时间看更新

4.2 手机地理位置定位

在一个以地点为核心的POI系统中,需要获取用户地理位置的坐标。本例演示通过Wi-Fi获取当前地理位置的坐标。当用户打开浏览器时,页面上显示通过手机3G网络信号地理定位的当前坐标,同时用Google Maps显示标记当前的地理位置。

在iPhone上使用Safari浏览器打开网页文件,运行效果如图4.6所示。

图4.6 询问是否允许使用当前的位置

提示

本例需要通过架设Web服务器来访问文件。

点击“好”按钮,运行效果如图4.7所示。

图4.7 IP使用联通3G网络定位

提示

代码在iPhone的Safari浏览器下测试通过,建议使用Safari浏览器打开;确保手机关闭WiFi;确保手机已通过手机信号连接上网络;出于隐私考虑,在第一次运行该页面时,会弹出提示是否授权使用您的地理位置信息,该程序需要授权才可正常使用定位功能。

本例“4-1.手机地理定位.html”的关键函数via3G代码如下:

【代码4-1】

        01    function via3G(){
        02       if (navigator.geolocation) {                    // 判断浏览器是否支持
        03            // 通过HTML 5 getCurrnetPosition API获取定位信息
        04             navigator.geolocation.getCurrentPosition(function(position) {
        05                var info = $("#info"),                 // 获取地理位置信息控件
        06                    longlat_html =                     // 拼接HTML
        07                    '<h4>手机定位</h4>'+
        08                      '<ul>'+
        09                    '<li>经度:' + position.coords.longitude + '</li>'+
        10                    '<li>纬度:' + position.coords.latitude + '</li>'+
        11                      '</ul>';
        12                info.html(longlat_html);                  // 设置显示内容结构
        13                  showMap(position.coords, document.getElementById("map"));
        14             });
        15        } else {
        16            var _3g = $("#info");                          // 获取提示元素
        17            _3g.html("您的浏览器不支持HTML 5 Geolocation API定位").css('color',
    '#F30');
        18        }
        19    }

第04行,调用navigator.geolocation.getCurrentPosition方法通过手机信号获取定位信息。