Cep telefonlarının hızlı Wi-Fi ve 3G kablosuz internetleri geliştikçe mobil web uygulamaları mobil uyumlu internet siteleri de artarak gelişir oldu.
Artık çok daha fazla içerik mobil cihazlardan, hâlâ kullanılan Palm cep bilgisayarı dahil avuçiçi bilgisayarlar ve iPhone 4S, Android gibi cep telefonlarından erişilir oldu… Ancak henüz yeterince iyi olmayan bir alan var: Konum Tabanlı İçerik.
Cep telefonları ile internet kullanırken bulunduğumuz konum değişkendir. Ve genellikle mobil cihazlarla arama motorlarında yapılan aramalarda konuma dayalı içeriklerin öne çıkması arzu edilir.
Örneğin cep telefonumuzun mobil internetin aşağıdaki gibi aramalar yaptığımızda bize en yakın ve güncel sonuçları görmek isteriz:
nöbetçi eczane
en yakın Aspava
kuru temizlemeci
X kargo şubesi
en yakın X bankası ATM’si
en yakın X otobüs yazıhanesi
sinemada ne var
… gibi.
Bu aramalarda döndürülen sonuçlar en yakınlardaki en güncel bilgileri sunmalı. En son güncellemelere sahip olan içerik bir başka yazının konusu, en yakın seçenekler içinse hemen yapabileceğimiz bir şeyler var. Bunlar:
- Kullanıcıdan bulunduğu konumu girmesini isteyip, bunu Cookie ile tarayıcısına not edebiliriz.
- IP adresinden bulunduğu semti saptayabiliriz.
- Eğer GPS’i varsa koordinatları otomatik alabiliriz.
Aslında ilk iki seçenekte elde ettiğimiz ülke, şehir, semt bilgilerini de enlem boylam biçiminde ondalıklı koordinatlara dönüştürmeliyiz. Çünkü konuma dayalı seçenekleri kullanıcıya sunarken, yakınlık miktarını bildiğimiz hipotenüs hesabıyla bulup sıralayacağız.
Örneğin Eczane Veritabanımızda şu tür Eczane Adı Enlemi ve Boylamı kayıtları yer alıyor olsun.
A Eczanesi, 39.9167, 32.9167
B Eczanesi, 40.1833, 29.0667
C Eczanesi, 40.15, 26.4
D Eczanesi, 37.9167, 40.2333
E Eczanesi, 36.8167, 30.0167
…
Ve diyelim ki bizim de koordinatimizi 39.65, 27.8833 olarak buldu mobil web sitesi. Ve bu eczaneler arasindan bize en yakın olanı hesaplayıp göstermek istiyor. Eger kayıt sayısı çoksa arama sahasını daraltmak için koordinatların artı eksi belli miktar sınırı dahilindekileri dikkate alabilir, bu işlemi hızlandıracaktır. Ama kayıt sayısı azsa, karmaşayı azaltmak uğruna hepsi üzerinde hesaplama yaparak en yakındakini bulabilir.
Bunun için hipotenüs hesabını kullanacak. Kullanıcının bulunduğu enlem ve boylam ile tek tek eczanelerin bulunduğu enlem ve boylamı bir üçgenin dik kenarlarının uzunluğu olarak ele alıp, bu enlem ve boylam farklarının karesini alıp toplayarak o eczaneyle kullanıcının bulunduğu yer arasındaki mesafenin karesini bulmuş olacak. Yani bildiğimiz a^2 + b^2 = c^2 hesabı.
Mesela PHP’yle hesaplatacak olursak:
$mesafekare = ($kulenlem-$eczenlem[$i])^2+($kulboylam-$eczboylam[$i])^2;
burada $i’ler tek tek eczaneler için dizin değişkeni. $mesafekare’nin ise karekökünü almaya gerek yok; ne de olsa yalnızca göreceli değeri, diğer mesafelerle karşılaştırması önemli.
Yukarıdaki örnekteki 39.65, 27.8833 koordinatı için bu hesabı yaptırtsa idik, en yakın eczanenin B eczanesi olduğunu bulacaktık:
c^2 = (39.65-40.1833)^2 + (27.8833-29.0667)^2
c^2 = 0.284+1.400
c^2 = 1.684 = mesafekare
Diğer seçeneklerdeki mesafekare bu 1.684′den daha büyük olduğu için en yakını B eczanesidir dedik.
Bir posta adresinin koordinatını, bir koordinatın posta adresini bulmak da gene bir başka yazının konusu. Ancak eğer elinizde hazır firma-koordinat veritabanları varsa bunları yukarıdaki yöntemle rahatlıkla değerlendirmeniz olası.
Kullanıcının koordinatını saptamak içinse üç yöntemi kullanabiliriz demiştik, ilki kolay. Üçüncüsünü eğer kullanıcının GPS’i varsa şu örnekteki gibi basit bir javascript koduyla öğrenebiliyorsunuz:
<script type="text/javascript">
this.document.write("test");
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(position)
{
var lat = position.coords.latitude;
var lng = position.coords.longitude;
this.document.konum.lat.value=lat;
this.document.konum.lng.value=lng;
//document.write("Konum: "+lat+" , "+lng);
});
}
this.document.write("Konum: "+lat+" , "+lng);
</script>
...
<form name="konum">
<input type="text" name="lat" value="">
<input type="text" name="lng" value="">
</form>
Bu kodu Safari ve Chrome web tarayıcıları, yani Apple Webkit motoru destekliyor. Dolayısıyla hem iPhone ve iPad’de, hem de Android cep telefonlarında çalışacaktır.
WiFi ile bağlananların, mesela iPod Touch’ların, Palm TX, Palm Lifedrive’ların vb. avuç içi cihaz ve
cep telefonların IP’sinden yer saptamak içinse KlavyeMonitor.com sitesinin şu IP adresinden şehir saptama programı yazısını kullanabilirsiniz. Yazıda Maxmind, HostIP gibi GeoIP coğrafi bilgi tabanlarının Berkeley DB veritabanı ve Python veya PHP ile çok hızlı kullanımı anlatılıyor.
Bu yöntemleri kullanarak mobil aramaların ve mobil içeriklerin çok daha sonuca odaklı olması sağlanabiliyor. Cep telefonlarından internete girişler ve iPhone Siri’deki gibi kısa özlü aramalar giderek yaygınlaşacak. Bu sebeple en son gelişmelerden geri kalmamak önemli.
