2016-03-10 7 views
0

Я сохраняю снимок изображения, но мои оверлеи не сохраняются.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(); 
          } 
         }); 
        } 
       }); 
      } 
     } 
    } 

ответ

0

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

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

Ref: https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKMapSnapshot_class/index.html#//apple_ref/doc/uid/TP40013271

ПРИМЕЧАНИЯ

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

Ref:

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

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

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