【问题标题】:Map not displaying with Google Maps API android地图未使用 Google Maps API android 显示
【发布时间】:2014-11-24 06:05:38
【问题描述】:

我正在我的应用上安装 Google Maps API。我的一切都在运行并且可以启动 Google 地图活动,但地图没有显示。它只是显示一个可以放大和缩小的网格。

    package com.fotolife.app;

import android.os.Bundle;

import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;

public class Map extends MapActivity {

    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    protected void onCreate(Bundle arg0) {
        // TODO Auto-generated method stub
        super.onCreate(arg0);
        setContentView(R.layout.map);


    }


}

^ 那是我的 Map.java

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="I Took this out for security reasons, but it works."
/>

</LinearLayout>

^ 这是我的 map.xml

感谢您的帮助!

【问题讨论】:

  • 你是否在 AndroidMenifest.xml 文件中设置了互联网权限
  • 是的。我有这个:
  • 在菜单中
  • 我添加了 android:required="true" 但它似乎没有帮助。
  • 大多数情况下它不起作用是因为 apiKey。你确定是这个应用的地图键吗?

标签: android google-maps


【解决方案1】:

如果您使用的是 Google Maps Android API v2,这可能是您的项目无法运行的原因。要使其正常工作,您必须执行以下步骤:

从 SDK 管理器下载和配置 Google Play 服务

Google Play 服务是 Android SDK 附加功能的一部分。您可以在附加部分中找到它。

将 google play services lib JAR 添加到您的项目构建路径

lib JAR 安装在路径中

$ANDROIDSDK_HOME/extras/google/google_play_services/libproject/google-play-services_lib/libs

使用 Google API 控制台获取 API 密钥

您可以使用操作系统控制台生成一个 SHA1 指纹用于调试目的,方法是发出以下命令:

$ keytool -list -v -keystore ~/.android/debug.keystore -storepass android

在 Google API 控制台中,转到 API Access,然后在右侧窗格中选择“创建新的 Android 密钥...”。然后将 SHA1 指纹放入文本框中,后跟分号和项目的包名称。

在项目的清单文件中指定权限设置

在您的应用程序清单文件中放入以下清单标记(将 com.example 替换为您的项目的包名称):

  <permission android:name="com.example.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
  <uses-permission android:name="com.example.permission.MAPS_RECEIVE"/>
  <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <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.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

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

在项目的清单文件中指定从 API 控制台生成的 API 密钥

将此作为关闭应用程序标签之前的最后一个元素

<meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="your api key goes here"/>

为您的项目添加地图

main.xml

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

Main.java

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

public class Main extends Activity {

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

运行您的应用程序

你应该让一切正常。

【讨论】:

    【解决方案2】:

    您好,这对我有用:

    还记得你的 api-key 是从哪里得到的吗? https://code.google.com/apis/console ,转到那里并在 Android 应用程序密钥(带证书)下按编辑允许的 android 应用程序。

    在我的例子中,指纹指的是不同项目中的旧包,所以我只是去了 cmd 控制台并获取了我的新指纹并在它后面输入了我当前的包名称 BINGO。

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多