1. Genel Bakış
ARCore, akıllı telefonlarda artırılmış gerçeklik deneyimleri oluşturmak için Google'ın kullandığı çerçevedir. Yeni ARCore Geospatial API, artırılmış gerçekliğe yeni bir boyut kazandırarak konuma özel artırılmış gerçeklik yol işaretlerini gerçek dünyadaki önemli yerlerin etrafına yerleştirmenize olanak tanır.
Ne oluşturacaksınız?
Bu codelab'de ARCore Geospatial API'yi kullanmaya başlayacaksınız. Geospatial API'nin genel AR deneyiminize hangi bilgileri sunabileceğini ve bu verilerin basit bir AR yol bulma deneyimini desteklemek için nasıl kullanılabileceğini öğreneceksiniz.

Neler öğreneceksiniz?
- Geospatial API'yi kullanan bir ARCore projesi oluşturma
- Geospatial API'den coğrafi verileri isteme ve Google Haritalar'ı kullanarak görüntüleme
- Gerçek dünyadaki bir konuma bağlı bir Anchor nasıl yerleştirilir?
İhtiyacınız olanlar
- USB üzerinden hata ayıklama yapılandırılmış, USB kablosuyla geliştirme makinenize bağlı desteklenen bir ARCore Android cihaz.
- Android uygulamaları oluşturmak için Android Studio'nun yüklenmiş ve yapılandırılmış olması gerekir.
- Android geliştirme cihazına yüklenmiş AR için Google Play Hizmetleri 1.31 veya sonraki bir sürümü.
2. Geliştirme ortamınızı kurma
Android Studio'yu kurma
Geospatial API'yi kullanmaya başlamanız için Google Haritalar SDK'sı ile entegre edilmiş bir ARCore projesinin temel özelliklerini içeren bir başlangıç projesi sağladık. Bu sayede, Geospatial API'yi hızlı bir şekilde kullanmaya başlayabilirsiniz.
- Android Studio'yu başlatın ve VCS'den bir proje içe aktarın.
- Zaten açık bir projeniz varsa Dosya > Yeni > Sürüm Kontrolünden Proje... seçeneğini kullanın.
- Welcome to Android Studio (Android Studio'ya Hoş Geldiniz) penceresini görüyorsanız Get from VCS'yi (VCS'den Al) kullanın.

- Git'i seçin ve projeyi içe aktarmak için
https://github.com/google-ar/codelab-geospatial.gitURL'sini kullanın.
Google Cloud projesi oluşturma
Geospatial API, yön değerlerini iyileştirmek için cihazın manyetometre ve kamera sensörü bilgileriyle birlikte Street View görüntülerini kullanır. Bu hizmetten yararlanmak için bir Google Cloud projesi oluşturmanız gerekir.
- Google Cloud Console'da proje oluşturun:
- Google Cloud Platform'da proje oluşturma başlıklı makaleyi inceleyin.

- Uygun bir Proje adı (örneğin, "ARCore Geospatial API projesi") girin ve herhangi bir konum seçin.
- Oluştur'u tıklayın.
- Google Cloud Platform'da proje oluşturma başlıklı makaleyi inceleyin.
- Gerekli API'leri etkinleştirin:
- API anahtarı kimlik bilgileri oluşturma:
- API'ler ve Hizmetler bölümünde Kimlik Bilgileri'ni seçin.
- Üst çubukta Kimlik bilgileri oluştur'u tıklayın, ardından API anahtarı'nı seçin.
- Bir sonraki adımda ihtiyacınız olacağından oluşturulan anahtarı not edin. Gerekirse Kimlik Bilgileri sayfasına dönerek kimlik bilgilerinizi alın.
Bu adımlarla, API anahtarı yetkilendirmesi olan bir Google Cloud projesi oluşturdunuz ve Geospatial API'yi kullanmaya hazırsınız.
API anahtarını Android Studio projesine entegre etme
Google Cloud'daki API anahtarını projenizle ilişkilendirmek için Android Studio'da oluşturduğunuz projeyi açın ve API anahtarlarını değiştirin:
- app > src > AndroidManifest.xml dosyasını açın.
- Aşağıdaki
meta-datagirişlerini bulun:<meta-data android:name="com.google.android.ar.API_KEY" android:value="PLACEHOLDER_API_KEY" /> <meta-data android:name="com.google.android.geo.API_KEY" android:value="PLACEHOLDER_API_KEY" /> PLACEHOLDER_API_KEYkısmını Google Cloud projenizde oluşturduğunuz API anahtarıyla değiştirin.
com.google.android.ar.API_KEY içinde depolanan değer, bu uygulamanın Geospatial API'yi kullanmasına, com.google.android.geo.API_KEY içinde depolanan değer ise bu uygulamanın Google Haritalar SDK'sını kullanmasına izin verir.
Projenizi doğrulama
Projenizin hazır olduğundan emin olun. Android Studio'da uygulamanızı çalıştırın. Ekranın alt kısmında çalışan bir haritanın yanı sıra kamera görünümünü de görmeniz gerekir.

3. Kullanıcının konumunu belirleme
Bu adımda, Geospatial API'yi kullanmaya başlamak için örnek projeye kod ekleyeceksiniz.
ARCore oturumunu Geospatial API'yi kullanacak şekilde yapılandırma
Coğrafi verileri almak için Geospatial API'yi etkinleştirmeniz gerekir. GeospatialMode işlevini HelloGeoActivity.kt içinde değiştirerek oturum yapılandırmanızdaki GeospatialMode değerini ENABLED olarak değiştirin:configureSession
fun configureSession(session: Session) {
session.configure(
session.config.apply {
// Enable Geospatial Mode.
geospatialMode = Config.GeospatialMode.ENABLED
}
)
}
Coğrafi mod ENABLED durumundayken uygulama, coğrafi bilgiler alabilir.
Geospatial API'den veri isteme
HelloGeoRenderer.kt içinde aşağıdaki satırı bulun:
// TODO: Obtain Geospatial information and display it on the map.
Altında, Earth nesnesinin kullanıma hazır olduğunu kontrol edin. Bu durumda trackingState TrackingState.ENABLED.
val earth = session.earth
if (earth?.trackingState == TrackingState.TRACKING) {
// TODO: the Earth object may be used here.
}
TODO simgesinin altında, ARCore'dan coğrafi konum bilgisi isteyin. Şu satırı ekleyin:
val cameraGeospatialPose = earth.cameraGeospatialPose
Bu işlem, aşağıdaki bilgileri içeren bir GeospatialPose oluşturur:
- Enlem ve boylam olarak ifade edilen konum. Konum doğruluğu tahmini de sağlanır.
- Rakım ve rakım doğruluğu tahmini.
- Başlık, cihazın baktığı yönün yaklaşık değeri ve başlığın doğruluğunun tahmini.
Konumlandırma bilgilerini haritada görüntüleme
Kullanıcının bulunduğu yeri gösteren haritadaki işaretçiyi taşımak için cameraGeospatialPose içinde depolanan GeospatialPose öğesini kullanabilirsiniz. Kaldığınız yerden devam edin ve şunları ekleyin:
activity.view.mapView?.updateMapPosition(
latitude = cameraGeospatialPose.latitude,
longitude = cameraGeospatialPose.longitude,
heading = cameraGeospatialPose.heading
)
Bu, Geospatial API'den alınan değerleri kullanarak haritanın konumunu sürekli olarak günceller.
Deneyin
Android Studio'da Play'i (Oynat) tıklayın. ARCore'un izlemeyi başlatmasına yardımcı olmak için cihazınızı yukarı kaldırın ve hareket ettirin. Kısa bir süre sonra haritada yeşil bir işaretçi görünür. Bu işaretçi, çevrenizi görüntülerken döner. Ayrıca doğru yönü göstermelidir: Fiziksel olarak kuzeye baktığınızda ok da kuzeyi gösterir.

4. Earth koordinatlarını kullanarak sabitleme noktası yerleştirme
Geospatial API, gerçek dünyadaki herhangi bir koordinat çiftine ve dönüşe sabitleme noktaları yerleştirebilir. Bu özellik sayesinde kullanıcılarınız belirli konumlar ziyaret edildiğinde sabitlenmiş içerikleri görebilir.
Bu adımda, haritaya dokunarak sabitleme noktası yerleştirme yöntemi ekleyeceksiniz.
Haritaya dokunulduğunda yapılacak işlemi ayarlama
Projede, harita parçası tıklandığında enlem ve boylam ile çağrılan bir onMapClick işlevi bulunur. HelloGeoRenderer.kt içinde onMapClick işlevini bulun.
Earth nesnesinin kullanılabildiğinden emin olun.
Dünya'da sabit noktalar oluşturmadan önce Dünya nesnesinin TrackingState değerinin TRACKING olduğundan emin olun. Bu, Dünya'nın konumunun bilindiği anlamına gelir. Ayrıca EarthState öğesinin ENABLED olduğundan, yani Geospatial API ile ilgili herhangi bir sorunla karşılaşılmadığından emin olun. onMapClick içine şu satırları ekleyin:
val earth = session?.earth ?: return
if (earth.trackingState != TrackingState.TRACKING) {
return
}
Yeni bağlantının konumunu belirleme
Dünya nesnesinin izleme yaptığını onayladıktan sonra varsa önceki earthAnchor öğesini ayırın. Sonraki adımlarda earthAnchor yerine yeni bir bağlantı ekleyin:
earthAnchor?.detach()
Ardından, yeni sabitleme noktasının yüksekliğini belirlemek için cameraGeospatialPose simgesini kullanın. Haritaya dokunarak elde ettiğiniz koordinat çiftini, sabitleme noktasının konumlandırması olarak kullanın.
// Place the earth anchor at the same altitude as that of the camera to make it easier to view.
val altitude = earth.cameraGeospatialPose.altitude - 1
// The rotation quaternion of the anchor in the East-Up-South (EUS) coordinate system.
val qx = 0f
val qy = 0f
val qz = 0f
val qw = 1f
earthAnchor =
earth.createAnchor(latLng.latitude, latLng.longitude, altitude, qx, qy, qz, qw)
createAnchor, belirli bir dönüşle jeodezik koordinatlara sabitlenmiş bir Anchor oluşturur. Bu bağlantı, belirtilen koordinatlarda ve yükseklikte sabit kalmaya çalışır.
Yerleştirilen işaretçiyi haritada gösterme
Son olarak, işaretçinin yerleştirildiği yeri gösteren yeni bir işaretçi taşıyın:
activity.view.mapView?.earthMarker?.apply {
position = latLng
isVisible = true
}
Deneyin
Android Studio'da Play'i (Oynat) tıklayın. Cihazınızı yukarı kaldırın ve ARCore'un takibi başlatmasına yardımcı olmak için hareket ettirin. Kısa bir süre sonra haritada geçerli konumunuzu gösteren yeşil bir işaretçi görünür.
Haritaya dokunulduğunda, gerçek dünyadaki bir konuma sabitlenen bir bağlantı yerleştirmek için Geospatial API kullanılır. Artırılmış gerçeklik görünümünde görebilmek için sabitleme noktasını mevcut konumunuza yakın bir yere yerleştirmeyi deneyin. Ortamınızda gezinirken sabit kalmalıdır.

5. Sonuç
Bu codelab'de, Geospatial API'yi kullanarak gerçek dünyayla bağlantılı basit bir AR deneyimi oluşturmayı öğrendiniz.

İşlediğimiz konular
- Geospatial API'nin etkinleştirildiği bir Google Cloud projesi oluşturma
- ARCore projesinde coğrafi bilgi edinme ve bu bilgiyi haritada görüntüleme
- Coğrafi konumlandırma kullanarak gerçek dünyada konumlandırılmış bir çapa nasıl yerleştirilir?
Ek kaynaklar
Bu codelab'de kullanılan coğrafi kavramlar ve SDK'lar hakkında daha fazla bilgi için aşağıdaki ek kaynaklara bakın: