osmdroid中为何显示空地图

最近想搞一下Osmdroid,发现官方demo中显示地图的基本功能都无法实现。按照官网demo,地图上都是灰色格子。而下载了OpenStreetMapViewer源码,在AS中竟然可以显示地图,并且Manifest.xml中对于permission的配置也是一样的。原因(官网上其实也讲了):对于6.0以上的需要进行WRITE_EXTERNAL_STORAGED permission的许可。于是乎测试了一下4.3,api18,同样的代码果然可以显示地图。转回来看了下OpenStreetMapViewer源码,发现其竟然又检查了一边WRITE_EXTERNAL_STORAGED 。于是乎,copy一下checkpermission()函数,加入onCreate函数,代码如下:

final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS=124;

private void checkPermissions(){

Stringmessage="osmdroid permissions:";

Stringstorage="no Storage access to store maptiles.";

if(Build.VERSION.SDK_INT>=23){//api 22应该也是同样的问题

List<String>permissions=newArrayList<>();

if(ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){

Log.d(message,storage);

permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);

String[]params=permissions.toArray(newString[permissions.size()]);

requestPermissions(params,REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);

}//else:Wealreadyhavepermissions,sohandleasnormal

Log.d(message,storage);

}

}

果然,久违的地图出现了。解决这个问题过程中发现,国内的资料实在是少,对于我等小白真是困难重重。



猜你喜欢

转载自blog.csdn.net/u010933982/article/details/51260468
今日推荐