【问题标题】:Place API- How to get the NearbyList of a Specific(Different) LocationPlace API-如何获取特定(不同)位置的 NearbyList
【发布时间】:2019-11-06 07:28:00
【问题描述】:

我集成了新的地点 API,我正在使用以下方法获取最近的地点列表。

 private fun getNearestPlaceList(placesClient: PlacesClient) {
        val placeFields = listOf(Place.Field.NAME, Place.Field.ID, Place.Field.LAT_LNG)
        val request = FindCurrentPlaceRequest.builder(placeFields).build()
        placesClient.findCurrentPlace(request).addOnSuccessListener { response ->
            placeList.clear()
            response.placeLikelihoods.map { placeLikelihood -> placeLikelihood.place }
                    .filter { place -> !place.id.isNullOrEmpty() && !place.name.isNullOrEmpty() }
                    .forEach { place ->
                        val placeModel = PlaceModel(place.name!!, place.id!!)
                        placeList.add(placeModel)
                    }
            setAdapter(placeList)
        }.addOnFailureListener { exception ->
            if (exception is ApiException) {
                Log.e(TAG, "Place not found: " + exception.statusCode)
            }
        }
    }

当前 API 仅收集我设备当前位置的最近位置。但我的要求是获得特定(不同)位置的最近位置。那么是否可以将位置信息(不同的经纬度)输入到 API 并获取该位置的最近列表?目前,API 正在自动收集当前位置并发送最近地点列表。谁有解决方案,请更新?

【问题讨论】:

  • 我正在使用下面的方法获取最近的地点列表 + 要求是获取最近的地点 + 获取最近的地点列表那个位置的 = ???完全不清楚您要达到的目标。请编辑您的问题,以便清楚。
  • @MrUpsidown:我已经编辑了这个问题。我的要求是获取离我当前位置很远的另一个地方的最近位置列表。你清楚吗?
  • 我不知道 Android API 附带了什么,但您当然可以使用 Places API 中的 Nearby Search 网络服务。看看Client libraries也许...
  • 对于某些位置 response.placeLikelihoods 是空的!例如纬度:42.563820 经度:-83.300232

标签: android google-maps google-places-api google-maps-android-api-2


【解决方案1】:

Places SDK 目前不支持从特定位置(不是设备的当前位置)获取最近的地点。澄清一下,FindCurrentPlaceResponse 中的PlaceLikelihood 是设备可能所在的位置。

FindCurrentPlaceResponse 包含 PlaceLikelihood 列表 表示设备可能所在位置的对象。 对于每个地点,结果都包括可能性的指示 这个地方是正确的。列表可能为空,如果没有 与给定设备位置对应的已知地点。

据我了解,您可以通过 Places API - Nearby Search 获取特定位置的附近地点列表。

“附近搜索”可让您搜索指定区域内的地点。 您可以通过提供关键字或指定来优化您的搜索请求 您正在搜索的地点类型。

示例请求:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=1500&type=restaurant&keyword=cruise&key=YOUR_API_KEY

还有一些可用的开源客户端库可用于 Google 地图网络服务。更多信息here.

最后,在 Google 的公共问题跟踪器中还有一个现有的功能请求。我建议您“加注星标”以接收更新。 https://issuetracker.google.com/issues/133276015

希望这会有所帮助!

【讨论】:

  • 感谢您的回复。我知道这个 API,我的问题是我们是否可以通过 Place SDK 做到这一点。谢谢!
  • 这是一个非常清晰彻底的答案。但是,Android SDK 中的 findCurrentPlace() 和 http API 中的 Nearby Search 这两个 API 并不完全相同。第一个似乎可以为您预测您在相应位置的可能性(因此在响应中使用名称PlaceLikelihood),不幸的是第二个没有。我还有一个用例,我需要一个 findCurrentPlace(lat, lon),但它不存在(也许这是因为 findCurrentPlace() 的算法使用的功能不仅仅是 (lat, lon)预测可能性)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
相关资源
最近更新 更多