我正在保存图片快照,但我的叠加层没有保存。
是否可以使用地图快照保存叠加层?我有两点之间的路线,也有一些图像。
每次移动地图区域时都会保存地图,以便我知道叠加层已经渲染(我可以在屏幕上看到它们):
private void SetMapCenter()
{
if (Map.Overlays.Count() > 0)
_mapHelper.SetMapSnapshpot(Map);
}
public void SetMapSnapshpot(MKMapView map)
{
using (var snapShotOptions = new MKMapSnapshotOptions())
{
snapShotOptions.Region = map.Region;
snapShotOptions.Scale = UIScreen.MainScreen.Scale;
snapShotOptions.Size = map.Frame.Size;
using (var snapShot = new MKMapSnapshotter(snapShotOptions))
{
snapShot.Start((snapshot, error) =>
{
if (error == null)
{
snapshot.Image.SaveToPhotosAlbum(
(uiimage, imgError) =>
{
if (imgError == null)
{
new UIAlertView("Image Saved", "Map View Image Saved!", null, "OK", null).Show();
}
});
}
});
}
}
}
答案 0 :(得分:0)
不幸的是你必须自己在结果图像上绘制它们:
快照图片不包含应用添加到地图视图的任何自定义叠加层或注释。如果您希望在最终图像上显示注释和叠加层,则必须自己绘制它们。要在图像上正确放置这些项目,请使用此类的pointForCoordinate:方法将叠加或注释坐标值转换为图像坐标空间内的适当位置。
请注意
Snapshotter对象不捕获应用创建的任何叠加层或注释的可视化表示。如果希望这些项目出现在最终快照中,则必须在生成的快照图像上绘制它们。有关在地图快照上绘制自定义内容的详细信息,请参阅MKMapSnapshot类参考。
我使用这个博客文章示例(ObjC)在C#中构建我自己的文件:
有关示例,请参阅Drawing Annotations on Map View Snapshot
部分及其下方部分,并根据您在保存的地图图片中实际需要包含的内容进行转换:
http://nshipster.com/mktileoverlay-mkmapsnapshotter-mkdirections/