我正在开发一款使用MapBoxOfflinetileProvider的Android应用,让用户可以离线访问地图。我按照文档中的建议将离线切片添加到GoogleMap对象,只要用户通过互联网连接至少打开一次地图活动,它就可以正常离线工作。如果用户安装应用程序,关闭互联网连接,然后转到活动,但是,GoogleMap对象永远不会被实例化,也不会显示任何内容。作为一种解决方法,我现在正在实例化,然后在用户首次打开应用程序时删除GoogleMap对象。这似乎工作正常,但我想知道是否有人有任何更好的解决方案或看到我的方法有任何缺点。
我正在使用的代码,放在应用程序初始"交换机"的onCreate方法中。活动是:
if(!PropertyHolder.isGoogleMapsOfflineReady() && Util.isOnline(context)){
// do initial connect to Google Play Services so that map works offline
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext());
if (status == ConnectionResult.SUCCESS) {
SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
if(supportMapFragment != null){
GoogleMap gm = supportMapFragment.getMap();
if(gm != null){
PropertyHolder.setGoogleMapsOfflineReady(true);
gm = null;
}
}
}
}
其中R.id.map
是对活动布局中隐藏的地图片段ID的引用。