Android Google Maps API v2无法加载地图

时间:2014-06-24 13:17:42

标签: android google-maps android-fragments google-maps-android-api-2

早上好,我遇到了Android Google Maps Api v2的问题,它没有加载地图。 我使用的是SupportMapFragment,它放在抽屉导航片段中。 所有的身份验证都是正确的,已经检查了一百万次的权限,它仍然是相同的。 我在已经在设备中测试的模拟器中发布了一些代码和结果图像:

CreateFragment.class

    GoogleMap mMap;
    ImageButton create;
    Geocoder geoCoder;
    int radius;
    Double latitude;
    Double longitude;
    LatLng latLong;



        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_create, container, false);
//          create = (ImageButton)rootView.findViewById(R.id.create);
//          create.setOnClickListener(Handler);
            mMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map))
                    .getMap();
            mMap.setMyLocationEnabled(true);
            mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
            mMap.animateCamera(CameraUpdateFactory.zoomTo(14));

            return rootView;
        }

fragment_create.xml

<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"
    android:background="#efece3" >

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


        <!--<ImageButton-->
            <!--android:id="@+id/create"-->
            <!--android:layout_width="65dp"-->
            <!--android:layout_height="65dp"-->
            <!--android:scaleType="fitXY"-->
            <!--android:src="@drawable/ic_new"-->
            <!--android:background="#00000000"-->
            <!--android:layout_gravity="center"/>-->




</RelativeLayout>

的AndroidManifest.xml

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

    <permission
        android:name="info.androidhive.googlemapsv2.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="info.androidhive.googlemapsv2.permission.MAPS_RECEIVE" />

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="17" />

    <!-- Required OpenGL ES 2.0. for Maps V2 -->
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launche_small"
        android:label="@string/app_name"
        android:theme="@style/AppBaseTheme" >
        <activity
            android:name="com.android.myspots.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.android.myspots.CreateSpot"
            android:label="@string/createTitle" >
        </activity>

        <activity
            android:name="com.android.myspots.SpotShow"
            android:label="@string/showTitle" >
        </activity>


        <activity
            android:name="com.android.myspots.CreateNotification"
            android:label="@string/title_activity_create_notification" >
        </activity>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyC-8L-x21WRj1zjhmBXn9FKRdD0IvHO2yI" />

    </application>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <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" />
    <!--
         The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
         Google Maps Android API v2, but are recommended.
    -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

</manifest>

The result

3 个答案:

答案 0 :(得分:1)

如果仅为调试目的生成API密钥,请确保您的设备执行应用程序的调试版本。见here

答案 1 :(得分:0)

伙计我真的需要帮助,交付日期是明天,我无法工作,已经失去了调查代码,api控制台和在互联网上搜索答案的时间

答案 2 :(得分:0)

我个人曾经遇到过这个问题,好像我的keytool工作得那么好。我知道eclipse有一个显示你的SHA1的功能,它与keytool的不同(并且正在工作)。它位于Window&gt;偏好设置&gt; Android&gt; Build。不知道在Android Studio中哪里可以找到它,但它可能在某处。

希望这个答案不会太晚。