1

我是安卓新手。很多天以来,我一直在尝试制作非常基本的谷歌地图应用程序,但还无法完成......代码中没有错误,模拟器从终端运行良好,地图键也很好,但我仍然看不到地图。当我运行我的应用程序时,只出现网格并且不显示地图。这是代码,任何人都可以帮助我。我正在使用 eclipse juno 4.2.1 api level 17,我想使用 google map api v2 显示地图我的代码在这里

  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.googlemap"
  android:versionCode="1"
  android:versionName="2.0" >
  <uses-feature
  android:glEsVersion="0x00020000"
 android:required="true"/> 


  <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />
  <permission
      android:name="com.example.googlemap.permission.MAPS_RECEIVE"
      android:protectionLevel="signature"/>
  <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>

 <uses-permission android:name="android.permission.INTERNET"/>
 <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"/>


   <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
   <meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="[API_KEY]"/>

       <!-- <activity
        android:name="com.example.googlemap.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> -->
     <!--<uses-library android:name="com.google.android.maps" />-->
     </application>

    </manifest>

主要的.xml

         <?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"
  class="com.google.android.gms.maps.MapFragment"/>                

MainActivity.java

   package com.example.googlemap;

  import android.app.Activity;
  import android.os.Bundle;

  public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }
protected boolean isRouteDisplayed() {

         return false;

        }

  }
4

5 回答 5

1

您的清单文件正在使用 Maps V2,而布局和活动正在使用 Maps V1。您正在使用 Maps V2 api 密钥生成过程生成 Maps API 密钥并将其设置为 Maps V1 MapView。所以它不会显示,因为它处理了错误的 API 密钥。

您要么在 V1 密钥生成过程中生成 API 密钥,要么使用google-play-services_lib项目并更改 MapView 和其他类。

于 2013-01-23T14:10:07.360 回答
0

我也有类似的问题。这对我有用!

  1. 转到生成 API 密钥的 Google API 控制台。
  2. 单击服务(出现在左侧的选项中)。
  3. 悬停并搜索 Google Maps Android API v2。
  4. 启用它(最初它是关闭的,因此只出现了灰色瓷砖)。
于 2015-04-06T19:48:45.200 回答
0

首先,在您的清单文件中,将此部分修改为以下内容。

<activity
        android:name="com.example.googlemap.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>
<uses-library android:name="com.google.android.maps" />

你为什么屏蔽这部分?请立即激活此部分。

@@@

其次,请将您的main.xml修改为以下内容;您必须指定布局文件名是“main.xml”还是“activity_main.xml”。

<?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"
  class="com.google.android.gms.maps.SupportMapFragment"/>

您必须使用上面的代码。因为您在清单文件中设置了 [android:minSdkVersion="8"]。您的 main.xml 仅用于在面向 Android API 12 或更高版本的应用程序中测试您的设置。

@@@

第三,请将您的MainActivity,java修改为下面的这个;

public class MianActivity extends android.support.v4.app.FragmentActivity {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setUpMapIfNeeded();

    }

    @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }

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

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

在 Eclipse 中,按键盘上的Ctrl + Shift + O(字母)并执行“组织导入”,然后将自动导入几个类。

上面 #1 到 #3 的这段代码是标准的基本代码格式,可以使用新的 Google Maps API 版本 2 在您的真实手机上查看 Google Maps。此代码将向您显示地图和地图上的标记。

@@@

。最重要的是在您的项目中添加两个库:一个是Google Play 服务库,另一个是Android-support-v4

如何将这两个库添加到您的项目中,请参阅此文档:单击此处

如果你不能设置两个图书馆,你就不能在你的手机上看到地图

@@@

,尝试只在你的真实设备(手机)上运行你的项目,而不是在Eclipse中的模拟器上。因为我们无法在模拟器上使用 Google Play 服务支持的新 Google Maps API v2 看到地图,这是Google 的官方文档:点击这里

@@@

我希望你能在你的手机上看到谷歌地图。

于 2013-01-24T09:41:31.870 回答
-1

确保你有这个设置:

map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);

或者你想要的任何类型....

于 2013-09-28T05:26:21.487 回答
-1

代码中没有错误,模拟器从终端运行良好

伟大的 !但是 Window > Show View > Other > Android > Logcat !

应用程序可能不会崩溃,但 Map API 会告诉您为什么地图无法在日志中显示。

为了确保你做得很好:

  • 为了实施新的 Google Map API,Google 发布了一份不完整的指南。你可以在这里找到它。
  • 我说不完整是因为他们没有清楚地解释 Google Play 服务的设置,但他们在这里做了。
于 2013-01-24T10:01:46.323 回答