MapFragment 不会加载
Posted
技术标签:
【中文标题】MapFragment 不会加载【英文标题】:MapFragment won't load 【发布时间】:2016-09-13 07:51:42 【问题描述】:我只是想在我的 android 应用中查看地图,但遇到了一些麻烦。 我一直在关注几个教程,但仍然没有结果。 我从我的 sdk 管理器下载了 google play 服务并正确导入了 google_play_services_lib 我猜。 所以我使用我的包名和我的 SHA1 从 Google Api Console 创建了一个 Google Maps API 密钥,我使用 cmd 以及在 Eclipse 中的 window>preferences>android>build 中找到了它,我在两种方式中都得到了相同的 SHA1,所以我认为它是正确的.
所以我这样设置我的清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.googlemapprova"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="21" />
<permission android:name="com.example.googlemapprova.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.googlemapprova.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" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<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="my api key" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name=".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>
在我的布局文件中,我只创建了一个地图片段
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_
android:layout_
android:layout_alignTop="@+id/textView1"
android:layout_centerHorizontal="true" />
由于教程,我已将 android:name 更改为 class="com.google.android.gms.maps.SupportMapFragment"
然后是我的主要
package com.example.googlemapprova;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.Toast;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
public class MainActivity extends FragmentActivity
GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try
// Loading map
initilizeMap();
initializeUiSettings();
initializeMapLocationSettings();
initializeMapTraffic();
initializeMapType();
initializeMapViewSettings();
catch (Exception e)
e.printStackTrace();
@Override
protected void onResume()
super.onResume();
// initilizeMap();
private void initilizeMap()
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
// check if map is created successfully or not
if (googleMap == null)
Toast.makeText(getApplicationContext(), "Sorry! unable to create maps", Toast.LENGTH_SHORT).show();
public void initializeUiSettings()
googleMap.getUiSettings().setCompassEnabled(true);
googleMap.getUiSettings().setRotateGesturesEnabled(false);
googleMap.getUiSettings().setTiltGesturesEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
public void initializeMapLocationSettings()
googleMap.setMyLocationEnabled(true);
public void initializeMapTraffic()
googleMap.setTrafficEnabled(true);
public void initializeMapType()
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
public void initializeMapViewSettings()
googleMap.setIndoorEnabled(true);
googleMap.setBuildingsEnabled(false);
我从教程中获得了我的主要代码并对其进行了一些修改,这样我管理我的应用程序不崩溃(如果我不使用此代码,我的应用程序将崩溃)。 this is what i get 我正在使用摩托罗拉 moto g3 手机尝试一下 所以我试图从Play商店在我的手机上下载aLogcat,但我什么也没得到,也许我以错误的方式使用它。 this is the tutorial i used the most
有人可以帮我在我的应用上查看地图吗?我不明白为什么它不起作用 我现在正在尝试获取 Logcat
【问题讨论】:
你能读一下这个然后试试developers.google.com/maps/documentation/android-api/… 尝试检查此 SO 问题 17469661 和 15703245 中的代码是否可以帮助您。还要确保您正确引用了 google play services library 项目。 谢谢大家,我尝试使用 android studio 而不是 eclipse,一切都运行良好。在另一个堆栈溢出问题中,有人告诉 eclipse 无法正确读取元数据标签。所以现在我正在使用 android studio 并且它可以工作 【参考方案1】:您的地图片段已加载,但地图内容未加载。
您将 API 密钥放在哪里?
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="my api key" />
【讨论】:
在应用程序节点中,就在活动节点之前 我想知道“我的 api 密钥”是故意在那里向我们隐藏你的 api 密钥,还是你的代码中就有这个? 在我的清单中,我的 api 密钥是我从 google api 控制台获得的密钥 好的。请您确认您是否再次生成了您的密钥 debug.keystore 并且您正在以调试模式启动应用程序? 是的,我的密钥正确,我的手机处于调试模式以上是关于MapFragment 不会加载的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型“Android.Support.V4.App.Fragment”转换为“Android.Gms.Maps.MapFragment”