百度地图定位 : 获取当前位置的经纬度_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 百度地图定位 : 获取当前位置的经纬度

百度地图定位 : 获取当前位置的经纬度

 2014/11/19 0:08:59  畅遨  程序员俱乐部  我要评论(0)
  • 摘要:说明:1.初始化BaiduMapSDK要在显示界面之前,即:SDKInitializer.initialize(Context);setContentView(R.layout.main);2.设置定位的模式是LocationMode.Hight_Accuracy时,在室内可能无法获取到准确的经纬度,会得到默认的值是4.9E-324处理办法是将模式改为Battery_Saving,或到室外3
  • 标签:经纬 百度 定位

说明:

1.初始化 BaiduMap SDK要在显示界面之前,即:

 SDKInitializer.initialize(Context);

  setContentView(R.layout.main);

2. 设置定位的模式是 LocationMode.Hight_Accuracy 时,在室内可能无法获取到准确的经纬度,会得到默认的值是4.9E-324

    处理办法是将模式改为Battery_Saving,或到室外

3.可以根据当前设备网络连接情况和GPS是否开启来设定定位模式

   //获得网络连接情况

          ConnectivityManager cManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

         NetworkInfo info = cManager.getActiveNetworkInfo();

   //获取GPS的连接情况
        LocationManager lManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     if(lManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
               Toast.makeText(this, "GPS已开启", 0).show();
         }

 

4.使用经纬度要在public void onReceiveLocation(BDLocation loc) {}方法中操作

 

步骤一:导入百度定位SDK包

 

第二部:在AndroidManifest.xml清单文件中添加访问权限和服务等,代码如下:

class="code_img_closed" src="/Upload/Images/2014111900/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('bbe2606e-778e-4c15-b197-8107e0b81f32',event)" src="/Upload/Images/2014111900/2B1B950FA3DF188F.gif" alt="" />
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.qf.location"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6 
 7     <uses-sdk
 8         android:minSdkVersion="8"
 9         android:targetSdkVersion="18" />
10     
11     <!-- 添加的内容 1 (访问权限) -->
12    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
13     <uses-permission android:name="android.permission.USE_CREDENTIALS" />
14     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
15     <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
16     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
17     <uses-permission android:name="android.permission.INTERNET" />
18     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
19     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
20     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
21     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
22     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
23     <uses-permission android:name="android.permission.BROADCAST_STICKY" />
24     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
25     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
26     <!-- 这个权限用于进行网络定位 -->
27     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
28     </uses-permission>
29     <!-- 这个权限用于访问GPS定位 -->
30     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
31     </uses-permission>
32     <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
33     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
34     </uses-permission>
35     <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
36     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
37     </uses-permission>
38     <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
39     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
40     </uses-permission>
41     <!-- 用于读取手机当前的状态 -->
42     <uses-permission android:name="android.permission.READ_PHONE_STATE" >
43     </uses-permission>
44     <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
45     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
46     </uses-permission>
47     <!-- 访问网络,网络定位需要上网 -->
48     <uses-permission android:name="android.permission.INTERNET" />
49     <!-- SD卡读取权限,用户写入离线定位数据 -->
50     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
51     </uses-permission>
52     <!-- 允许应用读取低级别的系统日志文件 -->
53     <uses-permission android:name="android.permission.READ_LOGS" >
54     </uses-permission>
55     
56     <application
57         android:allowBackup="true"
58         android:icon="@drawable/ic_launcher"
59         android:label="@string/app_name"
60         android:theme="@style/AppTheme" >
61         <activity
62             android:name="com.qf.location.MainActivity"
63             android:label="@string/app_name" >
64             <intent-filter>
65                 <action android:name="android.intent.action.MAIN" />
66 
67                 <category android:name="android.intent.category.LAUNCHER" />
68             </intent-filter>
69         </activity>
70         
71         <!-- 添加的内容 2 -->
72          <meta-data
73             android:name="com.baidu.lbsapi.API_KEY"
74             android:value="Dt7Q30nVQMKbM3NT6GHnRnGq" />
75 
76         <service
77             android:name="com.baidu.location.f"
78             android:enabled="true"
79             android:process=":remote" >
80         </service>
81     </application>
82  
83 </manifest>
View Code

第三步: 申请 百度地图开发密钥:在上步中显示的<meta_data >标签的value属性上设置

第四步:写代码获取当前位置经纬度:代码如下:

 1 private LocationClient locClient;
 2     
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         
 7         //显示界面之前初始化 BaiduMap SDK
 8         SDKInitializer.initialize(getApplicationContext());
 9         setContentView(R.layout.activity_main);
10         
11   
12         getLocation();
13     }
14    
15 
16      //获取手机当前所在位置的经纬度
17     public void  getLocation(){
18         //实例化位置客户端
19         locClient = new LocationClient(getApplicationContext());
20         //创建一个位置option对象
21         LocationClientOption locOption = new LocationClientOption();
22         
23         //设置option的属性
24         locOption.setCoorType("bd09II");  // bd09II表示返回的结果是百度的经纬度
25         locOption.setIsNeedAddress(true); //返回的信息包含当前的地址
26         locOption.setNeedDeviceDirect(true); //返回的内容包含手机机头的方向
27         locOption.setScanSpan(5000); //每5秒发起一次定位请求
28         locOption.setLocationMode(LocationMode.Hight_Accuracy); //高精度模式,网络和GPS
29         
30         
31         //将封装的参数设置到位置客户端
32         locClient.setLocOption(locOption);
33         
34         //给位置客户端注册位置监听
35         locClient.registerLocationListener(new BDLocationListener() {
36             
37             @Override
38             public void onReceiveLocation(BDLocation loc) {
39               double latitude = loc.getLatitude();
40               double longitude = loc.getLongitude();
41               Toast.makeText(getApplicationContext(), latitude+":"+longitude, 0).show();
42               
43               /*================================此处定义接口=====================*/
44                 
45             } 
46         });
47         
48         //启动位置客户端
49         locClient.start();
50         
51     }
View Code

 

发表评论
用户名: 匿名