我在 Java 中使用谷歌雷达地点搜索 API。我正在使用特定区域的纬度、经度和半径(距离)发出请求。我收到大约 200 个响应(此 API 最多)。如果我收到 200 个响应,我必须使用纬度和经度将我的请求分成更小的尺寸,以便我可以覆盖圆圈的整个区域以获取有关该区域所有地点的详细信息。那么,如何使用纬度、经度和半径来划分圆形区域呢?只有这样,我才能得到那个地区的每一个地方。请帮帮我。
这是代码,
调用API的方法,我给了我的纬度,经度,类型=餐厅,半径= 20000(找出该地区20公里内的餐厅)
public void performGooglePlaceSearch(double lati,double lang,int rad,String type,String key)
{
try{
String placeSearchURL="https://maps.googleapis.com/maps/api/place/radarsearch/json?location="+lati+","+lang+"&radius="+rad+"&types="+type+"&key="+key;
Client placeSearchClient = Client.create();
WebResource placeSearchWebResource = placeSearchClient.resource(placeSearchURL);
ClientResponse placeSearchClientResponse = placeSearchWebResource.accept("application/json").get(ClientResponse.class); //Here I will receive the json response.
String placeSearchOutput = placeSearchClientResponse.getEntity(String.class);
System.out.println(placeSearchOutput);
//To convert to Java object, I use this classes. Because, I need to convert from Json response to Java object.
ObjectMapper placeSearchMapper = new ObjectMapper();
// I created java classes in PlaceSearchResponse class for all the json responses I received, ie, latitude, longitude, id, place_id,
PlaceSearchResponse placeSearchResponse=placeSearchMapper.readValue(new URL(placeSearchURL), PlaceSearchResponse.class);
//Iterating all the Java objects ie, latitude, longitude, id, place_id
Iterator iter=(Iterator) placeSearchResponse.getResults().iterator();
while(iter.hasNext())
{
PlacesInfo placeDetails=(PlacesInfo) iter.next();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
从上面的代码中,迭代后,我最多得到 200 个响应。这个 API 最多只能提供 200 个结果,因为它被限制为 200 个。如果我得到 200 个结果,那么将没有更多可用的响应。我需要把这个区域分成更多的小区域,这样我就可以在这个区域获得更多的餐馆。