android - 如何从android(kotlin)中的地点ID获取地点详细信息
问题描述
嗨,我想使用 placeID 获取地点详细信息,并使用 kotlin 在 android 地图活动中添加标记。我已经用 latlng 完成了,但没有用 placeID 。可以请任何帮助。我的代码带有 latlng 。
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
val mdis= LatLng(1.301440, 103.847980)
mMap.addMarker(MarkerOptions().position(mdis).title("MDIS").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)))
mMap.moveCamera(CameraUpdateFactory.newLatLng(mdis))
mMap.animateCamera(CameraUpdateFactory.zoomIn())
mMap.animateCamera(CameraUpdateFactory.zoomTo(15F),2000,null)
mMap.uiSettings.isZoomControlsEnabled=true
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mMap.isMyLocationEnabled = true
}
else {//condition for Marshmello and above
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), MY_PERMISSION_FINE_LOCATION)
}
}
mMap.setOnMarkerClickListener(this)
}
试过了,在 placesClient.fetchPlace(request).addOnSuccessListener(response) ->{ 错误说 Type mismatch Required: OnSuccessListener found : FetchplaceResponse
这是我更新的代码:
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
var mdisplaceId = "ChIJRwCirzca2jERhd68E52R_2Q"
//val placesClient = Places.createClient(this)
var placeFields : List<Place.Field>
placeFields = Arrays.asList(Place.Field.ID , Place.Field.NAME)
var request : FetchPlaceRequest
request = FetchPlaceRequest.newInstance(mdisplaceId, placeFields)
lateinit var response : FetchPlaceResponse
lateinit var placesClient : PlacesClient
placesClient.fetchPlace(request).addOnSuccessListener(response) ->{ //error at this line near response
var place : Place
place = response.getPlace()
})
}
解决方案
使用地理编码 API,
这将返回以下 json 响应,
{
"results" : [
{
"address_components" : [
{
"long_name" : "277",
"short_name" : "277",
"types" : [ "street_number" ]
},
{
"long_name" : "Bedford Avenue",
"short_name" : "Bedford Ave",
"types" : [ "route" ]
},
{
"long_name" : "Williamsburg",
"short_name" : "Williamsburg",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Brooklyn",
"short_name" : "Brooklyn",
"types" : [ "political", "sublocality", "sublocality_level_1" ]
},
{
"long_name" : "Kings County",
"short_name" : "Kings County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "New York",
"short_name" : "NY",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "11211",
"short_name" : "11211",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
"geometry" : {
"location" : {
"lat" : 40.7142205,
"lng" : -73.9612903
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 40.71556948029149,
"lng" : -73.95994131970849
},
"southwest" : {
"lat" : 40.7128715197085,
"lng" : -73.9626392802915
}
}
},
"place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
"types" : [ "street_address" ]
}
],
"status" : "OK"
}
从几何对象获取纬度并在谷歌地图上添加标记。
推荐阅读
- c++ - 编写 MethodChannel 桥与 dart:ffi 桥以运行 c/c++ 代码以获取响应之间有什么区别?
- python - Python IndexError:列表索引超出范围。有人能帮我吗?
- electron - 包括非电子文件夹作为 NSIS 安装的一部分
- wordpress - Woocommerce 产品仅“有货”
- ipad - GWT:文本框在 Ipad 上不显示光标
- java - Java Regex 将连续的单词和数字返回到 arraylist
- python - python中序列中碱基的频率
- python - 如何根据两列过滤时间序列熊猫数据框?
- r - 错误:参数暗示不同的行数:42、15,将数据转换为数据帧
- javascript - 如何使按钮更具反应性