Android、Kotlin、Google 地图标记

问题描述 投票:0回答:1

我正在尝试在 Android Studio 中使用 Kotlin 开发 Android 应用程序。我想在 Google 地图的应用程序中为药房做标记。我的问题在我的代码中:

private fun searchNearbyPharmacies(location: LatLng) {

    val placeFields = listOf(Place.Field.DISPLAY_NAME, Place.Field.LOCATION, Place.Field.TYPES)
    val request = FindCurrentPlaceRequest.newInstance(placeFields)

    placesClient.findCurrentPlace(request)
        .addOnSuccessListener { response ->
            for (placeLikelihood in response.placeLikelihoods) {
                val place = placeLikelihood.place
                val placeTypes = placeLikelihood.place.placeTypes
                placeTypes?.forEach { placeType ->
                    Log.i("PlaceType", "Place type: $placeType")
                }
                
                if (placeTypes?.contains(PlaceTypes.PHARMACY) == true) {
                    val latLng = place.location
                    latLng?.let {
                        addMarkerForPharmacy(latLng, place.displayName ?: "Pharmacy")
                    }
                }
            }
        }.addOnFailureListener { exception ->
            exception.printStackTrace()
        }
}

在 placeTypes 中没有 Pharmacy 这样的东西,为什么呢?我该如何修复它?

该代码的工作原理就像我在以下代码中将其从 PlaceTypes.PHARMACY 更改为 PlaceTypes.MUSEUM

if (placeTypes?.contains(PlaceTypes.MUSEUM) == true) 

我可以为其他类型的地方(例如本例中的博物馆)制作标记。

提前致谢。

代码很好,因为我可以制作诸如设施、兴趣点、博物馆等标记。但是那里没有药房。但如果我放大地图,我可以看到药房。我在模拟器和真实设备上都尝试过。

我在日志中写了placeTypes,只有这些类型:

placeTypes?.forEach { placeType ->Log.i("PlaceType", "Place type: $placeType")}

I  Place type: tourist_attraction
I  Place type: point_of_interest
I  Place type: establishment
I  Place type: street_address
I  Place type: transit_station
I  Place type: cafe
I  Place type: bar
I  Place type: restaurant
I  Place type: food
I  Place type: store
I  Place type: museum
android kotlin google-maps google-maps-android-api-2
1个回答
0
投票

在 Google Places 4.0.0 版本中,有一个 Pharmacy 类型,您可能需要更新您的图书馆版本。

 public static final String PHARMACY = "pharmacy";
© www.soinside.com 2019 - 2024. All rights reserved.