0

Я использую API поиска google радара в Java. Я даю запрос, используя широту, долготу и радиус (расстояние) конкретного региона. Я получаю около 200 ответов (максимум по этому API). Если я получаю 200 ответов, я должен разделить мой запрос на меньшие размеры, используя широту и долготу, чтобы я мог охватить всю область круга, чтобы получить информацию обо всех местах в этом регионе. Итак, как разделить круговую область с использованием широты, долготы и радиуса? Так что, я могу получить все места в этом регионе. Пожалуйста, помогите мне.Как разделить регион на регионы меньшего размера, используя широту, долготу и радиус (расстояние), в Google месте API поиска в Java?

Вот код,

метод для вызова 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 результатов, тогда будет больше ответов. Мне нужно разбить этот регион на более мелкие регионы, чтобы я мог получить больше ресторанов, доступных в этом регионе.

+0

Я даю ввод как широта, долгота и радиус (расстояние), чтобы узнать ресторан в этом регионе. Я получаю около 200 ответов (ответы около 200 ресторанов). Если этот API дает максимум 200 ответов, тогда в этом регионе доступно больше мест. Итак, я хочу разбить этот регион на более мелкие регионы, чтобы получить информацию обо всех доступных там местах. –

ответ

0

Вы можете использовать minPriceLevel and maxPriceLevel разделить поиск на четыре результата, т.е. 0-1,1-2,2-3,3-4

String placeSearchURL="https://maps.googleapis.com/maps/api/place/radarsearch/json?location="+lati+","+lang+"&radius="+rad+"&types="+type+"&minprice="+min"+"&maxprice="+max"+ &key="+key; 
+0

Я спрашиваю, если я получу около 200 ответов, тогда мне нужно разбить регион на меньшие размеры. Так что, я могу получить больше результатов из этой области. Потому что этот API дает максимум 200 ответов. Итак, как разбить этот регион? –

+0

Вы не можете разбивать этот регион (круг) и использовать поиск радиолокатора. Вы можете либо уменьшить радиус, либо ограничить ответы. То, что я предложил, было бы самым простым. 'name' &' opennow' - это другие, но я не думаю, что они были бы подходящими, особенно 'opennow', поскольку нет \t' notopennow' –

+0

Уменьшая радиус и изменяя широту/долготу, мы можем скрыть круг небольшими регионов (кругов). Fot, что маленькие круги мы можем вызвать API и получить больше ответов. –