2010-04-05 2 views
3

Fondamentalement, mon problème est que je l'ai adapté un morceau de code trouvé iciBing maps contrôle silverlight problèmes de mise à l'échelle de pushpin

http://social.msdn.microsoft.com/Forums/en-US/vemapcontroldev/thread/62e70670-f306-4bb7-8684-549979af91c1

qui fait exactement ce que je veux faire, c'est l'échelle des images punaise selon le niveau de zoom de la carte. Le seul problème est que j'ai adapté ce code pour fonctionner avec les cartes bing silverlight control (pas la terre virtuelle comme dans l'exemple original) et maintenant les images sont correclty, mais elles sont repositionnées et n'atteignent la position désirée que lorsque mon niveau de zoom est maximum. Une idée pourquoi? Aide sera grandement appréciée :)

Code modifié ci-dessous:

var layer = new MapLayer(); 
map.AddChild(layer); 

//Sydney 
layer.AddChild(new Pin 
{ 
    ImageSource = new BitmapImage(new Uri("pin.png", UriKind.Relative)), 
    MapInstance = map 
}, new Location(-33.86643, 151.2062), PositionMethod.Center); 

devient quelque chose comme

layer.AddChild(new Pin 
{ 
    ImageSource = new BitmapImage(new Uri("pin.png", UriKind.Relative)), 
    MapInstance = map 
}, new Location(-33.92485, 18.43883), PositionOrigin.BottomCenter); 

Je suppose qu'il a quelque chose à voir avec une autre façon dont les cartes bing ses ancres UIelements. Les détails à ce sujet sont également très utiles. Je vous remercie!

Répondre

1

essayer d'ajouter votre propre taille fixe BitmapImage à la carte plutôt que d'utiliser la classe pushpin

+0

Oui, travaillé, désolé pour le post précédent. Il s'agissait simplement de définir une taille FIXE pour la transformation et de définir les propriétés centerx et centery en conséquence. Merci earthware :) –

1

Merci à la réponse de faience j'ai réussi à résoudre mon problème. Il s'agit juste d'ajouter l'image direclty (aucune classe de punaises impliquée), en lui ajoutant une taille fixe et en définissant les propriétés CenterX et CenterY de la mise à l'échelle en conséquence. Exemple de code suivant:

image.Source = new BitmapImage(new Uri("pin.png", UriKind.Relative)); 
image.Stretch = System.Windows.Media.Stretch.None; 
image.Height = 152; 
image.Width = 116; 

layer.AddChild(image, new Location(-33.86643, 151.2062), PositionOrigin.BottomCenter); 
image.RenderTransform = scaleTr; 

scaleTr.CenterX = image.Width/2; //image is alligned bottom center (see above) 
scaleTr.CenterY = image.Height; 
Questions connexes