我正在使用Android.gms.maps类在我的Xamarin Forms应用程序中为安卓手机创建一个自定义渲染器google map。我希望使用GroundOverlayOptions将图像添加到我的地图
GroundOverlayOptions newarkMap = new GroundOverlayOptions()
.InvokeImage(BitmapDescriptorFactory.FromResource(/*My image?*/))
.position(e.Point, 8600f, 6500f);
map.AddGroundOverlay(newarkMap);我需要在我的代码的注释部分中的图像资源ID。如何查找镜像的资源ID?有没有替代的方法呢?
发布于 2017-07-28 13:58:37
通过使用BitmapDescriptorFactory,您可以使用多个选项来获取BitmapDescriptor
FromResourceFromAssetFromPathFromBitmap下面是几个例子:
要使用FromResource,图像必须在您的资源树中,假设在Xamarin子文件夹中,Drawable将为您生成一个Resource.Drawable.XXXXX形式的id描述符,它将是一个整数常量:
var overlayOption = new GroundOverlayOptions()
.InvokeImage(BitmapDescriptorFactory.FromResource(Resource.Drawable.overlayface2))
.Position(e.Point, 5000f, 5000f);

FromAsset从"Assets“子文件夹加载图像:
var overlayOption = new GroundOverlayOptions()
.InvokeImage(BitmapDescriptorFactory.FromAsset("OverlayFace.png"))
.Position(e.Point, 5000f, 5000f);

FromPath从任意路径加载图像,因此您可以加载您下载并存储在应用程序缓存目录中的图像,或者存储在SD卡上的图像,等等。
var overlayOption3 = new GroundOverlayOptions()
.InvokeImage(BitmapDescriptorFactory.FromPath("/mnt/sdcard/Download/OverlayFace.png"))
.Position(e.Point, 5000f, 5000f);注意:人们遇到的最大的问题是没有正确设置图像的大小,它是以千米为单位的。不是像素,不是英里,等等。
注意:也为了速度,保持你的图像大小在2的幂,否则地图库将不得不在每次加载覆盖图时将其转换为2的幂图像(内存和性能影响)
https://stackoverflow.com/questions/45365375
复制相似问题