ARKit SDK ile Lokasyon Bazlı POI Gösterimi

En son güncellendiği tarih: 5 gün önce



Apple ARKit'i yayınlamadan önce native tarafta Augmented Reality entegrasyonu için çeşitli sdk'lar kullanılmaktaydı. Bu mobi'de onlardan biri olan açık kaynak ARKit Sdk ile lokasyon bazlı konum bilgileri göstereceğiz.


ARKit Sdk

Bu sdk MapKit üzerine inşa edilmiştir. Uygulamaya artırılmış gerçeklik özelliği kazandırabilen küçük bir sınıftır. Aktif kamera görüntüsü üzerine görsel eklenmesine olanak sağlar. Kamera görüntüsü üzerinde konum bazlı gösterim senaryolarında kullanılabilir. Sdk kaynak koduna buradan erişebilirsiniz.


Hedef

Uygulama içerisinde kamerayı açıp, kamerayı 360 derece etrafımıza tuttuğumuzda yakınımızda bulunan mağazaları ekranda göstermek. Gösterilen bir mağaza view'ına tıkladığımızda mağazanın detay sayfasını açmak.


Geliştirme

Bu demo'yu objective-c ile geliştireceğiz. Öncelikle ARKit klasörünü projenize eklemelisiniz.


Ardından konum servisini ve kamerayı kullanabilmek için aşağıdaki şekilde info.plist dosyasına

Privacy - Location Always and When In Use Usage Description

Privacy - Location Always Usage Description

Privacy - Location When In Use Usage Description

Privacy - Camera Usage Description

property'lerini eklememiz gerekiyor.


Kamerayı açacağınız controller sınıfına ARKit.h sınıfını import ediyoruz. Ayrıca bu sınıfa ARViewDelegate'i implement ediyoruz.



ARViewDelegate'in 3 adet delegate metodu bulunuyor.

viewForCoordinate metodu engine ayağa kalkarken her ARGeoCoordinate objesi için bir kere çalışıyor. Ekranda ilgili POI için gösterilecek view'ı bu metodda oluşturup döndürmelisiniz.

Aşağıda gördüğünüz gibi ARObjectView oluşturuluyor ve ilgili konum'da gösterilecek mağaza metni ve detay view'larını addSubview ile ekliyoruz.



Diğer metodlar itemTouchedWithIndex ve didChangeLooking metodları. itemTouchedWithIndex: bir geo lokasyon için yukarıda oluşturduğumuz view'a kullanıcının tıklaması sonrası alınacak aksiyonları kodlayabileceğiniz metoddur.

Demo'muzda view'a tıklandığında ekranı kaplayacak detay bir pop'up view açmak istiyoruz. Bunun için engine'in addExtraView metodunu kullanmamız gerekiyor.



Ve son olarak controller'ın viewDidLoad metodu içinde engine'i çalıştırıyoruz.

Engine'i startListening ile çalıştırmadan önce:


- Gözlemlemek istediğimiz her POI için ARGeoCoordinate objesi oluşturup poinst array'ine ekliyoruz. ARGeoCoordinate sınıfında o POI'ye ait özel verileri numText ve dataObject alanlarına geçmemiz gerekiyor. Böylece viewForCoordinate metodunda hangi lokasyon ve mağaza olduğunu anlayıp, o POI'ye göre view'de bilgi gösterebilelim.


- Ayrıca engine üzerine addExtraView ile ek view'lar ekleyebiliyoruz. Burada da sol üst köşeye bir close button yerleştirdik ve engine'ı çalıştırdık.


- Son olarak engine'i kapatmak istediğimizde engine hide metodunu kullanmak gerekiyor.



Sonuç


Artık demoyu deneyebiliriz.

Kodunu paylaştığımız demo'nun sonucu aşağıdaki şekilde.


Github : https://github.com/dogukantizer/location-based-custom-arkit-for-native-ios/tree/master


#locationbasedar #ios #objectivec #locationservices #augmentedreality #arkit #apple #locationbasedaugmentedreality #geolocation


Komünite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_düzenlendi_düzenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
JetBrains Hakkında Detaylı Bilgi Alın

© 2020 by mobiler.dev

mobilerdevLogo.jpg
Yazarlık Başvurusu Hakkında Bilgi Alın, Başvuru Yapın.
Topluluk Yazarlarını Tanıyın