3

「98 Spru」の Google プレイス オートコンプリート リクエストを実行すると、1 つの ID (013ae3e513081ff1bc9e3dc202df54ba9d147285) と 1 セットのタイプ (「ルート」と「ジオコード」) を持つ場所の予測が取得されますが、その場所の詳細を取得すると、別の ID (5e66bbb5a5a7eaedd07fabc199e87570bcc0eae6) と別のタイプのセット ("street_address")? 残りの情報は正しいです。以下のリクエスト/レスポンスのスニペット。

これは予想されることですか?もしそうなら、なぜですか?

クライアント側では、特定のタイプ (「street_address」など) ではないオートコンプリート予測を除外しようとしています。Autocomplete レスポンスの「types」フィールドは、Details レスポンスで返される「true」タイプの値と一貫して一致しないため、これは機能しません。

ありがとう!

「98 Spru」のオートコンプリート リクエスト/レスポンス https://maps.googleapis.com/maps/api/place/autocomplete/json?input=98%20Spru&sensor=true&key=MYKEY&location=42.350000,-71.160000&radius=100.000000&types=geocode

  {
     "description" : "98 Spruce Street, Watertown, MA, United States",
     "id" : "013ae3e513081ff1bc9e3dc202df54ba9d147285",
     "matched_substrings" : [
        {
           "length" : 7,
           "offset" : 0
        }
     ],
     "reference" : "CmRcAAAArJjcgqYuczq9wKmQG0lwv6j_uCBYCrWzS_U76FvnV3fCnWq0_pPf-nu6M9eTYQEpYt4XahA3Vg0GSzMcR23k3Mkxp9sv73ObGmeHDcanEnZ0dWpl69t7eSwmzLbrREQfEhA0CrWTEXtfQhcnfNWnqTukGhQFWBj_lPkoAwG-ZvUIv0GZhgAscQ",
     "terms" : [
        {
           "offset" : 0,
           "value" : "98 Spruce Street"
        },
        {
           "offset" : 18,
           "value" : "Watertown"
        },
        {
           "offset" : 29,
           "value" : "MA"
        },
        {
           "offset" : 33,
           "value" : "United States"
        }
     ],
     "types" : [ "route", "geocode" ]
  },

Details Request / Response from above prediction: https://maps.googleapis.com/maps/api/place/details/json?key=MYKEY&sensor=true&reference=CmRcAAAAzcupmv2dCaIWTnySJhA8y4BIc5_VSj1AUXCBFHEVnuo3NGjuqAVrLGSVZ_NODQstUs1ZclGASEzBYTF0B1nFSAcjgrc7Jn9NhJC2GZ2RtQQ3REFV7pvBzTPoGOHew289EhAD7dQFOe2EvBjpQ46IKODbGhTH0scvHs54U3refjf1-Tn6-04XvQ

{
   "debug_info" : [],
   "html_attributions" : [],
   "result" : {
      "address_components" : [
         {
            "long_name" : "98",
            "short_name" : "98",
            "types" : [ "street_number" ]
         },
         {
            "long_name" : "Spruce St",
            "short_name" : "Spruce St",
            "types" : [ "route" ]
         },
         {
            "long_name" : "Watertown",
            "short_name" : "Watertown",
            "types" : [ "locality", "political" ]
         },
         {
            "long_name" : "Middlesex",
            "short_name" : "Middlesex",
            "types" : [ "administrative_area_level_2", "political" ]
         },
         {
            "long_name" : "Massachusetts",
            "short_name" : "MA",
            "types" : [ "administrative_area_level_1", "political" ]
         },
         {
            "long_name" : "United States",
            "short_name" : "US",
            "types" : [ "country", "political" ]
         },
         {
            "long_name" : "02472",
            "short_name" : "02472",
            "types" : [ "postal_code" ]
         }
      ],
      "adr_address" : "\u003cspan class=\"street-address\"\u003e98 Spruce St\u003c/span\u003e, \u003cspan class=\"locality\"\u003eWatertown\u003c/span\u003e, \u003cspan class=\"region\"\u003eMA\u003c/span\u003e \u003cspan class=\"postal-code\"\u003e02472\u003c/span\u003e, \u003cspan class=\"country-name\"\u003eUSA\u003c/span\u003e",
      "formatted_address" : "98 Spruce St, Watertown, MA 02472, USA",
      "geometry" : {
         "location" : {
            "lat" : 42.3667790,
            "lng" : -71.1698590
         }
      },
      "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
      "id" : "5e66bbb5a5a7eaedd07fabc199e87570bcc0eae6",
      "name" : "98 Spruce St",
      "reference" : "CpQBhgAAABX6gm9Qh9r9QxMuEWIrwFGcsz2QnUG0MAoEkD33kwrxfcEakZh-d01oWlAFnIieF8MvVcflI7xJ91Qq2ahnw9oDjcUPUnhlRcOUjLF0lTXOWf3Fp3dbCqLo3MQxCDGT3UJj5fR4ZrPagqBYXtQcPl1TB6sgPHZv8x-2jdJzbh-yZ6yb9VhfG-KDD76-RdotkRIQ7Oz0mKuwaclr0xiIf4oHehoUM2l9nZsi5pU2RPyB7YA2lmJ7vI0",
      "types" : [ "street_address" ],
      "url" : "https://maps.google.com/maps/place?q=98+Spruce+St&ftid=0x89e3781f4bba528d:0xa7ec6e9a6bde2e4f",
      "vicinity" : "Watertown"
   },
   "status" : "OK"
}
4

1 に答える 1

0

オートコンプリート API によって返される googleId に依存することはできません。リファレンスを使用し、Place Details API への API 呼び出しを行ってから、その ID を使用する必要があります。参照が新しい場所に「リダイレクト」されるように、Google が場所データベースを統合することがあると思います。

于 2013-07-22T16:47:08.203 に答える