谷歌api无法正常工作

时间:2014-07-09 17:37:39

标签: google-maps google-maps-api-3 google-places-api

我在使用Google api进行搜索时没有获得搜索结果。一周前也没有收视率。我得到的结果远远的地方而不是附近。谷歌是否正在改变api,或者我应该再等一会儿谷歌给一个好的地方api。 感谢

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。 Google于2014年6月底更改了Places API,以弃用referenceid字段,转而使用单个place_id。他们还更改了JSON响应中的详细级别。例如,不要在您的通话中包含name参数,就像这样...

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&key=YOURKEY

...返回如下所示的结果:

"html_attributions" : [],
   "next_page_token" : "CoQC8gAAALD7H9pFpjSrFHDEn0_rzBef77uvO3hAvsO9u344Jh05RIsiVtkMvAbgZaYbp15lus4mOIbrWtbk-SIJ9j2B5ankZiTt9ZvJBUwOhjkBsCopBR_EhQQO4ZZciVQGFYVl-Zu4Y7vHSx6mKFzZ5rNeqVdFbBOfTeptNIjjs3re9EEkmqa_gFZ60J7DTw0Qgig_Vekq9I0aMF62Y3a3ZvAb4ElFpapxkvkHRRW_r6fYLR7L77JHzxheL_BVuNqDhM8F_lZl9gwe9g5vehb_xkwSOnIl001Ybdntipuyf_dmCpBg_58Vv0Xm0Z8MvNqLSeaE6B5vZXspYxZWqtHCN5andLUSEMgSnJKHtPzxTDkmZcmgulIaFFSiA6dQUakJXIEQCkulMheOBV2t",
   "results" : [
      {
         "geometry" : {
            "location" : {
               "lat" : -33.871194,
               "lng" : 151.19891
            }
         },
         "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
         "id" : "6237ce126ba1afabd5985b059d3d1eca6e9ee0da",
         "name" : "Blue Fish",
         "place_id" : "ChIJBaqDDzquEmsRcCI5e-3rStM",
         "reference" : "CnRsAAAAibazLaEzCLq4fMIASFHDGG81Ls_hY5ycFP-GRfZP5dKRuLblqe8qrzf5BOKVZOtbRwNQ2PN34sQv5o0H_kL_LEZhKPFmpMz7qkAj6a262KGICKoxTznqRILF2bVZVk7SED0qRnpiyo_A304g30itnhIQBmp1tv7ZoYnOGnrqhtTXzhoU2HDzURqpVMfmpAYoEqbVDJg8J9s",
         "scope" : "GOOGLE",
         "types" : [ "restaurant", "food", "establishment" ],
         "vicinity" : "Harbourside Shopping Centre/287 Darling Drive, Sydney CBD"
      }

然而,如果你包含name参数,就像这样......

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=cruise&key=YOURKEY

...您的结果会返回更详细的回复:

"html_attributions" : [],
   "results" : [
      {
         "geometry" : {
            "location" : {
               "lat" : -33.870775,
               "lng" : 151.199025
            }
         },
         "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/travel_agent-71.png",
         "id" : "21a0b251c9b8392186142c798263e289fe45b4aa",
         "name" : "Rhythmboat Cruises",
         "opening_hours" : {
            "open_now" : false
         },
         "photos" : [
            {
               "height" : 270,
               "html_attributions" : [],
               "photo_reference" : "CnRnAAAAOCqDF9u4_e5cEPJq0J3M-37u9fa4IfMJK7-SceKf98mkZAnSbVLPUN-PoHBeW8_32daeNBA-H9dI3xuIERAyBAXfmXB0MbO26ITj0ryvJgHe6V6m2GhxJXFVpv_XSMBp8XsghrHXhfWFidj8p4WCtBIQetaqvTH1oI28Nsd-iHXqFxoU8m00lJGS1J6FJMfQl-kqZjXbf8s",
               "width" : 519
            }
         ]

如您所见,更详细的回复提供了评分,营业时间,照片等,但也需要使用更详细的网址字符串。

我的应用程序用于提取一组餐馆数据,然后将信息传递到我需要的任何地方(例如,从TableViewController到DetailView)。通过这一新变化,我们可以设计的唯一创可贴解决方案是对API进行两次单独调用。一个用于从我的TableViewController的JSON对象检索基本的上层信息,第二个(在点击单元格以创建新的URL字符串,包括name参数)以获取更多详细信息,如评级和开放时间。您可以想象,此解决方案会将API调用的数量增加十倍,因为您的用户每次查看某个地点的详细信息时都会进行API调用。没有bueno。

因此,我们正在研究其他地方索引,例如内置的Apple MKLocalSearch,它返回与Google Places API类似但不完全相同的信息集。也许MKLocalSearch将满足您的需求。

如果其他人找到了更好的解决方案,我认为我们都应该对此持开放态度。

修改

看起来他们希望我们使用文本搜索或附近搜索返回的place_id进行另一次调用以获取地点详细信息。请参阅here