MapView 地图未在运行时呈现 Screenshot Attached
Posted
技术标签:
【中文标题】MapView 地图未在运行时呈现 Screenshot Attached【英文标题】:MapView Map is not rendering on runtime Screenshot AttachedMapView 地图未在运行时呈现 Screenshot Attached 【发布时间】:2020-07-27 17:21:46 【问题描述】:我正在尝试在 Fragment 中添加 MapView,我的应用运行良好但无法加载地图详细信息或地理位置。请在提到的屏幕截图中找到详细信息。谷歌代码可以工作,但不能在 MapView 中加载地图。 我还提到了下面我尝试执行但遇到运行时问题的代码。
enter image description here
NearbyFragment.java
public class NearbyFragment extends Fragment implements OnMapReadyCallback
private MapView mMapView;
private static final String MAPVIEW_BUNDLE_KEY = "MapViewBundleKey";
View rootNearby;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
rootNearby = inflater.inflate(R.layout.fragment_nearby, container, false);
// Inflate the layout for this fragment
initGoogleMaps(savedInstanceState);
return rootNearby;
private void initGoogleMaps(Bundle savedInstanceState)
Bundle mapViewBundle = null;
if (savedInstanceState != null)
mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY);
mMapView = (MapView) rootNearby.findViewById(R.id.mapView_NearbyMap);
mMapView.onCreate(mapViewBundle);
mMapView.getMapAsync(this);
@Override
public void onSaveInstanceState(Bundle outState)
super.onSaveInstanceState(outState);
Bundle mapViewBundle = outState.getBundle(MAPVIEW_BUNDLE_KEY);
if (mapViewBundle == null)
mapViewBundle = new Bundle();
outState.putBundle(MAPVIEW_BUNDLE_KEY, mapViewBundle);
mMapView.onSaveInstanceState(mapViewBundle);
@Override
public void onResume()
super.onResume();
mMapView.onResume();
@Override
public void onStart()
super.onStart();
mMapView.onStart();
@Override
public void onStop()
super.onStop();
mMapView.onStop();
@Override
public void onMapReady(GoogleMap map)
map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED)
return;
map.setMyLocationEnabled(true);
@Override
public void onPause()
mMapView.onPause();
super.onPause();
@Override
public void onDestroy()
mMapView.onDestroy();
super.onDestroy();
@Override
public void onLowMemory()
super.onLowMemory();
mMapView.onLowMemory();
【问题讨论】:
【参考方案1】:编辑:添加了一个更全面的答案,其中包含所有可能的问题,以便通过链接和步骤正确渲染/显示地图,有一个这里也有很好的教程。下面是解决问题的其他步骤。
按照以下步骤操作:
-
验证清单 androidManifest.xml,通常这和布局可能是渲染地图的问题。它可以被称为
google_maps_api.xml
在 GoogleMaps for Android 中,您需要两个键 - 调试和发布。
“debug
”键用于其他重要的地方,它也用于你
在 Eclipse 中开发应用程序。 相同的调试密钥用于
开发、测试、调试。
可以在 userhome/.android/debug.keystore 文件中找到用于签署应用程序的调试密钥。
要为调试密钥库创建 SHA-1,请使用 JDK 安装中的 keytool 命令。
keytool -list -v -alias androiddebugkey \
-keystore <path_to_debug_keystore>debug.keystore \
-storepass android -keypass android
在将应用程序发布到 Market 之前,更改
android:debuggable="false"
在AndroidManifest.xml
并使用
你的Signed API key
here。
检查以使用正确的指纹,如上面的#3 keytool -list -keystore ~\.android\debug.keystore ...
然后转到您的用户目录。在windows上清理这个旧文件到C:\Users\dev2.Tykt.org\.android
并删除debug.keystore
和default.keysetTykt
最后,在此之后,在您的项目中转到 Eclipse run a clean build
完成了!
【讨论】:
我更改了顺序,但仍然出现渲染问题。请查看屏幕截图。 @GauravBhagat 这很奇怪,它直截了当,我猜还有其他事情发生。请包含更多代码。还包括,哪个版本的谷歌地图,这是在模拟器还是你的设备中以上是关于MapView 地图未在运行时呈现 Screenshot Attached的主要内容,如果未能解决你的问题,请参考以下文章
Google GeoChart(Lavacharts 库)-> AddRow / AddRows 未在地图上呈现任何结果,尽管创建了值数组
Android OnLongClickListener 未在 MapView 上触发
调用百度地图API出现 error inflating class com.baidu.mapapi.map.mapview