首页 > 解决方案 > 谷歌地图截图黑色

问题描述

我想在我的 xamarin PCL 项目中截取谷歌地图截图。地图显示完美。但是当我尝试截屏时,它显示谷歌地图部分的黑屏。

地图显示在屏幕上,如下所示

但是当我尝试通过代码截图显示如下。 通过代码截图

public interface IScreenshotService
{
   Task<byte[]> Capture();
}


public class ScreenshotService : IScreenshotService
{
    public static Activity Activity { get; set; }

    //public void SetActivity(Activity activity) => _currentActivity = activity 

    public async System.Threading.Tasks.Task<byte[]> Capture()
    {
        if (Activity == null)
        {
            throw new Exception("You have to set ScreenshotManager.Activity in your Android project");
        }

        var view = Activity.Window.DecorView;
        view.DrawingCacheEnabled = true;

        Bitmap bitmap = view.GetDrawingCache(true);

        byte[] bitmapData;

        using (var stream = new MemoryStream())
        {
            bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
            bitmapData = stream.ToArray();
        }

        return bitmapData;
    }
}

调用函数的代码

byte[] screenshotData = await DependencyService.Get<IScreenshotService>().Capture();

你能帮我解决这个问题吗?

标签: c#google-mapsxamarin.forms

解决方案


我认为这可能是地图的图像不得传输到您的服务器,或者在应用程序之外使用 ,您可以使用GoogleMap.snapshot方法拍摄地图的快照

只需实现以下接口:onSnapshotReady

public abstract void onSnapshotReady (Bitmap snapshot)

并调用:快照

public final void snapshot (GoogleMap.SnapshotReadyCallback callback)

你也可以参考例子(在jave中):截图答案


推荐阅读