AutoComplete Google Maps API - 直接 JSON 调用

Posted

技术标签:

【中文标题】AutoComplete Google Maps API - 直接 JSON 调用【英文标题】:AutoComplete Google Maps API - direct JSON call 【发布时间】:2012-08-18 16:56:04 【问题描述】:

我正在尝试开发一个使用 Google Places API 的 jQuery 移动应用程序。本质上,我正在做的是向 jQuery 移动页面添加输入,然后将其连接到 Google Places 以自动完成地址,并可能获取该地址的坐标。

我在modifying the demos available here 中取得了初步成功,它利用了 Google 自己的“地点库”中的自动完成功能。然而,从 UI 的角度来看,在移动设备上这个实现是行不通的——你需要点击一个相对较小的结果,并且点击手机上的返回按钮并不会选择第一个结果。

输入:http://www.raymondcamden.com/index.cfm/2012/3/27/Example-of-Autocomplete-in-jQuery-Mobile

非常适合我的需要,只是我现在尝试使用自动完成 API 通过 Google Places API 获取返回的数据。查看我正在使用的示例 API 调用:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Amoeba&types=establishment&sensor=true&key=myKeyHERE

但是,这不会返回任何 GEO 信息 - 只是地址。我需要使用其他方法或调用吗?使用原生 (Places Library) implementation,我可以访问一大堆数据,它不需要 API 密钥,也不需要在界限内工作。不确定重新地理编码结果集是否是最好的方法。

【问题讨论】:

【参考方案1】:

我发现在执行上述操作后需要另一个调用,'reference' 字段在初始 JSON 响应中返回。我可以将结果缓存为我需要的唯一地理位置。尽管您的建议肯定被视为另一种潜在的解决方案,但我更喜欢这种对 UI 行为的额外控制,即使它是以额外的 API 请求为代价的。

无论如何都给了你荣誉,因为你回答了一个体面的建议。

https://developers.google.com/places/documentation/#PlaceDetailsRequests

https://maps.googleapis.com/maps/api/place/details/json?reference=CmRYAAAAciqGsTRX1mXRvuXSH2ErwW-jCINE1aLiwP64MCWDN5vkXvXoQGPKldMfmdGyqWSpm7BEYCgDm-iv7Kc2PF7QA7brMAwBbAcqMr5i1f4PwTpaovIZjysCEZTry8Ez30wpEhCNCXpynextCld2EBsDkRKsGhSLayuRyFsex6JA6NPh9dyupoTH3g&sensor=true&key=[yourKey]

【讨论】:

【参考方案2】:

您不能在 javascript 中执行跨域 json 请求,因此无法访问 /json 端点。

您应该做的是回到最初的想法,然后设置自动完成建议的样式,使其更适合移动设备。

.pac-container is the class for the suggest area
.pac-item is the class for each item in the suggest area

【讨论】:

以上是关于AutoComplete Google Maps API - 直接 JSON 调用的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps v3 AutoComplete 获取建议

强制用户从google maps api autocomplete中选择地址

Google Maps - Autocomplete & Directions API - 触发下拉列表的 onchange()?

AutoComplete Google Maps API - 直接 JSON 调用

CORS 和 Google Maps Places Autocomplete API 调用 [重复]

Angular 2 + Google Maps Places Autocomplete,在输入后追加 [Dom 操作]