2017-08-15 1 views
0

Je trouve que la classe Place de la bibliothèque Android pour l'API Google Places manque beaucoup de données qui sont disponibles dans Web-Service API.Google Places: Android API: Classe de place manquant certaines données

classe Android: https://developers.google.com/android/reference/com/google/android/gms/location/places/Place

Web Service répondre: https://developers.google.com/places/web-service/details?hl=en

Par exemple, la définition de classe n'a rien sur les avis ou Heures d'ouverture. Pourquoi c'est ainsi? Est-il possible de le réparer sans convertir toute l'application aux appels d'API Web-Service et json-parsing? Peut-être qu'il y a une possibilité de convertir l'objet Place en son formulaire JSON brut pour trouver des données supplémentaires?

+0

a finalement décidé de éviter d'utiliser Google Android API lorsque ses données ne sont pas complètes – Vadim

Répondre

0

Places api dans android retourne seulement quelques détails comme le nom de lieu, la latitude, la longitude, etc. Si vous voulez plus de détails, vous devez appeler webservice api. Ceci est le URl

https://maps.googleapis.com/maps/api/place/details/json?key={API_KEY}&placeid={PLACE_ID} 

Ici PLACE_ID se rendre d'un endroit objet dans les lieux Android Api

Exemple de sortie:

{ 
                   "html_attributions" : [], 
                   "result" : { 
                    "address_components" : [ 
                    { 
                     "long_name" : "7167", 
                     "short_name" : "7167", 
                     "types" : [ "street_number" ] 
                    }, 
                    { 
                     "long_name" : "Sunset Boulevard", 
                     "short_name" : "Sunset Blvd", 
                     "types" : [ "route" ] 
                    }, 
                    { 
                     "long_name" : "Central LA", 
                     "short_name" : "Central LA", 
                     "types" : [ "neighborhood", "political" ] 
                    }, 
                    { 
                     "long_name" : "Los Angeles", 
                     "short_name" : "Los Angeles", 
                     "types" : [ "locality", "political" ] 
                    }, 
                    { 
                     "long_name" : "Los Angeles County", 
                     "short_name" : "Los Angeles County", 
                     "types" : [ "administrative_area_level_2", "political" ] 
                    }, 
                    { 
                     "long_name" : "California", 
                     "short_name" : "CA", 
                     "types" : [ "administrative_area_level_1", "political" ] 
                    }, 
                    { 
                     "long_name" : "United States", 
                     "short_name" : "US", 
                     "types" : [ "country", "political" ] 
                    }, 
                    { 
                     "long_name" : "90046", 
                     "short_name" : "90046", 
                     "types" : [ "postal_code" ] 
                    } 
                    ], 
                    "adr_address" : "\u003cspan class=\"street-address\"\u003e7167 Sunset Blvd\u003c/span\u003e, \u003cspan class=\"locality\"\u003eLos Angeles\u003c/span\u003e, \u003cspan class=\"region\"\u003eCA\u003c/span\u003e \u003cspan class=\"postal-code\"\u003e90046\u003c/span\u003e, \u003cspan class=\"country-name\"\u003eUSA\u003c/span\u003e", 
                    "formatted_address" : "7167 Sunset Blvd, Los Angeles, CA 90046, USA", 
                    "geometry" : { 
                    "location" : { 
                     "lat" : 34.098341, 
                     "lng" : -118.346263 
                    }, 
                    "viewport" : { 
                     "northeast" : { 
                      "lat" : 34.0995122302915, 
                      "lng" : -118.3449154697085 
                     }, 
                     "southwest" : { 
                      "lat" : 34.0968142697085, 
                      "lng" : -118.3476134302915 
                     } 
                    } 
                    }, 
                    "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png", 
                    "id" : "7143e0743707f66cfa1cda945779f18e8350060e", 
                    "name" : "7167 Sunset Blvd", 
                    "place_id" : "ChIJn_0bqti-woARRtpNvG7kuq4", 
                    "reference" : "CmRbAAAAuU6CDhPuLqrS9F4XCZIV61wveIeU44RMua7FSCZHtwJeC58_OJksQvLI9Nudb9-N8RhfJDUECkxvdB-llxe6WIqrkDQMBs2vz3mBky0DH70jIcFS7f0_7yivdsxmmLzaEhAtwgzDs0va2soGuFyzuNTGGhR-xVrIvyeZwY0OGDmEp3FJmrbbeQ", 
                    "scope" : "GOOGLE", 
                    "types" : [ "street_address" ], 
                    "url" : "https://maps.google.com/?q=7167+Sunset+Blvd,+Los+Angeles,+CA+90046,+USA&ftid=0x80c2bed8aa1bfd9f:0xaebae46ebc4dda46", 
                    "utc_offset" : -420, 
                    "vicinity" : "Los Angeles" 
                   }, 
                   "status" : "OK" 
                  } 

Exemple JSON d'analyse syntaxique android

String postalCode=""; 
        String city=""; 
        String state=""; 
        String address=""; 

        JSONObject jsonObj=new JSONObject(rs); 
        JSONArray addressComponents = jsonObj.getJSONObject("result").getJSONArray("address_components"); 
        for(int i = 0; i < addressComponents.length(); i++) { 
         JSONArray typesArray = addressComponents.getJSONObject(i).getJSONArray("types"); 
         for (int j = 0; j < typesArray.length(); j++) { 
          if (typesArray.get(j).toString().equalsIgnoreCase("postal_code")) { 
           postalCode = addressComponents.getJSONObject(i).getString("long_name"); 
          }else if (typesArray.get(j).toString().equalsIgnoreCase("locality")) { 
           city = addressComponents.getJSONObject(i).getString("long_name"); 
          }else if (typesArray.get(j).toString().equalsIgnoreCase("administrative_area_level_1")) { 
           state = addressComponents.getJSONObject(i).getString("long_name"); 
          }else { 
           String types=typesArray.get(j).toString(); 
           if(types.equalsIgnoreCase("street_number") 
             ||types.equalsIgnoreCase("route") 
             ||types.equalsIgnoreCase("neighborhood") 
             ||types.equalsIgnoreCase("sublocality_level_1") 

             ) 
           address+=addressComponents.getJSONObject(i).getString("long_name")+", "; 
          } 
         } 
        } 
+0

Comme vous le savez peut-être Google Android API est moins cher (plus grandes limites d'utilisation). Savez-vous s'ils prévoient d'étendre leur propre bibliothèque Android? Des canaux officiels de nouvelles, etc? – Vadim

+0

N'avez pas de nouvelles à ce sujet. Peut-être qu'ils vont mettre à jour leur bibliothèque pour les lieux et les API de direction. –