Merhaba arkadaşlar,

Yapacağım bir uygulama için adresi belli olan 2 nokta arasındaki mesafeyi bulmam gerekiyor bunu nasıl yapabilirim? 2 nokta arasındaki kesin kilometreyi almak istiyorum

Google'ın bu şekilde bir desteği varmı? google maps'i kullanarak bu verileri kendi uygulamamız içerisine alabilirmiyiz?

Ben uygulamayı Asp.Net C# ile yazacağım kullanıcı ekrandan 2 adres belirleyecek ve benim arka tarafda bu seçilen adreslere göre mesafeyi bulmam gerekiyor bunu nasıl yapabilirim yardımcı olursanız sevinirim

soruldu: 26 Kas '13, 10:15

gokhanakgol's gravatar image

gokhanakgol
705687777
cevap kabul oranı: 30%


Kütüphane linki : https://github.com/chadly/Geocoding.net Dökümentasyon : https://developers.google.com/maps/documentation/geocoding/

Api ile ilgili makaleler ve örnekler : http://blog-of-darius.blogspot.com/2011/07/geocoding-with-c-and-google-geocoding_28.html

distance'ın hesaplanması şu şekilde oluyor.

function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
  var R = 6371; // Radius of the earth in km
  var dLat = deg2rad(lat2-lat1);  // deg2rad below
  var dLon = deg2rad(lon2-lon1); 
  var a = 
    Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * 
    Math.sin(dLon/2) * Math.sin(dLon/2)
    ; 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
  var d = R * c; // Distance in km
  return d;
}

function deg2rad(deg) {
  return deg * (Math.PI/180)
}

Kaynak

Değerleri api ile alıp ki tavsiyem json ile web servisi ile bu işi yapmanız,sonrasında yukarıdaki örnekteki işlemi c# syntax'ı ile yazmanız.

Kolay gelsin.


II. API

Kütüphane linki : http://greatmaps.codeplex.com/releases/view/20235

Distance için çözümü discussion bölümü içinde bulabildim.

http://greatmaps.codeplex.com/discussions/352508

API'nin dökmentasyonu hazırlanmamış bu büyük bir handikap.

permanent link

cevaplandı: 26 Kas '13, 13:14

Turgay%20Can's gravatar image

Turgay Can
8.3k63798
cevap kabul oranı: 18%

değiştirildi: 26 Kas '13, 13:24

Merhaba,

Cevaplarınız için teşekkürler istediğim veriye ulaştım.

Sadece küçük bir sorum daha olacak.Bir örnek yapıyorum kod tarafında Antalya ve Ankara arasını 386 km olarak hesaplıyor ama ben google maps 'den hesap yaptığım zaman yol tarifinden 520 km çıkıyor Antalya merkez'den Ankara merkez'e

Bu sorunu nasıl çözebilirim? ben tam km hesabını çıkartmak istiyorum.Acaba benim kod tarafından aldığım sonuç kuş uçuşu km 'mi?

(26 Kas '13, 14:44) gokhanakgol gokhanakgol's gravatar image

Muhtemelen iki nokta arasındaki mesafeyi doğru olarak hesaplıyor. Orada olaya path giriyor.

(26 Kas '13, 15:17) Turgay Can Turgay%20Can's gravatar image

Koordinatları giriyorum ama tam olarak google maps de oluşan doğru km hesabını kod vermiyor.Kod tarafında adres bilgisini gönderirken tam olarak nasıl olmalı?

Örnek olarak yazdığım kod ve ulaşmak istediğim sonucun ekran görüntüsü aşağıdadır.Antalya'da ki 2 mahalle arasındaki noktanın uzaklığı 1,3 km çıkıyor ama program tarafından hesaplama yapıldığı zaman 0,6 km çıkıyor

Kod tarafında adres parametrelerini tam olarak nasıl göndermemiz lazım

Yazdığım Kod ;

public void Adres1() { string url = "http://maps.googleapis.com/maps/api/geocode/" + "json?address=109+Şarampol Caddesi,+Antalya,+Türkiye&sensor=false";

        WebResponse response = null;
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            response = request.GetResponse();
            if (response != null)
            {
                string str = null;
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader streamReader = new StreamReader(stream))
                    {
                        str = streamReader.ReadToEnd();
                    }
                }

                GeoResponse geoResponse = JsonConvert.DeserializeObject<GeoResponse>(str);
                if (geoResponse.Status == "OK")
                {
                    int count = geoResponse.Results.Length;
                    for (int i = 0; i < count; i++)
                    {
                        lat1 = Convert.ToDouble(geoResponse.Results[i].Geometry.Location.Lat);
                        lon1 = Convert.ToDouble(geoResponse.Results[i].Geometry.Location.Lng);
                    }
                }
                else
                {
                    Response.Write("JSON Hata : " + geoResponse.Status);
                }
            }
        }
        catch (Exception ex)
        {

        }
        finally
        {
            if (response != null)
            {
                response.Close();
                response = null;
            }
        }
    }

public void Adres2() { string url = "http://maps.googleapis.com/maps/api/geocode/" + "json?address=1262+Ali Çetinkaya Caddesi,+Antalya,+Türkiye&sensor=false";

        WebResponse response = null;
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            response = request.GetResponse();
            if (response != null)
            {
                string str = null;
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader streamReader = new StreamReader(stream))
                    {
                        str = streamReader.ReadToEnd();
                    }
                }

                GeoResponse geoResponse = JsonConvert.DeserializeObject<GeoResponse>(str);
                if (geoResponse.Status == "OK")
                {
                    int count = geoResponse.Results.Length;
                    for (int i = 0; i < count; i++)
                    {
                        lat2 = Convert.ToDouble(geoResponse.Results[i].Geometry.Location.Lat);
                        lon2 = Convert.ToDouble(geoResponse.Results[i].Geometry.Location.Lng);
                    }
                }
                else
                {
                    Response.Write("JSON Hata : " + geoResponse.Status);
                }
            }
        }
        catch (Exception ex)
        {

        }
        finally
        {
            if (response != null)
            {
                response.Close();
                response = null;
            }
        }
    }

private double getDistanceFromLatLonInKm(double lat1, double lon1, double lat2, double lon2) { double R = 6371; // Radius of the earth in km double dLat = deg2rad(lat2 - lat1); // deg2rad below double dLon = deg2rad(lon2 - lon1);

        double a =
          Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
          Math.Cos(deg2rad(lat1)) * Math.Cos(deg2rad(lat2)) *
          Math.Sin(dLon / 2) * Math.Sin(dLon / 2);

        double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
        double d = R * c; // Distance in km
        return d;
    }

    private double deg2rad(double deg)
    {
        return deg * (Math.PI / 180);
    }

Sonucunu almak istediğim harita;

alt text

permanent link

cevaplandı: 26 Kas '13, 15:59

gokhanakgol's gravatar image

gokhanakgol
705687777
cevap kabul oranı: 30%

Merhaba,

İstediğim mesafeyi km cinsinden buluyorum ama yukarıdaki kodlar kuş uçuşu km 'yi veriyor, ben arabanın gideceği yolları kullaranak kaç km olur onu hesaplamaya çalışıyorum bunu nasıl yapabilirim? bununla alakalı parametremi göndermem lazım

(27 Kas '13, 00:18) gokhanakgol gokhanakgol's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×19

Soruldu: 26 Kas '13, 10:15

Görüntüleme: 2,334 kez

Son güncelleme: 27 Kas '13, 00:26

powered by BitNami OSQA