首页 > 代码库 > 利用HTML5开发Android(5)---HTML5地理位置服务在Android中的应用

利用HTML5开发Android(5)---HTML5地理位置服务在Android中的应用

Android中
Java代码
 1 //启用地理定位    2 webSettings.setGeolocationEnabled(true);    3 //设置定位的数据库路径    4 webSettings.setGeolocationDatabasePath(dir);    5    6 //配置权限(同样在WebChromeClient中实现)    7 public void onGeolocationPermissionsShowPrompt(String origin,     8                GeolocationPermissions.Callback callback) {    9     callback.invoke(origin, true, false);   10     super.onGeolocationPermissionsShowPrompt(origin, callback);   11 }  
在Manifest中添加权限
Xml代码
1 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  2 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
HTML5中 通过navigator.geolocation对象获取地理位置信息
常用的navigator.geolocation对象有以下三种方法:

1 //获取当前地理位置   2 navigator.geolocation.getCurrentPosition(success_callback_function, error_callback_function, position_options)   3 //持续获取地理位置   4 navigator.geolocation.watchPosition(success_callback_function, error_callback_function, position_options)   5 //清除持续获取地理位置事件   6 navigator.geolocation.clearWatch(watch_position_id)  
其中success_callback_function为成功之后处理的函数,error_callback_function为失败之后返回的处理函数,参数position_options是配置项
 
JS中的代码
Js代码
 1 //定位    2 function get_location() {    3     if (navigator.geolocation) {    4         navigator.geolocation.getCurrentPosition(show_map,handle_error,{enableHighAccuracy:false,maximumAge:1000,timeout:15000});    5     } else {    6         alert("Your browser does not support HTML5 geoLocation");    7     }    8 }    9        10 function show_map(position) {   11     var latitude = position.coords.latitude;   12     var longitude = position.coords.longitude;   13     var city = position.coords.city;   14     //telnet localhost 5554   15     //geo fix -82.411629 28.054553   16     //geo fix -121.45356 46.51119 4392   17     //geo nmea $GPGGA,001431.092,0118.2653,N,10351.1359,E,0,00,,-19.6,M,4.1,M,,0000*5B   18     document.getElementByIdx_x_x_x("Latitude").innerHTML="latitude:"+latitude;   19     document.getElementByIdx_x_x_x("Longitude").innerHTML="longitude:"+longitude;   20     document.getElementByIdx_x_x_x("City").innerHTML="city:"+city;   21 }   22        23 function handle_error(err) {   24     switch (err.code) {   25     case 1:   26         alert("permission denied");   27         break;   28     case 2:   29         alert("the network is down or the position satellites can‘t be contacted");   30         break;   31     case 3:   32         alert("time out");   33         break;   34     default:   35         alert("unknown error");   36         break;   37     }   38 }  
其中position对象包含很多数据 error代码及选项 可以查看文档

利用HTML5开发Android(5)---HTML5地理位置服务在Android中的应用