2017-08-15 2 views
0

Ich finde, dass Platzklasse aus Android Library für Google Places API eine Menge Daten vermisst, die in Web-Service API verfügbar ist.Google Places: Android-API: Klasse fehlt einige Daten

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

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

Zum Beispiel Klassendefinition nichts über Bewertungen oder Öffnungszeiten hat. Warum ist es so? Ist es möglich, es zu beheben, ohne alle App in Web-Service-API-Aufrufe und JSON-Parsing zu konvertieren? Vielleicht gibt es eine Möglichkeit, Place-Objekt in sein rohes JSON-Format zu konvertieren, um zusätzliche Daten zu finden?

+0

Schließlich beschlossen, Vermeiden Sie Google Android API, wo seine Daten nicht vollständig sind – Vadim

Antwort

0

Orte api in Android gibt nur ein paar Details wie Ortsname, Breitengrad, Längengrad etc. zurück. Wenn Sie weitere Details wünschen, müssen Sie Webservice API aufrufen. Dies ist die URL

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

Hier PLACE_ID wird von der Place Objekt erhalten in Android Places Api

Beispielausgabe:

{ 
                   "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" 
                  } 

Beispiel JSON Parsen in 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

Wie Sie vielleicht wissen Google Android API ist billiger (größere Nutzungsbeschränkungen). Weißt du, ob sie planen, ihre eigene Android-Bibliothek zu erweitern? Irgendwelche offiziellen Nachrichtenkanäle usw.? – Vadim

+0

Keine Neuigkeiten dazu. Möglicherweise werden sie ihre Bibliothek für Orte und Richtungs-APIs aktualisieren. –