“Bir zamanlar kızların da iğrenç olduğunu düşünmüştünüz”
by Paco Underhill - Neden Satın Alırız? S. 216

Bir Adresin Enlem ve Boylam Değerlerini Öğrenelim

Tarih: Eylül 13th, 2010 | Yazar: | Kategoriler: Php | Etiketler: , , | 14 Yorum »

Arkadaşlar bildiğiniz üzere Google Maps ile bir adresin enlem ve boylam değerlerini öğrenmemiz oldukça kolay. Ama bazı durumlarda bu işlemi kullanıcının tarayıcısında yapmak yerine sunucumuzda yapmamız gerekebilir. Bende bu yazımda Php ile bu işlemi sunucu tarafında nasıl yapılacağını anlatmaya çalışacağım.

Öncelikle buraya tıklayarak enlem boylam değerlerini alacağımız çıktıya bir göz atalım.

Adres ile ilgili veriyi çekeceğimiz url’i oluşturalım.

$address = "Ankara Keçiören";
$url = 'http://maps.google.com/maps/api/geocode/json?address=' . urlencode(htmlentities($address)) . '&sensor=false';

urlencode fonksiyonu ile özel karakterleri url yapısına göre kodlamış olduk. htmlentities fonksiyonu ise urlencode ile kodlanan Türkçe karakterleri Google Maps’in anlamadığı için kullandım.

$data = json_decode(file_get_contents($url));

Json türündeki veriyi çekiyoruz ve değişkenlere dönüştürüyoruz json_decode fonksiyonu ile.

$enlem = $data->results[0]->geometry->location->lat;
$boylam = $data->results[0]->geometry->location->lng;
echo "Enlem: '$enlem' Boylam: '$boylam'";

Gelen veriden enlem ve boylam değerlerini seçtikten sonra ekrana yazıyoruz ve hepsi bu kadar. Aşağıdan örneğin tamamına bakabilirsiniz.

$address = "Ankara Keçiören";

$url = 'http://maps.google.com/maps/api/geocode/json?address=' . urlencode(htmlentities($address)) . '&sensor=false';

$data = json_decode(file_get_contents($url));

$enlem = $data->results[0]->geometry->location->lat;
$boylam = $data->results[0]->geometry->location->lng;

echo "Enlem: '$enlem' Boylam: '$boylam'";

Kaynaklar:
Google Maps Geocoding API


14 Yorum Var

  1. 1 Birisi said at 18:50 on Aralık 15th, 2010:

    Php konusunda pek bir bilgim yok. Bunu başka türlü nasıl yaparız? Yardımcı olabilirmisiniz?

  2. 2 admin said at 13:27 on Aralık 17th, 2010:

    Merhaba, eğer bu işlemi tarayıcı tarafında yapmak istiyorsanız Google Maps V3 ile kolayca javascript kullanarak gerçekleştirebilirsiniz.
    http://code.google.com/intl/tr-TR/apis/maps/documentation/javascript/basics.html

    Ya da aşağıdaki verdiğim adresi kullanarak herhangi bir dil kullanmadan bir adresi veya konumun enlem ve boylam değerlerini öğrenebilirsiniz.
    http://www.isenegger.ca/blog/geocodetool.html

  3. 3 melih said at 23:37 on Ekim 23rd, 2012:

    s.a. her yerde aramama rağmen bulamadm
    bu fonksiyona kodun içinden text dosyasndan okuarak otomatik marker yerleştirme imkanmz var mı ? bilgilendirirseniz sevinirim

  4. 4 admin said at 09:46 on Ekim 24th, 2012:

    Melih Bey sorunuzu tam anlamadım ancak anladığım kadarı ile cevap veriyorum.

    Enlem ve boylam değerleri olan bir dosya varsa elinizde bunu sunucu tarafında PHP ile fopen veya file_get_contents fonksiyonlarından yararlanarak okuyabilirsiniz. (Bu okuma işlemini tarayıcı tarafında da yapmanız mümkün.)

    Okuduğunuz bu veriyi tarayıcıda Google Maps JavaScript API’sini kullanarak bir harita oluşturup verileri marker olarak ekleyebilirsiniz.

  5. 5 Can Aydoğan » Coğrafi Konuma Göre Zaman Dilimini Tespit Etme said at 21:50 on Kasım 4th, 2012:

    […] ve boylam) adres bilgisi üzerinden öğrenmek için bu yazımı […]

  6. 6 yunus ç. said at 12:13 on Aralık 14th, 2012:

    hocam merhaba yazınız için çok teşekkürler fakat ben bunu enlem ve boylamları action sayfamda kullanacağım veri post ederken. fakat gördüğüm kadarıyla sonuç

    {
    “results” : [],
    “status” : “REQUEST_DENIED”
    }

    bunun nedeni ne olabilir?

  7. 7 admin said at 13:45 on Aralık 14th, 2012:

    Yaptığınız isteği daha detaylı yazarsanız yardımcı olabilirim. Bu şekilde nedenini bulmak biraz zor.

  8. 8 yunus ç. said at 22:29 on Aralık 14th, 2012:

    bir ilan sayfam var ilan eklenirken il ilçe semt seçiyor bende bu değişkenleri bir $adress’e eşitledim. ve myql e insert yaparken boş gönderiyor. amacım bu

  9. 9 yunus ç. said at 16:56 on Aralık 15th, 2012:

    bir gelişme var mı =) bu arada localhostta deniyorum

  10. 10 admin said at 17:47 on Aralık 15th, 2012:

    İstek derken Google Maps’e yaptığınız isteği(Request) kastetmiştim.
    “http://maps.google.com/maps/api/geocode/json?address=adres&sensor=false” gibi.

    Büyük ihtimalle sensor değerini isteğe dahil etmemiş olabilirsiniz. Parametre olarak sensor=false eklerseniz düzelebilir.

  11. 11 yunus ç. said at 13:09 on Aralık 16th, 2012:

    $adres = ” ‘”.$_POST[‘il’].”‘ ‘”.$_POST[‘ilce’].”‘ ‘”.$_POST[‘semt’].”‘ ‘”.$_POST[‘mahalle’].”‘”;
    $url = ‘http://maps.google.com/maps/api/geocode/json?address=’ . urlencode(htmlentities($address)) . ‘&sensor=false’;

  12. 12 admin said at 16:29 on Aralık 16th, 2012:

    URL’in kendisinde bir sorun gözükmüyor ancak dışarıdan post edilen değerler de bir sorun var sanırım. Kullandığınız il, ilçe, semt, mahalle değerlerini de yazarsanız tekrar bakabilirim.

    Bu arada post değerlerini atadığınız $adres değişkeni ile URL’de kullandığınız değişken farklı, görmüşsünüzdür ama yine de yazayım istedim.

  13. 13 yunus ç. said at 16:36 on Aralık 16th, 2012:

    evet onu gördüm zaten adres değişkenini elle yazıyorum değişkene atmadan durum yine aynı. yapacak bir şey yok ben en iyisi tablo değiştireceğim. kullanıcı harita üstünde seçtin bölgeyi

  14. 14 Mustafa said at 20:59 on Aralık 24th, 2016:

    Gerçekten ilk giriş için oldukça faydalı oldu, teşekkür ederim.

    Not eklemek istiyorum.

    Direkt verdiğiniz API linkinden sorgu atabiliyorum ama yine Google Cloud Platform üzerinden bir API Key oluşturmakta fayda olabilir.

    2. olarak da bazı linkler artık yayında değil. Örneğin:
    http://code.google.com/intl/tr-TR/apis/maps/documentation/javascript/basics.html


Yorum Yap