将Google地方自动填充功能限制在城市内

时间:2017-12-10 17:42:36

标签: android google-places-api placeautocompletefragment

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

但是,如何获取用户当前位置的城市?我可以得到纬度,经度。但是,如何检索对应于特定纬度和长度的城市?

我是否需要反转地址从lat进行地理编码,以获取地址?但如果我这样做,那么我如何可靠地获得城市名称?此后,PlaceAutocompleteFragment中设置“城市”过滤器的正确条款是什么?

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

2 个答案:

答案 0 :(得分:3)

function zoomeExtends(){
  var bounds = new google.maps.LatLngBounds();
  if (markers.length>0) { 
      for (var i = 0; i < markers.length; i++) {
         bounds.extend(markers[i].getPosition());
        }    
        myMap.fitBounds(bounds);
    }
}

$string = "newboay1fineboy8badboiy12 boy4andothersfollows..."; $string = preg_match_all("/bo\d+/", $string, $results); foreach($results[0] as $val){ if($val !== boy) { echo $val; } autocompleteFragment.setBoundsBias(new LatLngBounds(southwestLatLng, northeastLatLng)); ,它由两个setBoundsBias()个对象组成,代表一个边界矩形的西南和东北点。 Google API似乎没有提供获取城市边界的方法,因此您必须弄清楚在其中搜索的可接受半径,并从用户的当前纬度和经度中减去/添加以获得该点的两个点。边界矩形。请参阅:Calculating bounding box a certain distance away from a lat/long coordinate in Java

答案 1 :(得分:1)

获得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