我浏览了文档,正如您正确指出的那样,您不需要企业帐户即可使用地理编码 API。如果您有非企业帐户,则只需传递 API 密钥。仅当您拥有企业帐户时才需要客户 ID。密钥本身是独一无二的,如下所述:
https://developers.google.com/console/help/#WhatIsKey
API 密钥是您使用控制台生成的唯一密钥。当您的应用程序需要调用此项目中启用的 API 时,应用程序会将此密钥作为 key=API_key 参数传递给所有 API 请求。使用此密钥不需要任何用户操作或同意,不授予对任何帐户信息的访问权限,也不用于授权。
根据下面的链接,在商业帐户的情况下使用客户 ID 而不是密钥。
https://developers.google.com/maps/articles/v2tov3#newkey
如果您是 Maps for Business 客户,则需要使用客户 ID 代替密钥。请注意,两者不能一起使用。客户端 ID 类似于密钥,但有以下区别:
我猜同样的原则也适用于 Geocoding API。如果您想要不属于非企业帐户的附加功能,则必须获得一个企业帐户。
我仅使用密钥运行以下代码以在 Java 中签署我的请求,它运行良好。
public static String getAddress(String latitude, String longitude){
String address = null;
try {
final String inputurl = "http://maps.googleapis.com/maps/api/geocode/xml?latlng="+ latitude + "," + longitude + "&sensor=true";
// Sign the URL using key
String url = getRequestURL(inputurl);
url = "http://maps.googleapis.com" + url;
final URL google = new URL(inputurl);
final URLConnection geocode = google.openConnection();
final BufferedReader in = new BufferedReader(new InputStreamReader(
geocode.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
address += inputLine;
}
in.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}
public static String getRequestURL(final String inputurl) throws IOException,
InvalidKeyException, NoSuchAlgorithmException, URISyntaxException {
// Convert the string to a URL so we can parse it
final URL url = new URL(inputurl);
final URLSigner signer = new URLSigner("*INSERT YOUR KEY HERE*");
final String request = signer.signRequest(url.getPath(), url.getQuery());
return request;
}