尺寸为8192x4096的纹理大于最大支持的尺寸4096x4096

时间:2017-09-10 18:27:35

标签: java android google-maps bitmap screen-resolution

在我的应用程序中,我有一个谷歌地图,里面有一个大的位图,用作地面叠加层。这是代码

googleMap = map;
googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);

Bitmap myMap = BitmapFactory.decodeResource(getResources(), R.drawable.map_park2);
GroundOverlayOptions newarkMap = new GroundOverlayOptions() // Загрузка картинки в карту
    .position(new LatLng(0, 0), 27000000f, 12735849f)
    .image(BitmapDescriptorFactory.fromBitmap(myMap));

googleMap.addGroundOverlay(newarkMap);

在测试阶段,我发现了一件非常有趣的事情。在屏幕分辨率为1920x1080(LG G2,Nexus 5,OnePlus One和Sony Xperia Z3)的几款设备上,它会抛出此异常

E/AndroidRuntime: FATAL EXCEPTION: GLThread 708
        Process: org.styleru.hseday2017_2, PID: 29768
        java.lang.IllegalArgumentException: Textures with dimensions8192x4096 are larger than  the maximum supported size 4096x4096
        at com.google.maps.api.android.lib6.gmm6.vector.gl.ah.a(:com.google.android.gms.DynamiteModulesB@11509438:109)
        at com.google.maps.api.android.lib6.gmm6.vector.gl.ah.a(:com.google.android.gms.DynamiteModulesB@11509438:35)
        at com.google.maps.api.android.lib6.impl.bk.a(:com.google.android.gms.DynamiteModulesB@11509438:60)
        at com.google.maps.api.android.lib6.gmm6.api.p.a(:com.google.android.gms.DynamiteModulesB@11509438:76)
        at com.google.maps.api.android.lib6.gmm6.vector.bs.a(:com.google.android.gms.DynamiteModulesB@11509438:626)
        at com.google.maps.api.android.lib6.gmm6.vector.bs.b(:com.google.android.gms.DynamiteModulesB@11509438:270)
        at com.google.maps.api.android.lib6.gmm6.vector.bb.f(:com.google.android.gms.DynamiteModulesB@11509438:257)
        at com.google.maps.api.android.lib6.gmm6.vector.bb.run(:com.google.android.gms.DynamiteModulesB@11509438:11)

尽管如此,还有其他设备配有全高清屏幕我的应用程序正常工作(例如,Google Pixel和Meizu MX6)。
另外,我在HTC one m9 +上有这样的例外,其屏幕分辨率为2560x1440,尽管事实上,我还有其他具有2560x1440显示器的设备(例如,Moto Z)。
地面覆盖图内的图像分辨率为1746x716 我只是对这种情况感到困惑 为什么会发生,我该怎么办?

0 个答案:

没有答案