zoukankan      html  css  js  c++  java
  • 利用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代码及选项 可以查看文档
  • 相关阅读:
    Redis知识梳理(1)当我们谈到双写一致性的时候,我们在谈什么?
    多线程知识梳理(4),当我们谈到volatile的时候,我们在谈什么?
    多线程知识梳理(3),当我们谈到CAS的时候,我们在谈什么?
    多线程知识梳理(2),当我们谈到synchronized关键字的时候,我们在谈什么?
    多线程知识梳理(1):当我们谈到指令乱序的时候,在谈什么?
    LeetCode刷题记录本
    “退格”转义字符使用实例
    “逻辑异或”进行数值交换的过程分析
    ConcurrentHashMap源码走读
    Netty如何监控内存泄露
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/345fdgdgfdgfdgd.html
Copyright © 2011-2022 走看看