在我的应用程序中,我有一个谷歌地图,里面有一个大的位图,用作地面叠加层。这是代码
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
我只是对这种情况感到困惑
为什么会发生,我该怎么办?