这是我的代码

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))
            }
        }
    }
}

07-26 09:41
查看更多