Google 附近的地方从 Android 搜索?

Google Places nearbysearch from Android?

我无法弄清楚如何从 Android 调用 Google 地点 API。具体来说,我现在正在查看 nearbysearch 电话。

这是发送的完整 URL:(减去我的 API 密钥)

https://maps.googleapis.com/maps/api/place/nearbysearch/xml?location=49.7088,-124.9712&radius=3000&sensor=true&key=YourAPIKeyHere

我收到此错误返回:

<error_message>This IP, site or mobile application is not authorized to use this API key.</error_message>

我在 Google 开发者控制台完成了整个过程,包括获取 API 密钥、将我的应用程序添加到允许列表、添加库 (google-play-services_lib)和设置到我的项目,将 api 键和 gms.version 条目添加到清单中,但它仍然失败。

为了测试该设置部分,我向同一个 Activity 添加了一个 Google 映射,它正确显示 - 这表明我的应用程序正确地位于允许列表中,并且我的API 键是正确的(它是在清单和 URL 中使用的字符串资源),否则地图将不会显示任何图形。

问题:如何从 Android 拨打 Google Places nearbysearch 电话?

谢谢!

我认为您在这里混淆了一些工具。 Google Places API 不需要任何额外的库。您的应用中不需要 Google Play 服务。这只是一个 http 调用。

Google did 刚刚宣布他们正在将 Place APIs 添加到 Play Services,最终应该会取代 HTTP API ,但你还不需要使用它,我什至没有看到文档,只是公告。

首先,这是 link 到地点 API 的说明:https://developers.google.com/places/documentation/#Authentication

确保当您查看您的凭据时,您的 Android 密钥显示 "Any Application Allowed"。

这是 Java 中的一个示例实现,使用名为 WebRequest:

的开源 HTTP class
String TempSQL = "https://maps.googleapis.com/maps/api/place/nearbysearch/xml?" 
                            + GMapI_Key
                            + "&location=" + coordinatesString
                            + "&rankby=distance&types=establishment&name="
                            + placeName;
            new WebRequest().get().to(TempSQL).executeAsync(new WebRequest.Callback() {
                public void onSuccess(int responseCode, String responseText) {
                    //Your code here
                }
                public void onError() {
                    //throw new RuntimeException("NoWebResponse");
                }
            });