locked
cerchio d'azione mappa RRS feed

  • Domanda

  • sapete se si puo usa il cerhio dazione,( quello viene alcune volte sulla mappa quando sa bene la vostra posizione) per un app??

    grazie mille a tutti in anticipo!!:)

    (vanno bene anche link;))

    lunedì 25 giugno 2012 13:04

Tutte le risposte

  • Ciao,

    non ne ho la certezza ma credo che sia un semplice Pushpin.

    Stefano

    lunedì 25 giugno 2012 15:20
    Postatore
  • eccomi scusa per il ritardo:)

    grazie per la risposta.

    quello che voglio fare i mi sa che è troppo complicato...!:)

    domenica 1 luglio 2012 17:00
  • Intendi dire un cerchio che visualizza la precisione del gps (il valore presente nella proprietà HorizontalAccuracy)?
    mercoledì 3 ottobre 2012 15:08
  • Scusa, tu hai la precisione del segnale.

    Fai un pushpin a cui associ un'immagine (un cerchio semitrasparente o con solo il bordo), la cui grandezza dipende dalla precisione del segnale (e anche dal livello di zoom).

     var pin1 = new Pushpin();
                                pin1.Location = new GeoCoordinate(latitudine, longitudine);
     
                                //Immagine
                                imgUri = new Uri("tuo uri", UriKind.RelativeOrAbsolute);
                                imgSourceR = new BitmapImage(imgUri);
                                imgBrush = new ImageBrush() { ImageSource = imgSourceR };
                                pin1.Content = new Rectangle()
                                {
                                    Fill = imgBrush,
                                    Height = 44,
                                    Width = 44
                                };

    Al posto di 44,44 gli metti un valore che calcoli con una funzione che tiene conto del livello di zoom e della precisione del segnale :)


    Ronca

    mercoledì 3 ottobre 2012 15:29
  • ecco quello che vorrei fare è ancora più complicato:)

    allora, il cercio dovrebbe cambiare a seconda di un dato; un piccolo esempio: il dato è 2km, il cerchio si deve ingrandire per visualizzare l'area di 2km intorno alla mia posizione.

    non so se mi sono spiegato bene, è un po complicata come cosa!:)

    mercoledì 3 ottobre 2012 19:39
  • Non so se c'è un modo più semplice, ma io ho risolto così:

    1) Misuro la larghezza in metri della mappa

    2) calcolo a quanti metri corrisponde 1 pixel

    3) divido il diametro del cerchio per il valore calcolato

    4) metto questo valore nei campi width e heigth del cerchio

    GeoCoordinate PosizioneVertice1 = new GeoCoordinate(Mappa.BoundingRectangle.North, Mappa.BoundingRectangle.East);
    GeoCoordinate PosizioneVertice2 = new GeoCoordinate(Mappa.BoundingRectangle.North, Mappa.BoundingRectangle.West);
    double LarghezzaMappa = PosizioneVertice1.GetDistanceTo(PosizioneVertice2);
    double MetriPerPixel = LarghezzaMappa / Mappa.Width;
    double PixelPrexisione = (Raggio * 2) / MetriPerPixel;
    
     Ellipse PrecisionePosizione = new Ellipse();
     PrecisionePosizione.Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
     PrecisionePosizione.Fill = new SolidColorBrush(Color.FromArgb(100, 255, 0, 0));
     PrecisionePosizione.StrokeThickness = 4;
     PrecisionePosizione.Width = PixelPrexisione;
     PrecisionePosizione.Height = PixelPrexisione;
     MyPosizione.AddChild(PrecisionePosizione, Posizione, PositionOrigin.Center);

    N.B.: Ovviamente questo cerchio va aggiornato ogni volta che si cambia lo zoom della mappa.




    • Modificato MaurizioG giovedì 4 ottobre 2012 08:35
    giovedì 4 ottobre 2012 08:33
  • grazie, piano piano c'è la sto facendo:)

    però non ho capito una cosa, il raggio del cerchio come faccio a saperlo se cambia a seconda della variabile ( i 2 km di prima)?

    grazie in anticipo:)

    giovedì 4 ottobre 2012 20:53
  • Ogni volta che il raggio cambia, devi aggiornare le dimensioni del cerchio.

    Per fare questo semplicemente azzeri il layer (MyPosizione.Children.Clear();) e richiami la funzione precedente


    venerdì 5 ottobre 2012 07:54