利用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代码及选项 可以查看文档
原文地址:https://www.cnblogs.com/lvfeilong/p/345fdgdgfdgfdgd.html