【问题标题】:Cann't show google maps on my android app无法在我的 Android 应用上显示谷歌地图
【发布时间】:2014-03-28 21:46:04
【问题描述】:

我基于此创建了一个 android 应用程序:https://code.google.com/p/android-my-map-location/downloads/list 使用谷歌地图。所以我已经下载了项目并完成了所有操作并添加了我的 API 密钥,但是当我运行应用程序时,地图不可见,我只能看到缩放按钮和一些方形图块。

我知道我的 API 密钥有问题,但我无法正确获取它,这是我获取它的方法:

1) 从 eclipse >> 窗口 >> 首选项 >> android >> build 然后我找到我的 SHA1 指纹。 2) 我去 google API COnsole 并确保我选择了 google maps for android v2 被选中。 3) 创建新的 android 密钥并粘贴我的 SHA1 指纹和我的包名。

谁能帮我解决这个问题 这是我项目的直接下载链接:https://android-my-map-location.googlecode.com/files/android-my-map-location.zip

【问题讨论】:

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


【解决方案1】:

你应该把它添加到你的清单中

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

地图 API 需要 OpenGL ES 2.0。

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

将此粘贴​​到应用程序中:

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

这可以放在布局中的任何位置。

    <com.google.android.gms.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

这应该是你的 MyMapLocationActivity.java

public class MyMapLocationActivity extends FragmentActivity {
    private MapView mMapView;
    private GoogleMap mMap;

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

        mMapView = (MapView) findViewById(R.id.map);
        mMapView.onCreate(savedInstanceState);

        setUpMapIfNeeded();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();

        setUpMapIfNeeded();
    }

    private void setUpMapIfNeeded() {
        if (mMap == null) {
            mMap = ((MapView) findViewById(R.id.map)).getMap();
            if (mMap != null) {
                setUpMap();
            }
        }
    }

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

    @Override
    protected void onPause() {
        mMapView.onPause();
        super.onPause();
    }

    @Override
    protected void onDestroy() {
        mMapView.onDestroy();
        super.onDestroy();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        mMapView.onLowMemory();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mMapView.onSaveInstanceState(outState);
    }
}

这是一个 google-play-services 示例

【讨论】:

  • 他正在使用 Google API 2.2,我怀疑他是否可以使用 FragmentActivity
【解决方案2】:

尝试从您的谷歌开发者控制台授权所有应用程序使用您的密钥(将该字段留空)。

【讨论】:

  • 你的意思是当我得到 api 时,我只是在没有我的包的情况下粘贴我的 SHA1 指纹?
  • 不,我的意思是你从哪里得到你的 api 密钥,你需要填写你的应用程序的 sha 指纹,如果你让它空白,那么你就可以将你的密钥用于所有应用程序。还要确保你有一个 android googlemp apikey
  • 谢谢,我已经尝试过了,但不幸的是没有成功。如果您想查看,我已经发布了指向我的项目的直接链接。
  • 2分钟后检查,brb
  • 想不通,你最好使用Gmap api V2并按照google提供的教程,更简单,你可以为Android 4.0(90%的市场)构建它
【解决方案3】:

创建一个简单的应用并检查您的 API 密钥是否正确。

只需使用 MapFragment 创建一个布局并将其设置为一个活动

activity_map.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"
      android:name="com.google.android.gms.maps.MapFragment"/>

将布局设置为活动

   setContentView(R.layout.activity_map);

在应用程序下的清单中也添加元标记

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

当您启动您的应用程序时,您应该会看到在活动中加载的地图。如果这对您的 API 密钥不起作用。如果可行,请更改您的代码以使用自定义 MapFragment。

【讨论】:

    【解决方案4】:

    我设法按照谷歌开发者网站中的确切步骤使其工作:

    https://developers.google.com/maps/documentation/android/

    【讨论】:

    • 点击回答框左侧的绿色图标,将您的帖子标记为“已回答”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2017-11-29
    • 2015-05-11
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多