JavaでGoogleレーダーの場所検索APIを使用しています。特定の地域の緯度、経度、半径(距離)でお願いしています。約 200 の応答を取得しています (この API による最大)。200 件の応答を受け取った場合は、緯度と経度を使用してリクエストを小さなサイズに分割する必要があります。これにより、円の全領域をカバーして、その領域内のすべての場所に関する詳細を取得できます。では、緯度、経度、半径を使用して円形領域を分割するにはどうすればよいでしょうか。それだけで、その地域のすべての場所を取得できます。私を助けてください。
ここにコードがあります、
API を呼び出す方法として、緯度、経度、タイプ = レストラン、半径 = 20000 を指定しました (その地域の 20 km 以内のレストランを見つけるため)
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 の結果を取得すると、利用可能な応答がなくなります。この地域でより多くのレストランを利用できるように、この地域をより小さな地域に分割する必要があります。