您好我最近关注了Google Map API v2上的Vogella教程。代码与他的相似。但由于某种原因,地图显示为空白,而logcat也没有显示任何错误。我也按照这个video来获取SHA1指纹然后我把API密钥放在清单文件中。我使用了调试密钥库C:\ Users \ UserName.android \ debug.keystore,它也是Eclipse中的默认调试密钥库 - > Windows - >偏好 - > Android - >建立。
我还生成了一个新的API密钥,它仍然无效。
清单文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.barcodelibrary"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="15" />
<permission
android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SET_DEBUG_APP"></uses-permission>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".HomeActivity"
android:label="@string/title_activity_home" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ScanActivity"/>
<activity android:name=".MapActivity"/>
<activity android:name=".BarcodeHelper"/>
<activity android:name=".JsonHelper"/>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="my api key" />
</application>
</manifest>
这是我的地图活动布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapActivity" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment" />
</RelativeLayout>
这是我的地图活动:
public class MapActivity extends Activity
{
static final LatLng HAMBURG = new LatLng(53.558, 9.927);
static final LatLng KIEL = new LatLng(53.551, 9.993);
private GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
.title("Hamburg"));
Marker kiel = map.addMarker(new MarkerOptions()
.position(KIEL)
.title("Kiel")
.snippet("Kiel is cool")
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher)));
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_map, menu);
return true;
}
}
谢谢!
答案 0 :(得分:26)
您的清单存在几个权限问题。首先,在下面你需要用你的包替换包名,你还需要uses-permission
<permission
android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
根据你的包名,应该是 -
<permission
android:name="com.example.barcodelibrary.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.barcodelibrary.permission.MAPS_RECEIVE"/>
最后,您似乎错过了specifying permissions的Getting Started guide部分中的以下权限 -
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
答案 1 :(得分:9)
对我来说,事实证明我没有启用Google Maps Android API v2
。我们使用的另一个Google Maps API我认为是相同的。
答案 2 :(得分:1)
如果它不起作用,请按照
进行操作解决地图上的空白屏幕问题: 你好,我已经通过这个空白屏幕很长一段时间,并尝试了你可以想象的所有解决方案。现在它解决了,步骤是:
1 - 仔细阅读this tutorial的所有步骤。
2 - 如果空白屏幕仍然相同,请删除存在的调试密钥库文件 c:\ Users \ youUser.android \ debug.keystore&lt; - 删除此文件
3 - 在eClips IDE上重建您的应用程序,以便它自动重新创建此文件。 4-On eclips转到Window - &gt; preferences - &gt; android - &gt; Build 复制新生成的SHA1,然后按照正常的密钥生成步骤操作。 5 - 在你的真实设备上运行,我希望你能看到你的地图:)
答案 3 :(得分:1)
您必须在具有以下配置的amulator中运行您的应用.... 1)Google API(x86系统映像) 2)选择checkBox指示使用主机GPU ..
答案 4 :(得分:1)
我在地图上遇到了类似的问题。在解决了所有的lib和关键问题之后,我刚看到一个白色的屏幕上贴着&#34; Google&#34;。
问题是,我将MapFragment
放入ScrollView
。删除ScrollView
后一切正常。我可以看到地图。
答案 5 :(得分:1)
我必须将正确的SHA-1证书指纹添加到我的Google Developer Console。
显示当前指纹:keytool -list -keystore ~/.android/debug.keystore
复制指纹(例如 48:6F:55:B7:C5:E4:54:E1:29:D5:E1:E1:E2:A8 )
答案 6 :(得分:0)
大多数人忘了激活Google Maps Android API V2 in the developer console,我激活了它,瞧,我的地图出现了。
答案 7 :(得分:0)
将自定义keysote设置为与默认值相同(Eclipse)。并在Google控制台中注册API密钥,如文档中所述。
答案 8 :(得分:0)
答案 9 :(得分:0)
在我的情况下,它是我从GitHub克隆的现有应用程序,并没有更改API密钥。对我有用的是启用签名证书的SHA-1。按照这些short instructions获取SHA-1指纹。
然后我让主开发者将我的SHA-1指纹添加到他的相关API密钥here的授权包中。然后我以相同的方式再次进行构建,并且它有效。
答案 10 :(得分:0)
my answer in other post实际上对我有用,我粘贴应用签名证书 sha-1
答案 11 :(得分:0)
确认您的 api-key 是正确的。您也可以尝试从 API 密钥中删除限制
答案 12 :(得分:-2)
我有一个类似的问题,调试没问题,但发布时出现空白屏幕。 API密钥很好。
取而代之的是:
Class<?
通过这个
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_key" />
直接添加api密钥而不使用ressource string