IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Comment récupérer les coordonnées d'un UIElement dans le contrôle silverlight Bing Maps ?


Sujet :

Silverlight

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 65
    Points : 49
    Points
    49
    Par défaut Comment récupérer les coordonnées d'un UIElement dans le contrôle silverlight Bing Maps ?
    Bonjour,

    Voila mon problème. J'utilise le contrôle silverlight Bing Maps de Microsoft et je rajoute une image sur ma carte comme ceci ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MapLayer mapLayer = new MapLayer();
    this.myMap.Children.Add(mapLayer);
     
    Image image = new Image();
    BitmapImage btm = new System.Windows.Media.Imaging.BitmapImage(new Uri("/myAssembly;component/Images/myImage.png", UriKind.Relative));
    image.Source = btm;
    LocationRect rect = new LocationRect(new Location(10, 12), new Location(55, 55));
     
    mapLayer.AddChild(image, rect);
    Cela marche bien. Cependant, je ne sais pas comment récupérer ulterieurement dans mon code les coordonnées de cet élément. J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var loc = MapLayer.GetPosition(image) --> Always returning null !!!
    Mais ca ne marche pas. De plus, il semblerait que l'objet "maplayer" n'a pas de méthodes pour récuperer la localisation des éléments "enfants" qu'il possède.
    J'ai également l'impression que je ne peut pas calculer la position en passant par : "mapLayer.ParentMap.TryViewportPointToLocation" parce que les propriétés "Width" et "Height" de l'image valent toujours 0 (même quand l'image est affichée sur la carte... Je ne comprends pas pourquoi...)

    Comment puis-je faire ?

    Merci d'avance pour toute aide.

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 570
    Points
    3 570
    Par défaut
    Bizarre...Et si tu essayes un truc comme :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    public partial class MainPage
    {
        public MainPage()
        {
            InitializeComponent();
     
            var maplayer = new MapLayer();
            myMap.Children.Add(maplayer);
     
            var image = new Image();
     
            Shape graphic = new Ellipse()
            {
                Fill = new SolidColorBrush(Colors.Red),
                Height = 100,
                Width = 50
            };
     
            graphic.MouseLeftButtonDown += graphic_MouseLeftButtonDown;
     
            maplayer.Children.Add(graphic);
            MapLayer.SetPosition(graphic, new Location(51, 0));
     
        }
     
        void graphic_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            var loc = MapLayer.GetPosition(sender as Shape);
        }
    }

    Et que tu cliques sur la forme, tu as la position dans la méthode graphic_MouseLeftButtonDown ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Effectivement, en passant par la méthode statique "MapLayer.SetPosition" ca fonctionne, je récupère bien une valeur avec le "GetPosition".
    Par contre en passant par la méthode "AddChild" non statique ce n'est pas le cas... Une idée pourquoi ?

    J'avoue que ça me laisse assez perplexe sur le fonctionnement.. Je ne dois pas bien avoir compris quelque chose...

Discussions similaires

  1. Récupérer les coordonnées d'un pixel dans une image
    Par amine52002 dans le forum Langage
    Réponses: 1
    Dernier message: 30/06/2008, 14h52
  2. Réponses: 5
    Dernier message: 20/07/2007, 15h15
  3. Comment récupérer les coordonnées d’un clique sur une image ?
    Par da_sys dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/11/2006, 12h34
  4. Réponses: 2
    Dernier message: 17/09/2006, 23h33
  5. Comment récupérer les coordonnées sur le bureau d'une form ?
    Par fma2112 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 22/02/2006, 23h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo