2015-07-23 6 views
6

Moja aplikacja internetowa otrzymuje identyfikator miejsca dla geo wybranej przez użytkownika. Na przykład: jeśli użytkownik wybierze na interfejsie użytkownika (jest to miasto, część nazwa_administracyjna_lewy_2 o nazwie Province of Ferrara), moja aplikacja internetowa wyszukuje identyfikator miejsca dla Comacchio: ChIJ0yHebbB1fkcR7YujotES0dA.Usługa sieciowa API Google Places (PHP): jak uzyskać "plik_administracyjny_2 identyfikator_lokatora" dla danego "identyfikatora miejsca"

Podczas kwerendy maps.googleapis.com dla wspomnianego place_id, dostaję mnóstwo informacji (patrz poniżej), ale nie jeden muszę: co potrzebne jest place_id dla administrative_area_level_2 z place_id wejściowego (która byłaby ChIJ7y4rEyxCfkcRwH-6_AubBwM dla Provincia di Ferrara).

Jak widać poniżej, Provincia di Ferrara jest zwracany jako ciąg znaków, ale nie jako identyfikator miejsca, którego potrzebuję.

Array (
    [html_attributions] => Array(
    ) 

    [result] => Array (
     [address_components] => Array (
      [0] => Array (
       [long_name] => Comacchio 
       [short_name] => Comacchio 
       [types] => Array (
        [0] => locality 
        [1] => political 
       ) 
      ) 

      [1] => Array (
       [long_name] => Comacchio 
       [short_name] => Comacchio 
       [types] => Array (
        [0] => administrative_area_level_3 
        [1] => political 
       ) 
      ) 

      [2] => Array (
       [long_name] => Provincia di Ferrara 
       [short_name] => FE 
       [types] => Array (
        [0] => administrative_area_level_2 
        [1] => political 
       ) 
      ) 

      [3] => Array (
       [long_name] => Emilia-Romagna 
       [short_name] => Emilia-Romagna 
       [types] => Array (
        [0] => administrative_area_level_1 
        [1] => political 
       ) 
      ) 

      [4] => Array (
       [long_name] => Italy 
       [short_name] => IT 
       [types] => Array (
        [0] => country 
        [1] => political 
       ) 
      ) 

      [5] => Array (
       [long_name] => 44022 
       [short_name] => 44022 
       [types] => Array (
        [0] => postal_code 
       ) 
      ) 
     ) 

     [adr_address] => <span class="postal-code">I-44022</span> <span class="locality">Comacchio</span> <span class="region">FE</span>, <span class="country-name">Italy</span> 
     [formatted_address] => 44022 Comacchio FE, Italy 
     [geometry] => Array (
      [location] => Array (
       [lat] => 44.6940053 
       [lng] => 12.1793532 
      ) 

      [viewport] => Array (
       [northeast] => Array (
        [lat] => 44.7056942 
        [lng] => 12.2000628 
       ) 

       [southwest] => Array (
        [lat] => 44.6839703 
        [lng] => 12.15889 
       ) 
      ) 
     ) 

     [icon] => http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png 
     [id] => cb8042e2b729756e683d2aff008871f9876081dd 
     [name] => Comacchio 
     [place_id] => ChIJ0yHebbB1fkcR7YujotES0dA 
     [reference] => CoQBdgAAAGSwypFqE8NNsCqFFroul7U-c8ACswn9Zd_O89SAK6nxPTpsevzOLaa9rQa0-ms2SXDgnrAxKkQ7av8KHxjRHL0UB_GD_xBzMM2u5iYCDVhoLtwSKMifSJAX7T0q9pdqeB6kzPa3IbLGpdDcaMOOAWZ8gf1gtbNjr9Wf3oo5cV4JEhAWQYrsRynoan3_W0DMElMSGhQb2BUPnW0s_cCUgeHkskTZwSPNeg 
     [scope] => GOOGLE 
     [types] => Array (
      [0] => locality 
      [1] => political 
     ) 

     [url] => https://maps.google.com/maps/place?q=44022+Comacchio+FE,+Italy&ftid=0x477e75b06dde21d3:0xd0d112d1a2a38bed 
     [vicinity] => Comacchio 
    ) 

    [status] => OK 
) 
+1

Daj spokój człowiekowi, czemu spadł?!? –

+0

Weź lat/lon i wykonaj wyszukiwanie w pobliżu dla long_name? – ssnobody

Odpowiedz

2

Można spróbować zadzwonić Google Places API Web Service z PHP z administrative_area_level_2 (dodaj kraj do param kwerendy, aby uzyskać bardziej dokładne prognozy) wartość wybranym miejscu, jak:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Provincia%20di%20Ferrara,%20Italy&types=(regions)&language=pt_BR&key={private_key_removed} 

Dane wyjściowe powinny być następujące:

{ 
    "predictions" : [ 
     { 
     "description" : "Provincia di Ferrara, Itália", 
     "id" : "b5fa0282b59be22bd0ad64f97011f744db1aeed8", 
     "matched_substrings" : [ 
      { 
       "length" : 20, 
       "offset" : 0 
      } 
     ], 
     "place_id" : "ChIJ7y4rEyxCfkcRwH-6_AubBwM", 
     "reference" : "CkQ1AAAAqCcMPeJiVWhf2mlBLCJVf82WAxOUARNWqT6NWbp7AEb2nlub1ax3iUMDTKsCAvM_Y6Uylc78mSB_QB5bECVkGxIQxCwIgZ4_WC6fAPJB_N7o0RoU8m_Sdb6CpSyaZeW2lpi9YoJ8bO0", 
     "terms" : [ 
      { 
       "offset" : 0, 
       "value" : "Provincia di Ferrara" 
      }, 
      { 
       "offset" : 22, 
       "value" : "Itália" 
      } 
     ], 
     "types" : [ "administrative_area_level_2", "political", "geocode" ] 
     } 
    ], 
    "status" : "OK" 
} 
+0

Chodzi o to, co teraz robię, minus "dodaj kraj do parametru zapytania" i filtruj według regionów. Jest to nadal nieoptymalne, ponieważ * szukamy * z niestrukturalnego ciągu danych, zamiast sprawdzać unikatowy identyfikator miejsca. Mimo to twoje dwie wskazówki znacznie poprawiają zestaw wyników. Obawiam się, że nie ma sposobu, aby to zrobić, tak jak tego szukałem, a twoja sugestia jest najbliższa, na jaką możemy pójść. Oznaczone jako zaakceptowane, bardzo dziękuję za pomoc! –

Powiązane problemy