ArcGIS Mobile WPF Map Cache Kullanimi

Batuhan Düzgün tarafından yayınlanmıştır 21. May 2013 10:03

ArcGIS Mobile SDK’si biz gelistiricilere cachelenmis veriyi kullanmaya imkan tanir. Map Cache nedir ? sorusunun cevabi aslinda tam olarak sudur. Online olarak yayina sunulmus bir harita yayininin mobil cihazin sabit diskine kaydedilerek internet baglantisinin bulunmadigi durumlarda indirilmis olan harita verisini kullanmayi saglar. Map Cache icerisinde spatial (Geometriksel) verilerin bulundugu tablolar sabit diske belli bir formatta kaydedilir. Offline olarak bu tablolar kullanilabilir.

Nicin ihtiyac duyulur ? Cunku mobil cihazlari kullanan kisiler genellikle saha elemanlaridir. Haritacilik islemlerini kimi zaman internetin bulunmadigi durumlarda da kullanmak zorunda kalabilirler. Ornegin: Dagin basinda mobil cihaz ile cizim yapan bir saha elemani mutlaka offline veriye ihtiyac duyacaktir. Bu gibi durumlar goz onune alinarak harita verisinin offline calistirilmasi fikri Kabul gormustur.

Not : ArcGIS Mobile ile tablet uygulamalari gelistirilirken WPF teknolojisi kullanilmistir.

Yeni bir proje acilir …

File >> New Project”  ile yeni bir  “Class Library” projesi acilir. Proje ismi “OfflineMap” olarak verilmistir.  Asagida ornegi verilmistir.

 

 
Ardindan projede yer alan “References” bolumune sag tiklayip “Add Reference” denir. Ardindan  ArcGIS Mobile’in kurulu oldugu dizinde yer alan “bin” klasoru icindeki “ESRI.ArcGIS.Mobile.Client.dll” ve “ESRI.ArcGIS.Mobile.dll”  DLL dosyalari projeye referans olarak eklenir. Boylece,  ArcGIS Mobile SDK’sina ait siniflari kullanma imkanina kavusmus olunur.
 
 
 

Referans ekleme isleminden sonra projede haritanin goruntulenecegi WPF ekrani  eklenir. Bunun icin projeye sag tiklayip “Add  >> New Item” secilir.

Ardindan XAML dosyasi asagidaki sekildeki gibi hazirlanir.
 
<MobileClient:MobileApplicationPage x:Class="OfflineMap.Map"
    xmlns:MobileClient = "clr-namespace:ESRI.ArcGIS.Mobile.Client;assembly=ESRI.ArcGIS.Mobile.Client"
    Height="568" Width="1370">
    <Grid>
          <my:Map Name="map" xmlns:my="clr-namespace:ESRI.ArcGIS.Mobile.WPF;assembly=ESRI.ArcGIS.Mobile" Margin="0,0,209,0" /> 
    </Grid>
</MobileClient:MobileApplicationPage>
 
Gorsel arayuz ile ilgili duzeltmeler yapildiktan sonra, kod tarafinda da bir takim degisiklikler yapmak gerekmektedir. WPF ekrani  “MobileApplicationPage” sinifindan kalitim aldirilir, boylece mobil ekran formatinda kullanilabilir.
 
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ESRI.ArcGIS.Mobile.Client;
using ESRI.ArcGIS.Mobile.MobileServices;
using ESRI.ArcGIS.Mobile.Geometries;
 
namespace OfflineMap
{
    public partial class Map : MobileApplicationPage
    {
        // Harita verisini offline olarak haritaya yuklemeye yarayan mobil cache nesnesi tanimlanir.
        private MobileCache mobileCache;
        public Map()
        {
            InitializeComponent();
            // MobileCache sinifindan nesne yaratilir.
            mobileCache = new MobileCache();
            // Mobil cache'in bulundugu dosya dizini belirtilir.
            mobileCache.StoragePath = @"C:\Users\<user>\AppData\Local\ESRI\ArcGIS Mobile\<Proje Klasör İsmi>\<Cache Klasör İsmi>";
            // Offline harita verisi "Open" metodu ile okumak icin acilir.
            mobileCache.Open();
            // Acilan cache icinde yer alan spatial katmanlar harita uzerine "AddRange" metodu ile eklenir.
            map.MapLayers.AddRange(mobileCache);
            // Haritanin o anki gorunen cerceve boyutu alinir.
            // 0.75 kati kadar cerceve boyutu kucultulur.
            Envelope envelope = map.GetExtent().Resize(0.75);
            // Kucultulmus yeni cerceve boyutu haritanin yeni cercevesi olarak setlenir.
            map.SetExtent(envelope);
            // Ekran uzerine "Geri Don" tusu eklenir.
            this.BackCommands.Add(this.BackCommand);
        }
    }
} 
 
Haritanin goruntulenecegi ekran bittikten sonra sira bu eklentiyi calistiracak olan “Task” sinifini yazmaya geldi. ArcGIS Mobile’da bir eklentinin calisabilmesi icin “Task” sinifindan kalitim almis olan bir sinif gereklidir. Asagida ornegi verilmistir.
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ESRI.ArcGIS.Mobile.Client;
 
namespace OfflineMap
{
    // Task sinifindan katilim alir boylece eklentiyi calistiracak sinif olur.
    public class OfflineMapTask : Task
    {
        private Map map;
        public OfflineMapTask()
        {
            // Yuklenecek olan eklentinin ismini belirtir.
            Name = "Cevrimdisi Harita";
            // Yuklenecek olan eklentinin aciklamasini belirtir.
            Description = "Cevrimdisi Harita";
        }
 
        // "Execute" metodu ozel bir metoddur.
        // ArcGIS Mobile icin yazilmis olan eklentinin ilk calisma noktasi burasidir.
        public override void Execute()
        {
            // Singleton ile tekil bir nesne olusturulur.
            if (map == null) { map = new Map(); }
            // "Transition" metodu ile mobile ekranlar arasi yonlendirme ve gecis islemleri yapilir.
            MobileApplication.Current.Transition(map);
        }
 
        // Aasagidaki metod ile eklentiye ikon verilebilir.
        // Bu metod ilgili eklenti icin ikonu cizdirmeye yarar.
        protected override System.Windows.Media.ImageSource GetImageSource()
        {
            // Ikon olarak kullanilacak resmin dosya yolu verilir.
            // Resmin "Build Action" ozelligi "Resource" olarak Properties panelinden degistirilmelidir.
            Uri uri = new Uri("pack://application:,,,/OfflineMap;Component/Icon.png");
            return (new System.Windows.Media.Imaging.BitmapImage(uri));
        }
    }
} 
 
Task sinifindan sonra eklentiye ait ikon projeye eklenir. Asagidaki resimlerde ornegi verilmistir. 
 
 
 
 
 
 
 
 
Projeye sag tiklayip “Build” denir ve projenin “bin” klasoru altinda  “Debug” veya “Release” klasoru altinda “OfflineMap.dll” olusmus olacaktir.

Bu dosya kopyala yapistir ile “C:\Program Files\ArcGIS\Mobile\10.0\bin” klasoru icine konulur.

 
 
 
 

Son olarak eklentiyi projeye entegre edecek olan AME dosyasi hazirlanir. Dosya icerigi asagidaki sekildeki gibidir.

<Extensions>

                <Tasks>

                               <Task assemblyQualifiedName="OfflineMap.OfflineMapTask, OfflineMap" />

                </Tasks>

</Extensions>

Yukaridaki XML’in hazirlanis formati asagidaki gibidir.

<Extensions>

                <Tasks>

                               <Task assemblyQualifiedName="<Proje Namespace Ismi>. <Task sinifinin Ismi ,   <DLL Dosyasinin Ismi>" />

                </Tasks>

</Extensions>

Hazirlanmis olan AME dosyasi proje klasorune kopyalanir. Ve uygulama calistirilir.

 

 
 
 
 

Umarım yararlı bır yazı olmusturç bır sonrakı makalemde gorusmek dılegıyle ...

Batuhan Duzgun

Bilgisayar Muhendisi 

Currently rated 5.0 by 3 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  August 2019  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster