xamarin iOS: изображение моментального снимка карты с наложениями

Я сохраняю снимок изображения, но мои наложения не сохраняются.

Можно ли вообще сохранить оверлеи со снимком карты? У меня есть маршруты между двумя точками, а также некоторые изображения.

Я сохраняю карту каждый раз, когда перемещаю область карты, чтобы знать, что наложения были обработаны (как я вижу их на экране):

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

person Bob    schedule 10.03.2016    source источник


Ответы (1)


К сожалению, вам придется рисовать их самостоятельно на полученном изображении:

Снимки не содержат никаких пользовательских наложений или аннотаций, добавленных вашим приложением в представление карты. Если вы хотите, чтобы ваши аннотации и наложения отображались на конечном изображении, вы должны нарисовать их самостоятельно. Чтобы правильно расположить эти элементы на изображении, используйте метод pointForCoordinate: этого класса для преобразования значения координат наложения или аннотации в соответствующее место внутри координатного пространства изображения.

Ссылка: https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKMapSnapshot_class/index.html#//apple_ref/doc/uid/TP40013271

ПРИМЕЧАНИЕ

Объекты Snapshotter не захватывают визуальные представления любых наложений или аннотаций, которые создает ваше приложение. Если вы хотите, чтобы эти элементы появились в финальном снимке, вы должны нарисовать их на полученном снимке. Для получения дополнительной информации о рисовании пользовательского содержимого на снимках карты см. Справочник по классу MKMapSnapshot.

Ссылка: https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKMapSnapshotter_class/index.html

Я использовал этот пример сообщения в блоге (ObjC), чтобы создать свой собственный на С#:

См. раздел Drawing Annotations on Map View Snapshot и разделы под ним для примеров и преобразования на основе того, что вам действительно нужно включить в сохраненные изображения карты:

http://nshipster.com/mktileoverlay-mkmapsnapshotter-mkdirections/

person SushiHangover    schedule 10.03.2016