0

我們在我們的網站中有一個嵌入式搜索欄,它利用Google Maps API提供建議和結果。當用戶搜索「紐約」,明確對建議點擊這表明他們正在尋找紐約州這個API調用時:當查詢Google Maps API時,我得到了「紐約,美國」和「紐約,紐約,美國」的相同結果

https://maps.googleapis.com/maps/api/js/GeocodeService.Search?4sNew%20York%2C%20United%20States&7sUS&8m2&1scountry&2sUS&9sen-US&callback=xdc._ohwoca&token=44216

當他們只需鍵入「紐約」和按下回車鍵,或選擇其表示「紐約,紐約」的建議,該API調用時:

https://maps.googleapis.com/maps/api/js/GeocodeService.Search?4sNew%20York%2C%20NY%2C%20United%20States&7sUS&8m2&1scountry&2sUS&9sen-US&callback=xdc._n2ga8u&token=62787

的問題是,返回的JSON是兩者相同的,回調的例外標題:

{ 
    "results" : [ 
     { 
     "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" ] 
      } 
     ], 
     "formatted_address" : "New York, NY, USA", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 40.9175771, 
        "lng" : -73.70027209999999 
       }, 
       "southwest" : { 
        "lat" : 40.4773991, 
        "lng" : -74.25908989999999 
       } 
      }, 
      "location" : { 
       "lat" : 40.7127837, 
       "lng" : -74.0059413 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 40.9152555, 
        "lng" : -73.70027209999999 
       }, 
       "southwest" : { 
        "lat" : 40.4960439, 
        "lng" : -74.25573489999999 
       } 
      } 
     }, 
     "place_id" : "ChIJOwg_06VPwokRYv534QaPC8g", 
     "types" : [ "locality", "political" ] 
     } 
    ], 
    "status" : "OK" 
} 

這會導致不正確的搜索結果提供給我們的用戶。具體而言,我們鍵入"types"字段。由於兩份文件均指明用戶搜索「地點」,因此我們總是返回紐約市的結果,而不是紐約州可能已指定的結果。

這是Google Maps API中的錯誤嗎?我們是否需要指定一些標誌來強制更嚴格地解釋我們發送的內容?其他想法?

請注意,如果您在面向www.google.com/maps的用戶上執行此搜索,您將獲得紐約州而不是紐約市。我不太瞭解該頁面與API的不同之處,以瞭解其中發生了什麼。

+0

請提供[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve),它允許重現此問題。你如何得到這些結果?你使用的是什麼版本的API?我沒有得到相同的結果。 – MrUpsidown

+0

@MrUpsidown我假設我的鏈接確實提供了重現問題的方法。我們在maps.googleapis.com/maps-api-v3/api/js/27/12/上使用該API的版本。此外,您可以在Google自己的API文檔中嘗試任何非紐約州狀態:https://developers.google.com/maps/documentation/geocoding/intro,您將看到該狀態。如果你輸入「紐約」或「紐約」,你會回到城市而不是國家。 – Necoras

回答

1

我最終打開了一個issue與谷歌地圖團隊。根據他們的工程師,這是預期的行爲。他們認爲,大多數用戶打算在搜索「紐約」時特意看到「紐約市」,而不是國家。如果我們的系統中沒有額外的「城市」參數指定「紐約」,我們最終會捕捉用戶的查詢並強制在我們的系統中進行州搜索。