Post Page Advertisement [Top]

Here Maps’da haritaya görsel elemanlar eklemek içim Harita katmanlarını iyi anlamak gerekir.
UserControlle image ya da animasyon ekeleyebilir ve bunu da haritamıza ekleyebiliriz diye düşünüyorum. Oncelikle UserControl’umuzü oluşturalım.

Projeye sağ tıklayıp Add-> New Item deyip UserControl seçeneğini seçebiliriz.Kontrolümüzün adını CurrentPosition olarak verelim. Xaml kısmını aşağıdaki gibi oluşturabiliriz.

<UserControl x:Class="MapApp1.CurrentPosition"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="50" d:DesignWidth="50">
   
    <Grid x:Name="LayoutRoot" >
        <Image Height="50" Width="50" x:Name="POIimg" VerticalAlignment="Center"  Margin="0,0,0,0"/>
    </Grid>
</UserControl>
 Görüldüğü gibi sadece bir Image’den oluşuyor.  .cs tarafında ise  yapacağımız bir kodlama yok.

Harita katmanlarında bahsetmiştik, Önce bu UserControlü MapOverlay’ e ekleyeceğiz daha sonra bunu bir MapLayer’e ekleyip son olarak haritaya ekleme işlemini gerçekleştireceğiz.
Bulunduğumuz pozisyonu haritaya eklemek için DrawMyPosition adında bir metod oluşturalım.

        private void DrawMyPosition(GeoCoordinate coordinate, MapLayer mapLayer)
        {
            MapOverlay overlaypp = new MapOverlay();
            CurrentPosition currentpos = new CurrentPosition();
            currentpos.POIimg.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri(@"images\poi2.png", UriKind.Relative));
            currentpos.Tag = new GeoCoordinate(coordinate.Latitude, coordinate.Longitude);
            overlaypp.GeoCoordinate = new GeoCoordinate(coordinate.Latitude, coordinate.Longitude);
            overlaypp.Content = currentpos;
           // currentpos.Tap += currentpos_Tap;
            overlaypp.PositionOrigin = new Point(0, .3);
            mapLayer.Add(overlaypp);
        }

Burada  // currentpos.Tap += currentpos_Tap; ile poilere Tap yapıldığında başka bir aksiyom da alabiliriz demek J
Görüldüğü gibi aslında katman ekleme işleminin bir kısmı burada mevcut diğer kısmını ise makale-1 de yazığımız KonumUpdate metoduna ekleme yapacağız:

try
            {
                konumum = new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude);
                map1.SetView(konumum, 14, MapAnimationKind.Parabolic);
                map1.Center = konumum;


                map1.ZoomLevel = 14;

                map1.Layers.Clear();
                MapLayer mapLayer = new MapLayer();
                if (konumum != null)
                {
                    DrawMyPosition(konumum, mapLayer);

                }
                map1.Layers.Add(mapLayer);

            }
            catch
            {


Böylece KonumUpdate metodunun son hali yukarıdaki gibi olacaktır.Applicationu çalıştırdığımızda aşağıdaki gibi bir durum oluşacaktır.Bir sonraki makalede bir çok POI ‘yi aynı anda nasıl haritaya çizeriz bunu öğrenip buraya kadar yaptığımız çalışmaların tam kodunu elde edebileceksiniz.


Hiç yorum yok:

Yorum Gönder

Bottom Ad [Post Page]