C# 谷歌地理编码:即使按照要求的步骤,也不断被拒绝

问题描述

我正在创建一个应用程序,需要将街道号码转换为纬度和经度,以便可以在地图上显示。我决定使用 Google 的地理编码 API。

对于初学者 - 我在控制台中创建了一个基本应用程序,它将给定的街道号码转换为纬度和经度值。

我还在 Google Api 控制台中创建了一个 API 密钥。

Geocoding.IGeocoder geocoder = new GoogleGeocoder() { ApiKey = "my api key" };
            IEnumerable<Address> addresses =  await geocoder.GeocodeAsync("1600 pennsylvania ave washington dc");
            Console.WriteLine("Formatted: " + addresses.First().FormattedAddress);
            Console.WriteLine("Coordinates: " + addresses.First().Coordinates.Latitude + "," + addresses.First().Coordinates.Longitude);

            Console.ReadKey();

运行应用程序时 - 我收到以下异常:

Geocoding.Google.GoogleGeocodingException: 'There was an error processing the geocoding request. See Status or InnerException for more @R_776_4045@ion.'

InnerException 中没有信息 - 所以我检查了状态,它说:

enter image description here

RequestDenied - 幸好这是一个常见问题 - 所以我转到以下页面寻找解决方案:

enter image description here

因此,首先我确保在 Google Cloud Console 中启用/激活了 Places API - 它已被激活。

enter image description here

我检查了我的关键参数是否有任何问题 - 但我找不到任何问题 - 似乎没问题。以防万一,我生成一个新的 api 密钥,但它仍然不起作用。

我还检查了 API 密钥是否已正确设置 - 我创建了一个新的 API 密钥,该密钥不受限制,但我仍然遇到同样的问题。

enter image description here

我已经按照这里的每一步操作,但我仍然遇到同样的问题:请求被拒绝。

我不知道我是否遗漏了一个非常重要的步骤,但现在我不知道该怎么做。我尝试了小时解决这个问题,但无济于事。

我不知道问题的根源是什么 - 我向可以帮助我的人提供 100 声望。

谢谢,

tommy99

解决方法

你一秒钟发送多少个请求? 我在 usage limit documentation

中发现了这个使用限制

虽然您不再受每天最大请求数 (QPD) 的限制,但使用 Places API 时仍适用以下使用限制:

速率限制为每秒 100 个请求 (QPS)。它计算为使用同一项目凭据的所有应用程序的客户端和服务器端请求的总和。

,

如@emert117 所述,您可能已达到使用限制。此外,Google 在某些国家/地区和某些 IP 地址提供有限的服务。您可能需要确保请求不会通过具有受限 IP 地址的 VPN 或代理,或者不是来自受限国家/地区。

这些线程可能有更多有用的评论:

  1. Google Geocoding API - REQUEST_DENIED

  2. Does Geocoder gem work with google API key?