谷歌放置API - 如何获得一个国家的地区?

时间:2013-03-20 06:19:17

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

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

2 个答案:

答案 0 :(得分:2)

不,使用Places API是不可能的。

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

有一些国家/州名单的免费数据库。有关示例,请查看以下问题:

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

创建自己的数据库

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

答案 1 :(得分:0)

是的,这是可能的

  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)
}