2016-03-10 1 views
0

J'enregistre une image instantanée mais mes superpositions ne sont pas enregistrées.xamarin iOS: image de carte avec des superpositions

Est-il même possible de sauvegarder les superpositions avec un instantané de carte? J'ai des routes entre deux points et aussi des images.

-je enregistrer la carte à chaque fois que je déplace la région de la carte pour que je connais les superpositions ont été rendus (comme je peux les voir à l'écran):

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

Répondre

0

Malheureusement vous devez dessiner vous-même sur l'image résultante:

Les images instantanées n'incluent pas les superpositions personnalisées ou les annotations que votre application a ajoutées à l'affichage de la carte. Si vous souhaitez que vos annotations et superpositions apparaissent sur l'image finale, vous devez les dessiner vous-même. Pour positionner correctement ces éléments sur l'image, utilisez la méthode pointForCoordinate: de cette classe pour convertir la valeur de la superposition ou de la coordonnée d'annotation en un emplacement approprié dans l'espace de coordonnées de l'image.

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

NOTE

objets Snapshotter ne pas capture les représentations visuelles de toutes les superpositions ou des annotations que votre application crée. Si vous souhaitez que ces éléments apparaissent dans l'instantané final, vous devez les dessiner sur l'image instantanée résultante. Pour plus d'informations sur le dessin de contenu personnalisé sur les instantanés de carte, consultez la section Référence de la classe MKMapSnapshot.

Ref:

J'ai utilisé cet exemple de blog (ObjC) pour construire mon propre en C#:

Voir la section Drawing Annotations on Map View Snapshot et les sections ci-dessous pour des exemples et convertir en fonction de ce que vous réellement besoin d'inclure sur vos images de carte enregistrées:

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