現(xiàn)在APP中用到的定位功能是越來越常見的了虹钮,下面就是我在使用百度地圖定位的時候走的一些流程适袜,話不多說兑凿,直接開始:
1.首先我們要在百度地圖開放平臺(如果不知道地址谈为,點這里)上注冊一個賬號并登錄,點擊API控制臺瓤逼,如下圖:
2.點擊創(chuàng)建應(yīng)用笼吟,如下圖
3.填寫你的應(yīng)用信息,應(yīng)用名稱就是你的APP_NAME霸旗,應(yīng)用類型選擇“Android SDK”,如下圖
選擇你需要的額服務(wù)贷帮,下面的SHA1,要通過如下方法去獲扔崭妗:
在AndroidStudio中的獲取方法為:
(1)打開as下面的Terminal
(2)輸入:D:\AndroidStudioProjects\xiangwai>"D:\android\Java\jre7\bin\keytool.exe "
-list -v -keystore "D:\android\xiangwai\keystore.jks"
注釋:(D:\AndroidStudioProjects\xiangwai>"D:\android\Java\jre7\bin\keytool.exe "
)為你的keytool.exe路徑撵枢;("D:\android\xiangwai\keystore.jks")為你的簽名文件的路徑,一定不要寫錯精居,否則是看不到的锄禽。
(3)輸入秘鑰庫口令:簽名文件的密碼
(4)回車;看到如下信息
則表示獲取成功靴姿,
如上圖所示沃但,我們就拿到了SHA1,最后再輸入我們項目的包名佛吓,點擊提交宵晚。
5.點擊查看應(yīng)用垂攘,就可以看到我們創(chuàng)建的項目了,也獲取到APP中需要的key,如下圖
?6.接下來就是下載我們需要的sdk啦淤刃,點擊首頁晒他,在開發(fā)中選擇你需要的sdk,點擊相關(guān)下載钝凶,就可以看到下載sdk的地方仪芒,如下圖:
7.下載好了之后唁影,就是在項目中的部署了耕陷,將下載的sdk里面的將so文件的壓縮文件解壓出來,把對應(yīng)架構(gòu)下的so文件放入開發(fā)者自己APP的對應(yīng)架構(gòu)下的文件夾中(建議全部放入以提高程序兼容性)据沈,將locSDK_6.X.jar文件拷貝到工程的libs目錄下哟沫,這樣您就可以在程序中使用百度定位SDK了。(我是將so文件放在jniLIiba下面锌介,這個文件夾是我自己創(chuàng)建的嗜诀,如下圖:)
然后將jar文件放入libs文件夾下面,這樣準(zhǔn)備工作基本是完成了孔祸。
8.接下來就是在項目中的使用了隆敢,首先,我們在AndroidManifest.xml中添加需要的權(quán)限,如下:
然后再聲明Servie和meta-data,value就是我們在開放平臺上創(chuàng)建應(yīng)用獲取到的key,如下圖:
9.最后就是使用百度地圖進行定位了崔慧,直接上代碼拂蝎,我是這么做的:
(1)先聲明定位的類及接口回掉
private LocationClient mLocationClient=null;
private BDLocationListener myListener=newMyLocationListener();
(2)在需要獲取定位信息的地方調(diào)用如下代碼
mLocationClient=newLocationClient(getApplicationContext());//聲明LocationClient類
mLocationClient.registerLocationListener(myListener);//注冊監(jiān)聽函數(shù)
initLocation();
mLocationClient.start();
(3)需要的方法的代碼
private voidinitLocation() {
LocationClientOption option =newLocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可選,默認(rèn)高精度惶室,設(shè)置定位模式温自,高精度,低功耗皇钞,僅設(shè)備
option.setCoorType("bd09ll");//可選悼泌,默認(rèn)gcj02,設(shè)置返回的定位結(jié)果坐標(biāo)系
intspan =1000;
option.setScanSpan(span);//可選夹界,默認(rèn)0馆里,即僅定位一次,設(shè)置發(fā)起定位請求的間隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);//可選可柿,設(shè)置是否需要地址信息鸠踪,默認(rèn)不需要
option.setOpenGps(true);//可選,默認(rèn)false,設(shè)置是否使用gps
option.setLocationNotify(true);//可選趾痘,默認(rèn)false慢哈,設(shè)置是否當(dāng)gps有效時按照1S1次頻率輸出GPS結(jié)果
option.setIsNeedLocationDescribe(true);//可選,默認(rèn)false永票,設(shè)置是否需要位置語義化結(jié)果卵贱,可以在BDLocation.getLocationDescribe里得到滥沫,結(jié)果類似于“在北京天安門附近”
option.setIsNeedLocationPoiList(true);//可選,默認(rèn)false键俱,設(shè)置是否需要POI結(jié)果兰绣,可以在BDLocation.getPoiList里得到
mLocationClient.setLocOption(option);
}
public classMyLocationListenerimplementsBDLocationListener {
@Override
public voidonReceiveLocation(BDLocation location) {
String address = location.getAddrStr();//拿到地址
if(StringUtil.isEmpty(address)) {
return;
}
if(!StringUtil.isEmpty(address)) {
edittext.setText(address);
Editable etext =edittext.getText();
Selection.setSelection(etext,etext.length());//光標(biāo)定位到最后
mLocationClient.stop();
}
}
}
address 就是我們定位到的地址啦,以上就是我們使用百度地圖定位的流程编振,第一次寫缀辩,寫的不好,有什么問題希望大家多多補充踪央,我也會一直進步的臀玄。
(*/ω╲*)