Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Ömer Emre Aktepe
Ömer Emre Aktepe
htttp://www.emre.me
İletişme geçmek için tıklayın.
3 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: .Net Adres Bing Bulma C# Earth Geocode Geocoding Latitude Longitude Map Rota Rotalama Route Routing Silverlight Virtual Kodlama Ömer Emre Aktepe
 
YAZI HAKKINDA
Türü : Serbest Köşe (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : Kodlama
Yayınlanma Tarihi : 16.11.2009
Okunma Sayısı : 18314
Yorum Sayısı : 16     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 23.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Virtual Earth Silverlight Control - 3 - Rotalama(Routing)
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon

Merhabalar,

 
Bir önceki makalemizde Silverlight Virtal Earth de bir textboxa girilen lokasyonun yerini ve gps pointlerinin nasıl alınacağını ögrenmiştik. Şimdi ise belirtilen lokasyonlar arasında rotalama işlemini anlatacağız.
 
Rotalama işlminde Geocoding gibi MapPoint servisinin RouteServiceClient Class ını kullanacağız.
 
Bir önceki makalemizde bir lokasyon adı girdigimizde bize GocodeResult class ından türemiş bir sonuç döndürüyordu. Bu nesneleri bir listbox içine ekleyerek eklediğimiz noktalar arasında eklenme sırasına gore rota oluşturacagız. Önce Lokasyon Bulma ve ekleme kodlarına değinelim.
 
private void GeocodeAddress(string address)
{
    MapGeocodeService.GeocodeRequest request = new MapGeocodeService.GeocodeRequest();
    request.Culture = MyMap.Culture;
    request.Query = address;
    request.ExecutionOptions = new MapGeocodeService.ExecutionOptions();
    request.ExecutionOptions.SuppressFaults = true;
    request.Credentials = new MapGeocodeService.Credentials();
    request.Credentials.Token = Token;
    request.Options = new MapGeocodeService.GeocodeOptions();
    request.Options.Filters = new ObservableCollection();
    MapGeocodeService.ConfidenceFilter filter = new MapGeocodeService.ConfidenceFilter();
    filter.MinimumConfidence = MapGeocodeService.Confidence.High;
    request.Options.Filters.Add(filter);
    FromOutput.Text = "";
    // Service Çağrılır
    GeocodeClient.GeocodeAsync(request);
}
private void client_GeocodeCompleted(object sender, MapGeocodeService.GeocodeCompletedEventArgs e)
{
        string outString;
        try
        {
            if (e.Result.ResponseSummary.StatusCode != MapGeocodeService.ResponseStatusCode.Success)
            {
                FromOutput.Text = outString = "error geocoding ... status <" + e.Result.ResponseSummary.StatusCode.ToString() + ">";
            }
            else if (0 == e.Result.Results.Count)
            {
                FromOutput.Text = outString = "No result";
            }
            else
            {
                GeocodeResult res = e.Result.Results[0];
                lstLocations.Items.Add(res);
                System.Windows.Shapes.Rectangle rec = new System.Windows.Shapes.Rectangle();
                rec.Fill = new SolidColorBrush(Colors.Red);
                rec.Width = 15;
                rec.Height = 15;
                rec.Opacity = 0.65;
                mapLayer.AddChild(rec,new Microsoft.VirtualEarth.MapControl.Location(res.Locations[0].Latitude,res.Locations[0].Longitude));
            }
        }
        catch (Exception)
        {
            outString = "Exception raised";
        }
    
}
 

 

GeocodeAdress Methodu gelen adres bilgisini Mappoint servisine gönderir ve
client_GeocodeCompleted eventi de kodu incelediğimizde GeocodeResult tipindeki nesneyi lstLocations.Items.Add(res); diyerek listboxa ekler.
 
Rotalama kodlarını inceleyecek olursak :
 
 
void Rotala()
{
    MapRouteService.RouteRequest request = new MapRouteService.RouteRequest();
    request.Culture = MyMap.Culture;
    request.Waypoints = new ObservableCollection();
    for (int a = 0; a < lstLocations.Items.Count;a++)
    {
        request.Waypoints.Add(GeocodeResultToWaypoint(lstLocations.Items[a] as GeocodeResult));
    }
    request.ExecutionOptions = new MapRouteService.ExecutionOptions();
    request.ExecutionOptions.SuppressFaults = true;
    request.Credentials = new MapRouteService.Credentials();
    request.Credentials.Token = Token;
    request.Options = new MapRouteService.RouteOptions();
    request.Options.RoutePathType = MapRouteService.RoutePathType.Points;
    RouteClient.CalculateRouteAsync(request);
}
private MapRouteService.Waypoint GeocodeResultToWaypoint(MapGeocodeService.GeocodeResult result)
{
    MapRouteService.Waypoint waypoint = new MapRouteService.Waypoint();
    waypoint.Description = result.DisplayName;
    waypoint.Location = new MapRouteService.Location();
    waypoint.Location.Latitude = result.Locations[0].Latitude;
    waypoint.Location.Longitude = result.Locations[0].Longitude;
    return waypoint;
}
void routeClient_CalculateRouteCompleted(object sender, VirtualEarth1.MapRouteService.CalculateRouteCompletedEventArgs e)
{
    string outString;
    try
    {
        if (e.Result.ResponseSummary.StatusCode != MapRouteService.ResponseStatusCode.Success)
        {
            outString = "error routing ... status <" + e.Result.ResponseSummary.StatusCode.ToString() + ">";
        }
        else if (0 == e.Result.Result.Legs.Count)
        {
            outString = "Cannot find route";
        }
        else
        {
            MapPolyline routeLine = new MapPolyline();
            routeLine.Locations = new LocationCollection();
            routeLine.Stroke = new SolidColorBrush(Colors.Blue);
            routeLine.Opacity = 0.65;
            routeLine.StrokeThickness = 5.0;
            foreach (MapRouteService.Location p in e.Result.Result.RoutePath.Points)
            {
                routeLine.Locations.Add(new Microsoft.VirtualEarth.MapControl.Location(p.Latitude, p.Longitude));
            }
            routeLayer.AddChild(routeLine);
        }
    }
    catch (Exception)
    {
        outString = "Exception raised routine";
    }
 
}
 
Rotala methodu listboxımıza eklenmiş olan GeocodeResult nesnelerini rotalama servisine gönderir. Bu gönderme esnasında bir dönüşüm yapmak zorundayız. Rotalama servisi rotalanacak olan noktaları WayPoint tipinde nesnelerden anlamaktadır. Elimizdede GeocodeResult tipinde nesneler olduğu için bir dönüşüm yapmak zorunda kalırız bu dönüşüm sadece Gps pointlerin dönüştürülmesinden başka birşey değildir.
 
Rotalama servisinden dönen event(routeClient_CalculateRouteCompleted) bize rotada geçilen bütün noktaların bilgilerini döner. Map kontrolumuzun nesnelerinden olan MapPolyline tipinden oluşturduğumuz nesneye geçtiği noktaları ekleyip bu MapPolyline nesnemizide mapimizin içnde bulunan bir layer a eklediğimizdeki bu projemizde "routeLayer" olarak tanımlanmıştır, haritamızda rotayı mavi bir çizgi ile gösterir.
 
Bu makalemizdede harita üzerinde rotalama işlemlerini gerçekleştirdik. Bir sonraki makalemizde iste harita üzerine nesneler ekleyip bu nesneler üzeridne değişiklikler drag & drop işlemleri üzerinde duracağız.
 
Sağlıcakla kalın...
 
 
Ömer Emre AKTEPE
Yazılım Mühendisi
Makale:
Virtual Earth Silverlight Control - 3 - Rotalama(Routing) Kodlama Ömer Emre Aktepe
  • Yazılan Yorumlar
  • Yorum Yaz
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
ŞUB
28
2015
Uygulamayı indiriceğimiz sayfa bulunamıyor
AĞU
17
2010
Cok guzel bir makele ellerinize saglik yalniz ,su Bing Maps Developer Account'an sifremi bir turlu olusturamadim lutfen eger ki kulanilibiciek bir default acount ve sifre varsa verebilrimisin veya hatala bilginiz varsa paylasabilirmisiniz
Sayfalar : 1 2 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor