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