我在使用Google api进行搜索时没有获得搜索结果。一周前也没有收视率。我得到的结果远远的地方而不是附近。谷歌是否正在改变api,或者我应该再等一会儿谷歌给一个好的地方api。 感谢
答案 0 :(得分:0)
我遇到了同样的问题。 Google于2014年6月底更改了Places API,以弃用reference
和id
字段,转而使用单个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。