android下利用高德地图获取经纬度等定位信息

来源:互联网 发布:java培训班能就业吗 编辑:程序博客网 时间:2024/04/29 10:13

第 1 步,配置AndroidManifest.xml


首先,声明Service组件

请在application标签中声明service组件,每个app拥有自己单独的定位service。

1
<service android:name="com.amap.api.location.APSService"></service>

然后,声明权限

Android 6.0及以上系统可以参考Android 6.0权限说明章节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

设置高德地图的key

设置高德地图的key
<meta-data android:name="com.amap.api.v2.apikey"android:value="key">//开发者申请的key      
             
</meta-data>


接下来写个demo代码
package com.aeckj.fuelgas;import com.amap.api.location.AMapLocation;import com.amap.api.location.AMapLocationClient;import com.amap.api.location.AMapLocationClientOption;import com.amap.api.location.AMapLocationClientOption.AMapLocationMode;import com.amap.api.location.AMapLocationListener;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class LocationTestActivity extends Activity {//声明AMapLocationClient类对象public AMapLocationClient mLocationClient = null;//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener() {@Overridepublic void onLocationChanged(AMapLocation amapLocation) {// TODO Auto-generated method stubif (amapLocation != null) {    if (amapLocation.getErrorCode() == 0) {    //可在其中解析amapLocation获取相应内容。    double locationType = amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表    double latitude = amapLocation.getLatitude();//获取纬度    Log.e("Amap==经度:纬度", "locationType:"+locationType+",latitude:"+latitude);    }else {    //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。    Log.e("AmapError","location Error, ErrCode:"        + amapLocation.getErrorCode() + ", errInfo:"        + amapLocation.getErrorInfo());    }}}};//声明AMapLocationClientOption对象public AMapLocationClientOption mLocationOption = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听mLocationClient.setLocationListener(mLocationListener);//初始化AMapLocationClientOption对象mLocationOption = new AMapLocationClientOption();//设置定位模式为AMapLocationMode.Battery_Saving,低功耗模式。mLocationOption.setLocationMode(AMapLocationMode.Battery_Saving);//给定位客户端对象设置定位参数mLocationClient.setLocationOption(mLocationOption);//启动定位mLocationClient.startLocation();/** * 获取一次定位 *///该方法默认为false,true表示只定位一次mLocationOption.setOnceLocation(true);  }@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();mLocationClient.stopLocation();}}



1 0