2017-05-10 6 views
-1

Momentan verwenden wir das Array address_components von Google places api, um zu ermitteln, ob der gesuchte Ort ein Bundesstaat oder ein Land ist. Für Staat und Land geben wir den staatlichen Code und den Ländercode bei der Suche ein. Nachfolgend sind die Szenarios aufgeführt, die wir verwenden, um den Ortdetail-Ergebnistyp zu identifizieren:So ermitteln Sie, ob ein Google Place Details-Ergebnis ein Status ist (administrative_area_level_1)

Staatsszenario: address_components hat 2 Artikel mit administrative_area_level_1 geben Sie den ersten Artikel und den Landtyp den zweiten Artikel ein.

"address_components" : [ 
    { 
     "long_name" : "California", 
     "short_name" : "CA", 
     "types" : [ "administrative_area_level_1", "political" ] 
    }, 
    { 
     "long_name" : "United States", 
     "short_name" : "US", 
     "types" : [ "country", "political" ] 
    } 
    ], 

Land Szenario: address_components hat 1 Punkt und seine Typen haben Land

"address_components" : [ 
    { 
     "long_name" : "United States", 
     "short_name" : "US", 
     "types" : [ "country", "political" ] 
    } 
    ], 

Wenn address_components Artikelliste mehr als 2 Artikel hat dann der gewählte Ort nicht als Staat oder Land angesehen wird. Während wenige Suchen wie "Oaxaca" oder "New York" mehr als zwei Elemente im Array "address_components" zurückgeben.

Oaxaca:

"address_components" : [ 
    { 
     "long_name" : "Oaxaca", 
     "short_name" : "Oaxaca", 
     "types" : [ "locality", "political" ] 
    }, 
    { 
     "long_name" : "Oaxaca", 
     "short_name" : "Oaxaca", 
     "types" : [ "administrative_area_level_2", "political" ] 
    }, 
    { 
     "long_name" : "Oaxaca", 
     "short_name" : "Oax.", 
     "types" : [ "administrative_area_level_1", "political" ] 
    }, 
    { 
     "long_name" : "Mexico", 
     "short_name" : "MX", 
     "types" : [ "country", "political" ] 
    } 
    ] 

New Yorker

"address_components" : [ 
    { 
     "long_name" : "New York", 
     "short_name" : "New York", 
     "types" : [ "locality", "political" ] 
    }, 
    { 
     "long_name" : "New York", 
     "short_name" : "NY", 
     "types" : [ "administrative_area_level_1", "political" ] 
    }, 
    { 
     "long_name" : "United States", 
     "short_name" : "US", 
     "types" : [ "country", "political" ] 
    } 
    ] 

Gibt es eine andere Art und Weise, wenn eine Suche statt Detail Ergebnis (wie Oaxaca) zu identifizieren ein Zustand (administrative_area_level_1) ist

Antwort

0

Sicher, Sie können die Typen Feld tha verwenden t zurückgegeben zusammen mit address_components Feld

https://developers.google.com/places/web-service/details#PlaceDetailsResults

Typen [] enthält ein Array von Merkmalstypen beschreibt, die gegebene Ergebnis.

Bei Land,

https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJCzYy5IS16lQRQrfeQ5K5Oxw&key=YOUR_API_KEY

Sie so etwas wie

{ 
    "html_attributions":[ 

    ], 
    "result":{ 
     "address_components":[ 
     { 
     "long_name":"United States", 
     "short_name":"US", 
     "types":[ 
      "country","political" 
     ] 
     } 
     ], 
     ... 
     "types":[ 
     "country","political" 
     ], 
     ... 
    }, 
    "status":"OK" 
} 

Bei Zustand so etwas wie

{ 
    "html_attributions":[ 

    ], 
    "result":{ 
     "address_components":[ 
     { 
      "long_name":"Nebraska", 
      "short_name":"NE", 
      "types":[ 
       "administrative_area_level_1","political" 
      ] 
     }, 
     { 
      "long_name":"United States", 
      "short_name":"US", 
      "types":[ 
       "country","political" 
      ] 
     } 
     ], 
     ... 
     "types":[ 
      "administrative_area_level_1","political","point_of_interest","establishment" 
      ], 
      ... 
     }, 
     "status":"OK" 
} 

Und Stadt wird etwas sehen müssen wie

{ 
    "html_attributions":[ 

    ], 
    "result":{ 
     "address_components":[ 
     { 
      "long_name":"Oaxaca", 
      "short_name":"Oaxaca", 
      "types":[ 
       "locality","political" 
      ] 
     }, 
     { 
      "long_name":"Oaxaca", 
      "short_name":"Oaxaca", 
      "types":[ 
       "administrative_area_level_2","political" 
      ] 
      }, 
      { 
       "long_name":"Oaxaca", 
       "short_name":"Oax.", 
       "types":[ 
       "administrative_area_level_1","political" 
       ] 
      }, 
      { 
       "long_name":"Mexico", 
       "short_name":"MX", 
       "types":[ 
       "country","political" 
       ] 
      } 
      ], 
      ... 
      "types":[ 
       "locality","political" 
      ], 
      ... 
     }, 
     "status":"OK" 
} 

Ich hoffe, das hilft!

+0

Wenn Adresskomponenten mehr als 2 Elemente haben, sollten wir es nicht als einen Zustand betrachten. –

+0

Sie haben ein 'types' Feld für das Ergebnis und dieses Feld sagt, welcher Typ das Ergebnis hat. Ich verstehe nicht, warum Sie die Anzahl der Elemente in Adresskomponenten analysieren müssen, wenn Sie den Typ des Ergebnisses sofort aus dem Feld 'types' erfahren können. – xomena

Verwandte Themen