Yakındaki Marketler ve Bölgenizi Keşfedin — HMS Site, Location, Map Kit
Merhabalar, bu yazımda HMS Site, Map ve Location Kitlerin birbiri ile nasıl entegre kullanılabileceğine dair bir örnek anlatacağım. Bu uygulama ile son konumumuza göre restaurant, kafe, okul, alışveriş merkezi gibi noktaların haritada işaretlenmesini gerçekleştireceğim.
Öncelikle kullanıcının son konum bilgisini alıp, bu konumun lat ve lng parametreleri ile yakınlardaki yerleri Site Kit’in featurelarını kullanarak elde edeceğiz. Daha sonrasında Map Kit kullanarak bu konumları haritada göstereceğiz.
HMS Entegrasyonu
İlk olarak, Huawei Developer olarak giriş yapmamız ve doğrulama prosesini tamamlamamız gerekiyor. Bununla ilgili detaylı bilgi için aşadağıki linkten faydalanabilirsiniz:
AppGallery Connect’te bir proje oluşturup, proje ayarlarından Site, Map ve Location Kitlerini aktif hale getirmeniz gerekiyor. Bu adım için aşağıdaki linki takip edebilirsiniz:
Kitlerin Android projemize entegrasyonunu tamamlamak için build.gradle dosyası içerisinde dependency olarak eklememiz gerekiyor.
Son olarak AndroidManifest.xml dosyası içerisinde izinleri ekliyoruz ve kodlamak için hazırız.
Location Kit ile Konum Bilgisi
Konum bilgisine erişebilmek için almamız gereken izinlerin kolaylaşması açısından bir permissionHandler class kullanarak kod karmaşasını azaltalım.
Ben bu uygulama için Android Navigation Component yapısını kullandım, bu sebeple bütün işlemleri MainFragment.kt classı içerisinde gerçekleştirdim. Navigation Component yapısı ile alakalı yardımcı olacağını düşündüğüm bir post’u yazı sonunda bulabilirsiniz.
Kullanıcının konumunu almak için, requestPermission() methdounu onViewCreated() içerisinde çağırarak başlıyoruz. Konum bilgisi için 3 tane runtime izine ihtiyacımız var bu sebeple izinleri bir array içerisinde tanımlıyoruz.
onViewCreated() içerisinde LocationService e erişebilmek için bir FusedLocationProviderClient() nesnesi oluşturuyoruz.
Sonrasında getLastLocation() methodunu çağırarak kullanıcının erişilebilen son konum bilgisini elde ediyoruz. Genellikle son konum bilgisi cihazın şu anki konum bilgisidir.
Bu adımlardan sonra artık elimizde kullanıcının latitude ve longitude bilgisi var. İki global değişken tanımlayarak bu bilgileri onlara atıyoruz ki class içerisinde başka methodlara parametre olarak gönderebilelim. Bu parametreleri Site Kit ile birlikte kullanacağız.
Mekan Parametresi ile Site Kit Kullanımı
Bu uygulama senaryosunda kullanıcı Spinner’dan seçtiği bir parametre ile etrafındaki farklı kümelenmiş mekanları görüntüleyebilir. Örnek olarak eğer kullanıcı sadece etrafındaki marketleri görüntülemek istiyorsa Site Kit’e Market ya da SuperMarket parametresini Spinner’dan seçtiği değere göre gönderebiliyor olmalıyız.
Bu yapı için örnek XML dosyası:
Spinner için mekan parametrelerini bir list’e atıyoruz.
İsteğinize ya da uygulama senayonuza göre ekleyebileceğiniz parametreler için aşağıdaki linki inceleyebilirsiniz:
onViewCreated() içerisinde spinner adapter setliyoruz.
Spinner’da seçilen ve değişken olabilen parametre ile harita üzerinde gelen konumları gösteriyor olacağız. Bu sebeple bir getSites() methoduna ihtiyacımız var.
Bu method ile spinenerdan gelen parametre ile site verisine elimizdeki lat ve lng bilgisini HwLocationType kullanarak istek attık. Gelen değerleri haritada işaretledik ve uzaklık bilgisini her bir marker üzerinde gösterdik. İsteğe bağlı olarak NearbySearchRequest() parametresini değiştirebilirsiniz. Örnek olarak ben radius değerini 5000 setledim ve 5km etrafımdaki site verisine erişebildim. Ancak sadece hxPoiType dinamik yapıda olmalı ki değişkenlik gösterebilsin. Bunun için ise,
Öncelikle onViewCreated() methodu içerisinde map initialize ediyoruz ve onMapReadyCallback fragment içerisinde extend ediyoruz.
Haritayı fragment içerisinde extend ettiğimiz zaman, android studio bizden onMapReady methodunu da tanımlamamızı da isteyecektir. Bu methodla aynı zamanda spinner için onItemSelected ekliyoruz.
Özetle, kullanıcının konumunu aldık ve kullanıcıdan haritada görmek istediği mekanların kategorisini seçmesini istedik ve Site Kit’ten geri dönen değerleri haritada gösterdik.
Bir sonraki yazımda görüşmek dileğiyle,