zoukankan      html  css  js  c++  java
  • 用户定位介绍及实例

    1.UserLocation
      1)获取用户的位置
      2)追踪用户的移动
    2.UserLocation的API
       LocationManager:管理用户定位服务
       LocationProviders:其他的定位方式
       定位的分类(前两者是主要的):
       a.GPS定位(精确)
       b.NETWORK定位(粗糙)
       c.passive(被动)
       步骤:
       a.在主配置文件中声明相应的权限
       <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
       b.获取LocationManager对象
       c.选择LocationProvider
       d.绑定LocationListener对象
          获得的是经纬度
          location.getLongitude()//经度
          location.getLatitude()//纬度
        演示用DDMS来模拟
    3.Criteria的使用(查找最好的定位方式)
      设置一些列的查询条件,用于查找当前设备中符合条件的LocationProvider
       setAccuracy()//设置精度 
       setAltitudeRequired()//是否需要设置海拔
       setBearingRequired()//是否需要设置速度
       setCostAllowed()//设置是否产生费用
       核心代码:
                 /**
                    * 生成一个Criteria对象
                    * 用于多条件查询
                    */
            Criteria criteria = new Criteria();
            /**设置查询的精度为高精度*/
            criteria.setAccuracy(Criteria.ACCURACY_FINE);
            /**设置耗电量*/
            criteria.setPowerRequirement(Criteria.POWER_LOW);
            /**设置是否需要海拔*/
            criteria.setAltitudeRequired(false);
            /**设置是否需要速度*/
            criteria.setSpeedRequired(false);
            /**设置是否需要收费*/
            criteria.setCostAllowed(false);
            /**
             * false是不关乎是否有provider打开
             * 只按条件查找最合适的
             */
            String provider = locationManager.getBestProvider(criteria,false);
    4.Geocoding服务的介绍
    1)主要提供的是两个功能:
    a.查询某地址的经纬度
    b.查询某经纬度的具体地址
    获得方式1:核心类GeoCoder
    核心方法:
    getFromLocation()
    getFromLocationName()
    获得方式2:实现用户定位的另外一种方式GeoCoding(从google官网获得)
    基于web的GeoCoder,在google的API中可以直接查询,查询的格式是json
    步骤:
    a.http://code.google.com/intl/zh-C ... entation/geocoding/
    b.通过http请求也可以实现定位
    地址解析请求(google网站上摘下的):
        Google Geocoding API 请求必须采用以下形式:
        http://maps.google.com/maps/api/geocode/output?parameters
        其中,output 可以是以下值之一:
        json(建议)表示以 JavaScript 对象表示法 (JSON) 的形式输出
        xml 表示以 XML 的形式输出
        有些参数是必需的,有些是可选的。根据网址的标准,所有参数均使用字符 & (&) 分隔。下面枚举了这些参数及其可能的值。
        Google Geocoding API 使用以下网址参数定义地址解析请求:
        address(必需)- 您要进行地址解析的地址。*
        或者
        latlng(必需)- 您希望获取的、距离最近的、可人工读取地址的纬度/经度文本值。*
        bounds(可选)- 要在其中更显著地偏移地址解析结果的可视区域的边框。(有关详细信息,请参见下文的可视区域偏向。)
        region(可选)- 区域代码,指定为 ccTLD(“顶级域”)双字符值。(有关详细信息,请参见下文的区域偏向。)
        language(可选)- 传回结果时所使用的语言。请参见支持的区域语言列表。请注意,我们会经常更新支持的语言,因此该列表可能并不详尽。如果未提供 language,地址解析器将尝试尽可能使用发送请求的区域的本地语言。
        sensor(必需)- 指示地址解析请求是否来自装有位置传感器的设备。该值必须为 true 或 false。
        请注意:您可以传递 address 或 latlng 进行查找。(如果传递 latlng,则地址解析器执行反向地址解析。有关详细信息,请参阅反向地址解析。)
        bounds 和 region 参数只会影响地址解析器返回的结果,但不能对其进行完全限制。
        例如北京(输出如下):
        方式1:json格式
        比如:http://maps.google.com/maps/api/ ... NG&sensor=false
        {
       "results" : [
          {
             "address_components" : [
                {
                   "long_name" : "北京",
                   "short_name" : "北京",
                   "types" : [ "locality", "political" ]
                },
                {
                   "long_name" : "北京市",
                   "short_name" : "北京市",
                   "types" : [ "administrative_area_level_1", "political" ]
                },
                {
                   "long_name" : "中国",
                   "short_name" : "CN",
                   "types" : [ "country", "political" ]
                }
             ],
             "formatted_address" : "中国北京市",
             "geometry" : {
                "bounds" : {
                   "northeast" : {
                      "lat" : 40.21649620,
                      "lng" : 116.78298350
                   },
                   "southwest" : {
                      "lat" : 39.66127140,
                      "lng" : 116.01193430
                   }
                },
                "location" : {
                   "lat" : 39.9042140,
                   "lng" : 116.4074130
                },
                "location_type" : "APPROXIMATE",
                "viewport" : {
                   "northeast" : {
                      "lat" : 40.21649620,
                      "lng" : 116.78298350
                   },
                   "southwest" : {
                      "lat" : 39.66127140,
                      "lng" : 116.01193430
                   }
                }
             },
             "types" : [ "locality", "political" ]
          }
       ],
       "status" : "OK"
    }
       方式2:xml格式
    <GeocodeResponse>
    <status>OK</status>
    <result>
    <type>locality</type>
    <type>political</type>
    <formatted_address>中国北京市</formatted_address>
    <address_component>
    <long_name>北京</long_name>
    <short_name>北京</short_name>
    <type>locality</type>
    <type>political</type>
    </address_component>
    <address_component>
    <long_name>北京市</long_name>
    <short_name>北京市</short_name>
    <type>administrative_area_level_1</type>
    <type>political</type>
    </address_component>
    <address_component>
    <long_name>中国</long_name>
    <short_name>CN</short_name>
    <type>country</type>
    <type>political</type>
    </address_component>
    <geometry>
    <location>
    <lat>39.9042140</lat>
    <lng>116.4074130</lng>
    </location>
    <location_type>APPROXIMATE</location_type>
    <viewport>
    <southwest>
    <lat>39.6612714</lat>
    <lng>116.0119343</lng>
    </southwest>
    <northeast>
    <lat>40.2164962</lat>
    <lng>116.7829835</lng>
    </northeast>
    </viewport>
    <bounds>
    <southwest>
    <lat>39.6612714</lat>
    <lng>116.0119343</lng>
    </southwest>
    <northeast>
    <lat>40.2164962</lat>
    <lng>116.7829835</lng>
    </northeast>
    </bounds>
    </geometry>
    </result>
    </GeocodeResponse>
  • 相关阅读:
    SAP BDC批量导入数据(转)
    如何快速从BSEG读取数据(转)
    刷新ALV定位到当前记录行
    一些常用的系统变量(SYST)
    javascript实例
    selenium webDriver属性
    获取豆瓣电影数据
    新浪微博超话题签到demo
    java读取XML文件的四种方法总结(必看篇)
    StringReader分析
  • 原文地址:https://www.cnblogs.com/renyuan/p/2553951.html
Copyright © 2011-2022 走看看