使用 Google Places(新)API 文本搜索功能与特定地址

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

我正在尝试使用 Google Places(新)API 根据特定地址返回地点。这是请求的正文:

  {
   "textQuery" : "$query",
    "locationBias": {
        "circle": {
            "center": {
                "latitude": 37,
                "longitude": -36
      },
            "radius": 50000
    }
  }
 }

如果我传入“披萨”或“我附近的披萨”,我会得到一组在指定位置符合该描述的对象。其中之一是棒约翰 (Papa Johns),位于水星大道东 231 号。如果我传入 231 emercury blvd,我会得到一个空值和一个错误,日志中显示“序列名‘com.example.surge_app.data.GooglePlacesList’的类型需要字段‘places’,但它在以下位置缺失:路径:$”

这向我表明将 JSON 字符串反序列化为 Kotlin 对象时存在问题。这是我的 Kotlin 对象:


    @Serializable
    data class DisplayName(
        val text: String,
        val languageCode: String
    )

    @Serializable
    data class Place(
        val formattedAddress: String,
        val displayName: DisplayName
    )

    @Serializable
    data class GooglePlacesList(
        val places: List<Place>
    )


我使用了 API 文档中的“尝试”功能,可以在此处找到该功能。如果您将我的请求正文复制并粘贴到此链接的字段中,并将 $query 替换为 Pizza 或 231 e Mercury blvd,我会得到预期的响应。在我的应用程序中输入 231 e Mercury blvd 时得到的响应为空,我不确定为什么。

我已尽力遵循文档,但找不到我正在做的事情有任何问题。我检查了我的 gradle 依赖项,一切都正确。

kotlin google-api
1个回答
0
投票

我在使用 Swift 时与 Google 遇到了类似的问题。使用 Google 的 TextSearch API,我无法找到特定的商店。然而,在搜索“纽约披萨”等通用地点时,我得到了答案。我的解决方案是使用 Google 的 Autocomplete API,它可以返回特定的 PlaceID!

我的解决方案是用 Swift 编写的,但请随意检查一下: Swift 自动完成而不是文本搜索

© www.soinside.com 2019 - 2024. All rights reserved.