【问题标题】:android google maps with fragment display blank google map带有片段显示空白谷歌地图的android谷歌地图
【发布时间】:2016-04-09 18:29:51
【问题描述】:

我采用了一种非常简单的方法在我的安卓手机上显示地图片段。我从来没有机会看到地图片段。我总是得到一个带有谷歌水印的空白屏幕,空的。我已按照以下所有步骤操作:

  1. 我的 FragmentActivity 类
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.view.View;

    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.GooglePlayServicesUtil;
    import com.google.android.gms.maps.CameraUpdate;
    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.MapFragment;
    import com.google.android.gms.maps.MapView;
    import com.google.android.gms.maps.SupportMapFragment;
    import com.google.android.gms.maps.UiSettings;
    import com.google.android.gms.maps.model.LatLng;
    import com.google.android.gms.maps.model.MarkerOptions;

    public class MapsActivity extends FragmentActivity  {
        MapView mapView;
        GoogleMap map;
        LatLng ll;
        UiSettings mapSettings;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);


            if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) !=                          ConnectionResult.SUCCESS) {
             //change to an alternative layout without fragment
                 setContentView(R.layout.activity_main);
            }
            else
            setContentView(R.layout.activity_maps);
            setUpMapIfNeeded();


        }

        private void setUpMapIfNeeded() 
        {
            if (map == null) 
            {
                map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                        .getMap();
                if (map != null) 
                {
                    setUpMap();
                }
            }

        }
            private void setUpMap() {
                map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
            }

    }

2.我的activity_maps.xml作为我的简单布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

     <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />


</LinearLayout>

3.我的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.alpha.routefinder"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    
    <uses-permission android:name="com.alpha.routefinder.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <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.READ_PHONE_STATE" />

<permission 
android:name="com.alpha.routefinder.MAPS_RECEIVE" 
android:protectionLevel="signature"></permission>

    <uses-sdk
        android:minSdkVersion="19"
        android:targetSdkVersion="19" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MapsActivity"
            android:label="GPS route calculator" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


        <meta-data
        android:name="com.google.android.gms.version"
        android:value="8115000"/>
        <meta-data android:name="com.google.android.maps.v2.API_KEY" 
        android:value="AIzaSyCR_A5-rG4THDJfvzUHck8EhCK358xMa7I"/>
        <uses-library android:name="com.google.android.maps"/>

    </application>


</manifest>
  1. 我的 debug.keystore 由我的 Java/bin 目录下的 keytool 生成
C:\Program Files\Java\jdk1.8.0_60\bin>keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validi
ty 14000

5、获取指纹SHA1

C:\Program Files\Java\jdk1.8.0_60\bin>keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android
Certificate fingerprint (SHA1): 1D:FE:FA:5E:C9:74:CF:C1:AD:F9:4B:CC:25:8B:E9:A8:7F:04:64:9D

  1. 使用 SHA1 指纹导航创建 Android Api 密钥

html页面: https://console.developers.google.com/apis/credentials/key/0?project="我的项目"

我怎么了? 给你们所有的pleeeeeease给我一个提示!

【问题讨论】:

  • 不是答案,而是根据这个例子仔细检查你的东西:github.com/kweaver00/Android-Samples/tree/master/Location/…
  • 问题出在您的 API 密钥上。检查logcat输出,会有一个错误告诉你到底是什么问题。
  • @DanielNugent 我的 logcat 中出现的错误是 Authentication failed. Timeout while trying to contact the server 这可能是空白片段的原因吗?

标签: java android google-maps android-fragments


【解决方案1】:

您可能只是忘记在您的项目中启用 GoogleMaps API,如果是这样,请转到您的 Google Developers Console > 选择您的项目 > 转到 API Manager > 在上面的概览选项卡中点击 Google Maps Android API > 然后点击顶部的启用 API 按钮

【讨论】:

  • 我的已启用男士。但地图片段仍然是空白的
【解决方案2】:

我一直在努力解决这个问题,并找到了解决它的方法。假设您和我一样,并且您确定您的代码、api 密钥和 SHA-1 都设置得很好,您可能忘记在 Google 控制台上启用“Maps SDK for Android”。以下是启用它的方法:

转到谷歌云控制台https://console.cloud.google.com/google/maps-apis/overview

确保您已登录到创建项目时使用的帐户。

打开您的项目。

点击“凭据”

点击“Maps SDK for Android”,然后点击“启用”。

瞧,您的应用应该正确加载 Google 地图,而不是现在显示空白地图。

【讨论】:

    猜你喜欢
    • 2018-05-16
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多