【问题标题】:Google places API - How to get regions of a country?Google Places API - 如何获取一个国家的地区?
【发布时间】:2013-03-09 03:19:40
【问题描述】:

我在网站上一遍又一遍地寻找这个简单的问题,但没有找到答案 我认为这是非常普遍的需求 假设您有两个下拉列表 一个你想用国家列表填充,一旦你选择了一个 - 用它的地区列表填充另一个。 甚至可以使用 Google Places API 吗? 干杯:)

【问题讨论】:

  • 听起来你正在尝试做类似this 的事情。不使用 Places API,使用 FusionTables 中的 Natural Earth 数据集。 Spain(适用于数据集中的大多数国家/地区)
  • 我也在寻找相同的。您能否与我分享一下您最终是如何实现这一目标的?

标签: google-maps geocoding google-places-api google-geocoding-api google-places


【解决方案1】:

不,Places API 不可能。

您有两个选择: 使用另一个数据库

有一些免费的国家/州列表数据库。请查看以下问题以获取一些示例:

List of Cities by Country
https://raw.githubusercontent.com/David-Haim/CountriesToCitiesJSON/master/countriesToCities.json

创建您自己的数据库

创建您自己的每个国家/地区的州数据库。不推荐,因为这会浪费宝贵的时间。

【讨论】:

  • 谢谢你的回答@Homeliss 你说得对,浪费时间创建我自己的数据库我目前正在使用多种地理名称和谷歌地点,但真的想统一所有因此,ID、名称、边界、一致性真的想确保没有办法使用 Google 地方 API 来做到这一点......其他服务不是我们要采取的路线,而是试图避免。谢谢你的帮助。
【解决方案2】:

是的,有可能

  1. 以下代码可用于根据过滤器获取状态

  2. IN 是国家代码,仅在印度搜索时需要该代码

  3. REGIONS 是我们搜索时获取状态的过滤器

  4. 需要有效的 Places API 密钥

    val fields = listOf(Place.Field.ID, Place.Field.NAME)
    
     searchLocationForCreatePost = findViewById(R.id.searchLocationForCreatePost)
    
    
     if (!Places.isInitialized()) {
         Places.initialize(getApplicationContext(), getString(R.string.api_key), Locale.US);
     }
     searchLocationForCreatePost.setOnClickListener {
    
         val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields)
             .setCountry("IN")
             .setTypeFilter(TypeFilter.REGIONS)
             .build(this)
         startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE)
     }
    

  • 在 onActivityResult 中获取结果 -

-------'

  override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
        when (resultCode) {
            Activity.RESULT_OK -> {
                data?.let {
                    val place = Autocomplete.getPlaceFromIntent(data)
                    Log.i("TAG", "Place: ${place.name}, ${place.id}")
                }
            }
            AutocompleteActivity.RESULT_ERROR -> {
                // TODO: Handle the error.
                data?.let {
                    val status = Autocomplete.getStatusFromIntent(data)
                    Log.i("TAG", status.statusMessage.toString())
                }
            }
            Activity.RESULT_CANCELED -> {
                // The user canceled the operation.
            }
        }
        return
    }
    super.onActivityResult(requestCode, resultCode, data)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-28
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多