限制 Google 将自动完成放置在一个城市内

Restrict Google Place Autocomplete to within a city

目前,我正在开发一款餐厅应用程序,人们可以在其中拍照并将照片标记到 Google 地点。但是,由于我的应用程序针对的是印度等发展中国家,因此 Google 地点的定义并不十分明确。所以我允许用户搜索他们认为更准确地反映他们最喜欢的餐厅位置的地方。 我正在使用 Google Places API for androidPlaceAutocompleteFragment 片段作为用户搜索他们最喜欢的关节的输入机制。但是,为了让他们更容易选择,我想将结果偏向特定区域 - 更具体地说是他们执行搜索的城市。

但是,如何获取用户当前位置的城市?我可以得到纬度,经度。但是如何获取某个经纬度对应的城市呢?

我是否需要对经纬度的地址进行反向地理编码才能获取地址?但如果我这样做,那么我如何才能可靠地获得城市名称呢?此后,PlaceAutocompleteFragment 中设置 'city' 过滤器的正确规定是什么?

那么最简单的方法是什么?有任何想法吗?欣赏一下。

获得 address 形式后 Geocoder 您可以从地址本身获得城市名称。 希望下面的代码能帮到你

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
 List<Address> addresses = geocoder.getFromLocation(MyLat, MyLong, 1);
 String cityName = addresses.get(0).getAddressLine(0);
 String stateName = addresses.get(0).getAddressLine(1);
 String countryName = addresses.get(0).getAddressLine(2);

有关更详细的 google 地图示例,请查看以下链接:http://www.demoadda.com/demo/android/load-googlemap_107

autocompleteFragment.setBoundsBias(new LatLngBounds(southwestLatLng, northeastLatLng));

setBoundsBias() 接受一个 LatLngBounds,它由两个 LatLng 对象组成,分别表示边界矩形的西南点和东北点。 Google API 似乎没有提供获取城市边界的方法,因此您必须找出可接受的搜索半径和 subtract/add 从用户当前的纬度和经度到导出边界矩形的两个点。参见:Calculating bounding box a certain distance away from a lat/long coordinate in Java