【问题标题】:Google Maps API v3 shows GRAY BOXES onlyGoogle Maps API v3 仅显示灰色框
【发布时间】:2013-06-13 20:44:58
【问题描述】:

新开发人员,但过去几天我一直在尝试解决在 Android 设备上显示灰色框而不是地图的问题。我已经阅读了有关这些框的所有内容,但解决方案正在运行因为其他人不为我工作。

我使用的 api 密钥来自我的 java JRE 7 文件夹中的 keytool,使用 bin 文件夹中的命令: keytool -list -alias androiddebugkey -keystore "C:\Users\ben.android\debug.keystore" -storepass android -keypass android -v .... 我相信这是我在 here 以及其他地方读到的调试 API 密钥。

这是我收到的错误http://imgur.com/IoHMHQc。我相信我已经强调了“有趣”的部分,即 java.io.IOException: Server returned: 3

这似乎意味着我的 API 密钥有问题,但我已经制作了多个新密钥,但似乎没有一个可以解决问题! 我还没有上传应用程序,所以我认为“签名/未签名”导出并不重要,但那是因为我不完全理解它。

我已尝试遵循多个教程,例如来自 Lynda.com 的教程以及各种 youtube 教程,但它们都是 Google Maps v2 而不是 v3,因此这可能是问题所在。我们将不胜感激帮助并挽救生命!

这是我的主要 java 文件:

package com.bentseytlin.gmap2;

import com.google.android.maps.MapActivity;

import com.google.android.maps.MapView;

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

public class MainActivity extends MapActivity {

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

        MapView view = (MapView) findViewById(R.id.themap);
                view.setBuiltInZoomControls(true);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

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

}

这是我的 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

  <com.google.android.maps.MapView

       android:layout_width="fill_parent"
       android:layout_height="fill_parent"    
       android:id="@+id/themap"
       android:clickable="true"
       android:apiKey="AIzaSyB1gqlqGQZCH1TlrDhp5BP9Pm9k4Jm_2co"
       />

</RelativeLayout>

这是我的清单文件:

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

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <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" >
        <uses-library android:name="com.google.android.maps"/>
        <activity
            android:name="com.bentseytlin.gmap2.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>
    </application>

</manifest>

再次感谢!

【问题讨论】:

标签: java android eclipse google-maps mobile


【解决方案1】:

确保您已按照以下链接中的所有步骤进行操作

https://developers.google.com/maps/documentation/android/start。 (api v2)

您应该在地图项目中参考谷歌服务库项目

下载 Google Play 服务。转到 Windows。转到 Android SDK 管理器。在 extras 下选择 Google play services。如果未安装,请安装该软件包。

将 google-play services_lib 库项目复制到您的工作区。库项目可以在以下路径下找到。

 <android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib library project .

将库项目导入您的 Eclipse。

点击File > Import,选择Android > Existing Android Code into Workspace,浏览工作区导入库项目。您可以检查它是否是库项目。右键单击库项目。转到属性。单击左侧面板上的 Android。您将看到是否检查了库。

参考图书馆项目

右键单击您的 android 地图项目。转到属性。选择安卓。点击 Add borwse 并添加库项目。

假设你有钥匙。

确保您已在服务选项卡下的 google api 控制台中启用 google maps for android。

您的 min sdk 是 10。您应该使用 Support Fragment。

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

您的活动必须扩展FragmentActivity

SupportMapFragment fm = (SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map);
GoogleMap mMap = fm.getMap(); 

确保您已添加支持库

还要确保您导入了以下内容

import android.support.v4.app.FragmentActivity;  
import com.google.android.gms.maps.SupportMapFragment;    

在清单文件中添加这些

  <permission
    android:name="com.bentseytlin.gmap2.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>
 <uses-permission android:name="com.bentseytlin.gmap2.permission.MAPS_RECEIVE"/>  
 <uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>  

在应用标签下的清单中添加键

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

【讨论】:

  • 我会尽快开始实施!
  • Google 地图在我的手机上启动并运行!再次感谢您
【解决方案2】:

您正在尝试使用自 2012 年 12 月起弃用的 Google Maps Android API v1,并且自 2013 年 3 月起不再适用于新项目。

切换到 API v2 的最简单方法是 1) 删除所有与地图相关的代码,2) 遵循此处的说明:https://developers.google.com/maps/documentation/android/start

【讨论】:

  • 我/我应该如何知道我使用的是什么 API?
  • @benzabill com.google.android.maps.MapViewMapActivity 是 Android v1 com.google.android.gms.maps.MapViewMapFragment 是 Android v2
  • Google Maps Android v2 是否已被弃用?如果是这样,我应该使用 v3 吗?
  • 不推荐使用 api v1 而不是 api v2。所以应该使用api v2。 developer.google.com/maps/documentation/android/start
  • @benzabill 检查此developers.google.com/maps/documentation/android/v1。检查注释 api v1 已弃用
猜你喜欢
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多