android端没必要使用第三方地图的时候,可以直接使用 smart-location-lib 这个库:
https://github.com/mrmans0n/smart-location-lib
kotlin代码自己可以改成java的
引入使用:
一、引入库:
implementation 'io.nlopez.smartlocation:library:3.3.3'
二、准备好使用的权限:
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
6.0以上动态权限的申请自行处理 ( https://www.jianshu.com/p/6e306729bb0d )
三、直接使用:
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
SmartLocation.with(this).location()
.start {
location ->
result.text = location.latitude.toString()
// 解析地址并显示 69
val geoCoder = Geocoder(this)
try {
val latitude = location.latitude
val longitude = location.longitude
val list = geoCoder.getFromLocation(latitude.toDouble(), longitude.toDouble(), 2)
for (i in list.indices) {
val address = list[i]
resultAddress.text = address.countryName
Toast.makeText(this, address.countryName + address.adminArea + address.featureName, Toast.LENGTH_LONG).show()
}
} catch (e: IOException) {
}
}
}