Güncel
Loading...

HERE Maps' a POI Ekleme

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.


Share on Google Plus

About Sema KUDU

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 yorum :

Yorum Gönder

Türkiye yenilmez,Millet Eğilmez!