这是我的代码
mGeoDataClient.getAutocompletePredictions("Supermarket", null, null).addOnSuccessListener {
it.forEach {
it.placeId?.let {
mGeoDataClient.getPlaceById(it).addOnSuccessListener {
val marker = it[0].latLng
val name = it[0].name.toString()
mMap.addMarker(MarkerOptions().position(marker).title(name))
}
}
}
}
对于发现的每个超市,只要自动完成预测中不包含此信息,而仅包含地点ID,就必须再次请求获取经纬度。
有更好的方法吗?
最佳答案
据我所知,您无法保存两次调用,但是由于您要返回列表,因此可以使用getPlaceById(String ... placeIds)调用来保存n个调用。
mGeoDataClient.getAutocompletePredictions("Supermarket", null, null).addOnSuccessListener {
it.map{ it.placeId}.filterNotNull().toTypedArray().let {
mGeoDataClient.getPlaceById(*it).addOnSuccessListener {
it.forEach{
val marker = it.latLng
val name = it.name.toString()
mMap.addMarker(MarkerOptions().position(marker).title(name))
}
}
}
}