【问题标题】:My android app is showing only grid not map我的 android 应用程序只显示网格而不是地图
【发布时间】:2015-04-07 04:21:52
【问题描述】:

我是 Android 新手。很多天以来,我一直在尝试制作非常基本的谷歌地图应用程序,但还无法完成...... 代码没有错误,模拟器从终端运行良好,地图键也很好,但我仍然看不到地图。当我运行我的应用程序时,只出现网格并且不显示地图。这是代码,任何人都可以帮助我。 我正在使用 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>

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.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;

        }

  }

【问题讨论】:

  • 您的 maps 键很可能是错误的。您使用什么证书/签名生成密钥、开发或部署密钥?您是在 Eclipse 中按播放还是导出 APK?
  • 我正在使用 ShA-1 生成密钥...
  • @Zainya Masood....(1) 在您的“main.xml”中,API_KEY 不是必需的,因为您的 API_KEY 已经存在于清单文件中。从 Google Maps API v2 开始,您的 API_KEY 被定义为清单文件中的
  • @Zainya Masood...(2) 您的“main.xml”是旧版本的情况,称为 Google Maps API 版本 1。请使用“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"/> "
  • @Zainya Masood...(3)在您的 MainActivity.java 中,请更改为“public class MainActivity extends android.support.v4.app.FragmentActivity {”,因为您设置了“see this document。

标签: android google-maps


【解决方案1】:

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

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

【讨论】:

  • 请告诉我如何使用 Maps V2 进行布局和活动
  • 我在 logcat 中遇到错误,例如“无法获取连接工厂客户端”,第二个是“错误打开跟踪文件没有找到这样的文件”@TNR
  • @ZainyaMasood 它们只是警告,您无需担心
  • @ZainyaMasood 几天前刚刚发布的 V2 版本,没有太多教程来教授 Maps V2。您必须等待更多时间才能获得更详细的教程,或者通过此链接可以帮助您stackoverflow.com/questions/13796822/…
  • 感谢您的回复...请重新检查我的代码,我对其进行了一些更改,请告知是否有任何问题
【解决方案2】:

首先,在你的ma​​nifest文件中,把这部分修改成下面这个。

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

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

@@@

第二,请将你的ma​​in.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

如何将这两个库添加到您的项目中,请参阅this document : Click here

如果不能设置两个库,在真机上看不到地图

@@@

,尝试仅在您的真实设备(手机)上运行您的项目不要在 Eclipse 中的模拟器上。因为我们无法在模拟器上使用 Google Play 服务支持的新 Google Maps API v2 看到地图,即Google's official document :click here

@@@

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

【讨论】:

  • 你在复制 /extras/google/google_play_services/samples/maps 吗? :D
  • @Gorcyn...是的..android-sdk 示例。
  • @BBonDoo 我想在 Eclipse 的模拟器上运行这个项目,我该怎么做?
【解决方案3】:

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

  1. 转到生成 API 密钥的 Google API 控制台。
  2. 点击服务(出现在左侧的选项中)。
  3. 悬停并搜索 Google Maps Android API v2。
  4. 启用它(最初它是关闭的,因此只出现灰色瓷砖)。

【讨论】:

    【解决方案4】:

    代码没有错误,模拟器从终端运行正常

    太棒了!但是 Window > Show View > Other > Android > Logcat !

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

    为了确保你做得很好:

    • 为了实施新的 Google Map API,Google 发布了一个不完整的指南。你可以找到它here
    • 我说不完整是因为他们没有清楚地解释 Google Play 服务的设置,但他们会 here

    【讨论】:

      【解决方案5】:

      确保你有这个设置:

      map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
      

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

      【讨论】:

      • 为什么投反对票?我有同样的问题,解决了它,并且 OP 没有在他的代码中发布。
      猜你喜欢
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多