使用Google Map V2和SupportMapFragment的空白地图(不,这不是API密钥问题)

时间:2013-09-28 09:47:01

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

我知道有很多这样的帖子,但大多数都与错误的API密钥相关,但这不是我的情况。

我知道API密钥没问题,好像我改了它,我会收到授权错误。从API控制台,如果我转到“报告”,我可以看到我的所有请求。

我按照官方教程,我读了10次: https://developers.google.com/maps/documentation/android/start

有些奇怪的事情要注意:

首次显示片段时,网格为空白。但是,如果我关闭屏幕,然后打开它(onResum)地图出现但它卡住了,我无法移动地图或使用缩放控制器) 并且,如果从我的片段中,我将地图置于某个位置,则地图居中。所以忘掉API密钥。

这是我的清单:

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

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

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

       <!-- The following two 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"/>


<uses-feature android:glEsVersion="0x00020000" android:required="true"/>

    <application android:icon="@drawable/icon" android:label="@string/app_name"          android:theme="@android:style/Theme.Black.NoTitleBar" >


      <activity android:name=".StartActivity"
              android:label="@string/app_name"
       android:theme="@style/FapiaoTheme" android:screenOrientation="portrait" 
       >     
        <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.maps.v2.API_KEY" 
       android:value="MY_KEY"/>


</application>

这是我的布局:

    <?xml version="1.0" encoding="utf-8"?>
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:name="com.google.android.gms.maps.SupportMapFragment"/>

这是我的片段(你可以看到我使用Sherlock)

    public class FragmentContact extends SherlockFragment
    {

      public void onActivityCreated(Bundle savedInstanceState) 
      {
        super.onCreate(savedInstanceState);
      }

      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
     {
            View view = inflater.inflate(R.layout.plan2 , container, false);

            return view;    
     }

     }

当然,我没有从logcat获得任何错误,也没有任何警告。

我刚收到一些关于内存的调试信息,我认为它没有任何问题可以解决。

/ dev / pmem:映射缓冲区基数:0x559da000大小:9539584偏移量:7798784 fd:115

我将google-play-service添加为我的eclipse项目库

有什么想法吗?请帮帮我

我是个好人,我应得的

3 个答案:

答案 0 :(得分:4)

我遇到了类似的问题,我通过添加onResume()解决了我的问题。 在我的例子中,我使用了MapView类。

@Override
public void onResume() {
    mapView.onResume();
    super.onResume();
}

答案 1 :(得分:0)

你缺少另一个元数据元素:)

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

还有一件事。您正在使用SupportMapFragment,它将用于API 11及更低版本。由于您的最低SDK兑换率为11,而且这些天的大部分手机都高于API 11,您可能需要考虑将其转换为MapFragment。

答案 2 :(得分:-1)

不要通过xml将片段放在片段中。 This is not supported