2013-02-07 113 views
19

您好,我最近跟踪了Vogella的Google Map API v2教程。代码与他的相似。但由于某种原因,地图显示空白,logcat也显示无错误。我也跟着这video得到SHA1指纹,然后我把API密钥放入清单文件。我使用了调试密钥库C:\ Users \ UserName.android \ debug.keystore,它也是Eclipse - > Windows - > Preference - > Android - > Build中的默认调试密钥库。安卓谷歌地图API V2空白屏幕

我也生成了一个新的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

您是在真实设备上测试吗? – iagreen

+0

你有没有在谷歌的服务? – Fred

+0

是的,我正在测试一个真实的设备,Galaxy S3,我也在谷歌api控制台上激活了api。 – user1832478

回答

24

您的清单有许多权限问题。首先,在下面,你需要用你的包替换包名,您还需要为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"/> 

最后,你似乎从的Getting Started guidespecifying permissions部分缺少以下权限 -

<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"/> 
+0

现在正在工作谢谢! – user1832478

1

,如果它不工作,虽然,按照这个

解决在地图上的空白屏幕问题: 您好,我已经通过这个黑屏了很长一段时间,尝试了所有的解决方案u能imagine.Now它解决了与步骤是:

1仔细检查this tutorial的所有步骤。

2,如果黑屏还是一样,删除您调试中存在的 C键存储文件:\用户\ youUser.android \ debug.keystore < - 删除此文件

3,在eClips IDE重建您的应用程序,以便它自动重新创建此文件。 4 - 在eclips转到窗口 - >首选项 - > android - >生成 复制新鲜生成的SHA1,然后按照正常的密钥生成步骤。 5在你的真实设备上运行,我希望你会看到你的地图:)

6

对我来说,事实证明,我没有启用Google Maps Android API v2。我们正在使用另一个Google Maps API,我认为它是相同的。

+0

这对我有用:) – pa1geek

1

必须运行在amulator您的应用程序有以下配置.... 1)谷歌API(x86的系统映像) 2)选择复选框以表示使用主机GPU ..

0

将自定义键设置为与默认设置相同(Eclipse)。并在Google文档中注册API密钥。

0

我有一个地图类似的问题。在解决了所有问题和关键问题之后,我只看到一个带有“Google”标签的白色屏幕。 问题是,我把MapFragment放入ScrollView。删除ScrollView后,一切工作正常。我可以看到地图。

-2

我有一个类似的问题,其中调试是好的,但在发布的空白屏幕。 API密钥很好。

什么工作正在取代这个:

<meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="@string/google_maps_key" /> 

通过这个

<meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIzaSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXGNc" /> 

添加的情况下直接的ressource串API密钥

0

Android的工作室: 确保你把你的钥匙在正确的层次结构中

enter image description here

0

在我的情况下,这是一个现有的应用程序,我从GitHub克隆,并没有改变API密钥。对我有用的是启用我的签名证书的SHA-1。按照这些short instructions获得SHA-1指纹。

然后我让主开发人员将我的SHA-1指纹添加到他的相关API密钥here的授权包中。然后我再次以同样的方式完成了构建,并且工作。

1

我不得不将正确的SHA-1证书指纹添加到我的Google Developer Console。

  1. 显示当前指纹:keytool -list -keystore ~/.android/debug.keystore

  2. 复制指纹(例如48:6F:55:B7:C5:E4:54:E1:29:D5:E1:E1:E2: A8

  3. 将它添加到您的凭据为特定的应用程序在Google Developer Console