【问题标题】:Google Maps API v2 - Using API Key with built-in map appGoogle Maps API v2 - 将 API 密钥与内置地图应用程序一起使用
【发布时间】:2013-09-19 05:45:11
【问题描述】:

如果内置 google-maps 应用是通过 Intent 启动的,像这样

string maps = "maps.googleapis.com/maps/api/staticmap"
string addr = "center=422+Android+Blvd+10110";
string key = "key=Ab4jk3j4k34jk34jk3"

string url =  "http://" + maps + "?" + addr + "&" + key

Intent intent = new Intent(Android.Content.Intent.ActionView, Uri.Parse(url));
intent.SetClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
StartActivityForResult(intent,(int)ActivityRequestCode.Map);

是否可以在请求的 url 中指定 API 密钥,以便以与 在来自 v2 MapFragment/MapActivity/MapView 的请求中使用它们?

我认为我所有的语法等都是正确的,因为我今天提出的第一个请求已经完成,但所有后续请求都被忽略了。就好像该服务正在针对我的 IP 执行其滥用政策。

使用 debug.keystore 文件从中提取 SHA 签名,并在清单文件中使用生成的密钥创建条目:

<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <application>       
        <meta-data android:name="com.google.android.maps.v2.API_KEY"
                   android:value="Ab4jk3j4k34jk34jk3" />
    </application>
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.SET_DEBUG_APP" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
</manifest>

由于我的请求被忽略,我想可能内置地图应用程序不支持带有指定键的请求。关于为什么我不能使用较新的 v2 样式 MapFragment/MapActivity(或其他任何名称)存在技术限制。

我试过三种按键类型,两种“浏览器应用”和一种“安卓应用”:

谢谢。

【问题讨论】:

  • 你设置了哪些权限?
  • @Cheesebaron OP 已更新。

标签: android google-maps xamarin.android


【解决方案1】:

浏览器 API 密钥与移动应用程序 API 密钥不同,因此您将无法使用从密钥库生成的 API 密钥,因为它仅适用于您的应用程序。

使用静态(浏览器)地图是没有密钥的,但是如果您在网页上的特定域上显示地图,则需要使用 API 密钥。

【讨论】:

  • 感谢 CB。我们会,我从 Google 控制台获得了 3 个键,两个“浏览器应用程序”和一个“android 应用程序”键,并且都尝试了它们(更新了 OP 和屏幕截图)?如果我尝试不使用密钥,那么只有我当天提出的第一个请求(即 24 小时内)得到服务,之后所有其他请求都会被丢弃(无论有没有密钥)。
  • ... 您的权利,根据developers.google.com/maps/documentation/staticmaps/…staticmaps 文档,它声明 请注意,不需要使用密钥,尽管它是推荐的。本文档中的示例不包含 key 参数,因此它们适用于所有剪切和粘贴代码的用户。
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多