Google Map屏幕截图黑色

时间:2019-02-25 06:08:51

标签: c# google-maps xamarin.forms

我想在我的xamarin PCL项目中拍摄Google地图屏幕截图。地图显示完美。但是,当我尝试拍摄屏幕快照时,它会显示Google地图部分的黑屏。

Map is displaying on screen like below

但是当我尝试通过代码获取时,屏幕截图如下所示。 Screenshot via code

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();

您能帮我解决问题吗?

2 个答案:

答案 0 :(得分:1)

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

只需实现以下接口:onSnapshotReady

public abstract void onSnapshotReady (Bitmap snapshot)

并致电:snapshot

public final void snapshot (GoogleMap.SnapshotReadyCallback callback)

您还可以参考示例(在jave中):screenshot answer

答案 1 :(得分:0)

根据这篇文章,这可能是因为您的行为违反了Google Maps Platform服务条款:

  

3.2.4a“不得进行刮削。客户不得提取,导出,刮擦或缓存Google Maps Content,以在服务之外使用。”

您可以访问Google Maps Platform Terms of Service来了解有关许可的更多信息。