2015-07-23 19 views
6

Ứng dụng web của tôi nhận được một địa điểm_id cho một địa lý do người dùng chọn. Ví dụ: nếu người dùng chọn trên giao diện người dùng là place called "Comacchio" (đó là một thị trấn, một phần của administrative_area_level_2 được gọi là Province of Ferrara) webapp của tôi recives the place_id cho Comacchio: ChIJ0yHebbB1fkcR7YujotES0dA.Dịch vụ web API Google Địa điểm (PHP): cách nhận 'administrative_area_2 place_id' cho một 'place_id' đã cho

Khi tôi truy vấn maps.googleapis.com cho nói place_id, tôi nhận được rất nhiều toàn bộ thông tin (xem dưới đây) nhưng không phải là người tôi cần: những gì tôi cần là place_id cho administrative_area_level_2 của place_id đầu vào (sẽ là ChIJ7y4rEyxCfkcRwH-6_AubBwM cho Provincia di Ferrara).

Như bạn có thể thấy bên dưới, Provincia di Ferrara được trả về dưới dạng chuỗi chứ không phải là địa chỉ mà tôi cần.

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

Thôi nào, tại sao downvote?!? –

+0

Mất lat/lon và thực hiện tìm kiếm lân cận cho long_name? – ssnobody

Trả lời

2

Bạn có thể thử gọi API địa điểm dịch vụ Web của Google từ PHP với administrative_area_level_2 (thêm một quốc gia với một tham số truy vấn, để có được những dự đoán chính xác hơn) giá trị của vị trí được lựa chọn, như:

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

Đầu ra phải là:

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

Đây chỉ là những gì tôi đang làm bây giờ, trừ "thêm quốc gia vào tham số truy vấn" và lọc theo vùng. Điều này vẫn còn tối ưu, bởi vì chúng tôi đang * tìm kiếm * từ một chuỗi dữ liệu phi cấu trúc, thay vì truy vấn một place_id duy nhất. Tuy nhiên, hai mẹo của bạn sẽ cải thiện đáng kể tập kết quả. Tôi sợ rằng không có cách nào để làm điều đó như tôi đang tìm kiếm và gợi ý của bạn là gần nhất chúng ta có thể đi. Được đánh dấu là đã được chấp nhận, cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn! –

Các vấn đề liên quan