简体   繁体   English

android 谷歌地图与片段显示空白谷歌地图

[英]android google maps with fragment display blank google map

I have adopted a very simple approach to display a map segment on my android phone.我采用了一种非常简单的方法在我的 android 手机上显示地图段。 I never had the chance to see a map segment.我从来没有机会看到地图片段。 I always get a blank screen with google watermark on it, empty.我总是得到一个带有谷歌水印的空白屏幕,空的。 I have followed all the steps as below:我已按照以下所有步骤操作:

  1. My FragmentActivity class我的 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.My activity_maps.xml as my simple layout 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.My AndroidManifest.xml 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. My debug.keystore generation by the keytool under my Java/bin directory我的 Java/bin 目录下的 keytool 生成的 debug.keystore
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, Get the fingerprint SHA1 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

and

  1. Create Android Api key with the SHA1 fingerprint navigating to使用导航到的 SHA1 指纹创建 Android Api 密钥

html page: https://console.developers.google.com/apis/credentials/key/0?project= "myproject" html 页面: https ://console.developers.google.com/apis/credentials/key/0 ? project = "myproject"

在此处输入图片说明

What is wrong with me?我是怎么了? To all of you out there pleeeeeease give me a hint!对你们所有人,请给我一个提示!

I have adopted a very simple approach to display a map segment on my android phone.我采用了一种非常简单的方法来在我的Android手机上显示地图片段。 I never had the chance to see a map segment.我从来没有机会看到地图片段。 I always get a blank screen with google watermark on it, empty.我总是得到一个空白的屏幕,上面有谷歌水印,是空的。 I have followed all the steps as below:我已按照以下所有步骤操作:

  1. My FragmentActivity class我的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.My activity_maps.xml as my simple layout 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.My AndroidManifest.xml 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. My debug.keystore generation by the keytool under my Java/bin directory我在Java / bin目录下的keytool生成的debug.keystore
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, Get the fingerprint SHA1 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

and

  1. Create Android Api key with the SHA1 fingerprint navigating to使用SHA1指纹创建Android Api密钥,导航至

html page: https://console.developers.google.com/apis/credentials/key/0?project= "myproject" html页面: https ://console.developers.google.com/apis/credentials/key/0 ? project = “ myproject”

在此处输入图片说明

What is wrong with me?我是怎么了? To all of you out there pleeeeeease give me a hint!大家对pleeeeeease可以给我一个提示!

I've just been struggling with this and found a away to solve it.我一直在努力解决这个问题,并找到了解决它的方法。 Assuming you're like me and you're certain your code, api key and SHA-1 are all set up well, you probably have forgot to enable the "Maps SDK for Android" on the Google console.假设您像我一样并且确定您的代码、api 密钥和 SHA-1 都设置良好,那么您可能忘记在 Google 控制台上启用“Android 地图 SDK”。 Here's how to enable it:以下是启用它的方法:

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

Make sure you're logged in to the account you've created your project with.确保您登录到您创建项目的帐户。

Open your project.打开您的项目。

Click "Credentials"点击“凭据”

Click on "Maps SDK for Android" then hit "Enable".单击“Android 版地图 SDK”,然后单击“启用”。

And voila, your app should properly load Google Maps instead of displaying a blanked map now.瞧,您的应用应该正确加载 Google 地图,而不是现在显示空白地图。

https://youtu.be/lDpOkpIPlts观看本视频教程,您将获得最佳解决方案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM