public SavedPlacesUserControl()
        {
            this.InitializeComponent();
            DraggablePin draggablePin = new DraggablePin(MapView.MapControl, this)
            {
                Name = "OrDesSelector"
            };

            draggablePin.Draggable = true;
            MapControl.SetLocation(draggablePin, MapView.MapControl.Center);
            MapView.MapControl.Children.Add(draggablePin);
            this.Unloaded += SavedPlacesUserControl_Unloaded;
        }
Esempio n. 2
0
        public static async Task <MapElement> Run(MapControl map)
        {
            var imgContainer = new DraggablePin(map, null);

            map.Children.Add(imgContainer);
            await Task.Delay(50);

            //render symbolicon to bmp
            RenderTargetBitmap renderbmp = new RenderTargetBitmap();
            await renderbmp.RenderAsync(imgContainer);

            map.Children.Remove(imgContainer);
            using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream())
            {
                //create a bitmap encoder
                BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);

                //write pixels into this encoder
                var pixels = await renderbmp.GetPixelsAsync();

                var    reader = DataReader.FromBuffer(pixels);
                byte[] bytes  = new byte[reader.UnconsumedBufferLength];
                reader.ReadBytes(bytes);
                encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight,
                                     (uint)renderbmp.PixelWidth, (uint)renderbmp.PixelHeight, 0, 0, bytes);
                await encoder.FlushAsync();

                var mapIconStreamReference = RandomAccessStreamReference.CreateFromStream(stream);

                //create mapIcon
                var mapIcon = new MapIcon();
                mapIcon.Image    = mapIconStreamReference;
                mapIcon.Location = map.Center;
                mapIcon.Title    = "Some label".ToString();
                return(mapIcon);
            }
        }