日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 通过高德地图获取地址的经纬度

發布時間:2024/4/15 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 通过高德地图获取地址的经纬度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不廢話,需求:輸入一個地址,獲取到它的經緯度,怎么辦?

1、到高德開放平臺申請,獲取key

高德開放平臺:https://lbs.amap.com/

?

?2、下載高德定位及地址搜索SDK:https://download.csdn.net/download/meixi_android/10845407

?

3、項目綁定高德SDK

1)配置key

<meta-data android:name="com.amap.api.v2.apikey"android:value="c8f6c5070cd7fd3ece3b50b342218487" /><service android:name="com.amap.api.location.APSService"></service></application>


?

(2)activity實現定位接口

implements AMapLocationListener

//實現方法

@Overridepublic void onLocationChanged(AMapLocation aMapLocation) {}

(3)已知地址獲取經緯度方法:
?

private void getLatlon(String cityName){GeocodeSearch geocodeSearch=new GeocodeSearch(this);geocodeSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() {@Overridepublic void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {}@Overridepublic void onGeocodeSearched(GeocodeResult geocodeResult, int i) {if (i==1000){if (geocodeResult!=null && geocodeResult.getGeocodeAddressList()!=null &&geocodeResult.getGeocodeAddressList().size()>0){GeocodeAddress geocodeAddress = geocodeResult.getGeocodeAddressList().get(0);double latitude = geocodeAddress.getLatLonPoint().getLatitude();//緯度double longititude = geocodeAddress.getLatLonPoint().getLongitude();//經度String adcode= geocodeAddress.getAdcode();//區域編碼Log.e("lgq地理編碼", geocodeAddress.getAdcode()+"");Log.e("lgq緯度latitude",latitude+"");Log.e("lgq經度longititude",longititude+"");Log.i("lgq","dddwww===="+longititude);}else {Toast.makeText(MainActivity.this,"地名出錯",Toast.LENGTH_SHORT).show();// ToastUtils.show(context,"地址名出錯");}}}});GeocodeQuery geocodeQuery=new GeocodeQuery(cityName.trim(),"29");geocodeSearch.getFromLocationNameAsyn(geocodeQuery);}

測試數據:

getLatlon("東莞市東城街道溫塘橫嶺工業區二街38號");

結果:

12-12 13:51:52.555 21394-21394/com.tianxin.mapclient.liteapp E/lgq地理編碼: 441900
12-12 13:51:52.555 21394-21394/com.tianxin.mapclient.liteapp E/lgq緯度latitude: 23.036034
12-12 13:51:52.556 21394-21394/com.tianxin.mapclient.liteapp E/lgq經度longititude: 113.816161
?

如果沒有出現數據,看看? ? ? ? ? ? public void onGeocodeSearched(GeocodeResult geocodeResult, int i) 返回的i值是不是1008,如果是,說明你的appkey和你在高德地圖申請的appkey不一樣,注意編譯的keyStore要和高德地圖的一樣。如果用Android studio 直接運行是用的Android studio自帶的debug.keystore,它的默認位置在?$HOME/.android/debug.keystore,例如我的debug.keystore就在???C:\Users\devil\.android\debug.keystore? 。再我們正式發布項目的時候是不能使用debug.keystore的。

?

4、計算兩個坐標的距離

LatLng latLng2=new LatLng(23.025845,113.752532);LatLng latLng=new LatLng(23.025845,113.772532);float distance = AMapUtils.calculateLineDistance(latLng,latLng2);float qianmifload =(float) distance/1000;Log.i("lgq","sss===="+round(qianmifload,2)+" 千米");

四舍五入到兩位小數

public static float round(float v, int scale)
{
? ? if (scale < 0)
? ? ? ? throw new IllegalArgumentException("The scale must be a positive integer or zero");
? ? BigDecimal bgNum1 = new BigDecimal(Float.toString(v));
? ? BigDecimal bgNum2 = new BigDecimal("1");
? ? return bgNum1.divide(bgNum2, scale, BigDecimal.ROUND_HALF_UP).floatValue();
? ? // return b.setScale(scale, BigDecimal.ROUND_HALF_UP).floatValue();
}
?

?

以后都只會寫這種有深度的文章了,不會像之前寫一些Android 控件,系統api的使用這些簡單的內容。因為寫了很多,不僅沒有對技術提升有幫助,還浪費了很多時間。

?

?

總結

以上是生活随笔為你收集整理的Android 通过高德地图获取地址的经纬度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。