Google Street View, kapsama alanı boyunca belirlenmiş yollardan 360 derecelik panoramik görünümler sunar.
Bu videoda, kullanıcılarınıza haritadaki bir adresle ilgili gerçek dünya deneyimi sunmak için Street View hizmetini nasıl kullanabileceğiniz gösterilmektedir. Bu sayede, kullanıcılarınıza varış noktaları veya ilgilendikleri herhangi bir yer hakkında anlamlı bilgiler sağlayabilirsiniz.
Google Maps Android API v2 üzerinden sunulan kapsam, Android cihazınızdaki Google Haritalar uygulamasıyla aynıdır. Street View hakkında daha fazla bilgi edinebilir ve desteklenen bölgeleri etkileşimli bir haritada görebilirsiniz. Bunun için Street View hakkında başlıklı makaleyi inceleyin.
StreetViewPanorama
sınıfı, uygulamanızdaki Street View panoramasını modeller. Kullanıcı arayüzünüzde panoramalar StreetViewPanoramaFragment
veya StreetViewPanoramaView
nesnesiyle gösterilir.
Kod örnekleri
GitHub'daki ApiDemos deposunda, Street View'un kullanımını gösteren örnekler yer alır.
Kotlin örnekleri:
- StreetViewPanoramaBasicDemoActivity: Street View'u kullanmanın temel bilgileri
- StreetViewPanoramaEventsDemoActivity: Etkinlikleri dinleme
- StreetViewPanoramaNavigationDemoActivity: Street View panoramalarını programatik olarak kontrol etme
- StreetViewPanoramaOptionsDemoActivity: Kullanıcı arayüzü ve hareket seçeneklerini değiştirme
- StreetViewPanoramaViewDemoActivity:
StreetViewPanoramaView
kullanma (Fragment yerine) - SplitStreetViewPanoramaAndMapDemoActivity: Street View ve harita gösteren bir etkinlik kullanma
Java örnekleri:
- StreetViewPanoramaBasicDemoActivity: Street View'u kullanmanın temel bilgileri
- StreetViewPanoramaEventsDemoActivity: Etkinlikleri dinleme
- StreetViewPanoramaNavigationDemoActivity: Street View panoramalarını programatik olarak kontrol etme
- StreetViewPanoramaOptionsDemoActivity: Kullanıcı arayüzü ve hareket seçeneklerini değiştirme
- StreetViewPanoramaViewDemoActivity:
StreetViewPanoramaView
kullanma (Fragment yerine) - SplitStreetViewPanoramaAndMapDemoActivity: Bir Street View ve harita gösteren etkinlik oluşturma
Android için Haritalar SDK'sında Street View'a genel bakış
Android için Haritalar SDK'sı, Google Street View'da kullanılan görüntüleri elde etmek ve değiştirmek için bir Street View hizmeti sağlar. Resimler panorama olarak döndürülür.
Her Street View panoraması, tek bir konumdan 360 derecelik tam görünüm sağlayan bir resim veya resim grubudur. Resimler, 360 derece yatay görünüm (tam sarma) ve 180 derece dikey görünüm (tam yukarıdan tam aşağıya) içeren eşit dikdörtgen (Plate Carrée) projeksiyonuna uygundur. Elde edilen 360 derecelik panorama, görüntünün bu kürenin iki boyutlu yüzeyine sarıldığı bir küre üzerinde projeksiyon tanımlar.
StreetViewPanorama
, panoramayı merkezinde bir kamera bulunan küre şeklinde oluşturarak görüntüleyen bir araç sunar. Kameranın yakınlaştırmasını ve yönünü (eğme ve yön) kontrol etmek için StreetViewPanoramaCamera
simgesini kullanabilirsiniz.
Başlayın
Proje kurma
Android için Haritalar SDK'sı projesi oluşturmak üzere başlangıç kılavuzundaki adımları uygulayın.
Panorama eklemeden önce Street View panoraması kullanılabilirliğini kontrol etme
Google Play Hizmetleri SDK'sı istemci kitaplığı, projenize aktarabileceğiniz ve geliştirme için temel olarak kullanabileceğiniz birkaç Street View örneği içerir. Örnekleri içe aktarmayla ilgili yönergeler için giriş bölümüne bakın.
Android için Haritalar SDK'sı Yardımcı Program Kitaplığı, çeşitli uygulamalarda kullanılabilecek açık kaynaklı bir sınıf kitaplığıdır. GitHub deposunda Street View meta veri yardımcı programı bulunur.
Bu yardımcı program, bir konumun Street View tarafından desteklenip desteklenmediğini kontrol eder. Bu meta veri yardımcı programını çağırarak ve yalnızca yanıt OK
ise Street View panoraması ekleyerek Android uygulamasına Street View panoraması eklerken hataları önleyebilirsiniz.
API'yi kullanma
Android parçasına Street View panoraması eklemek için aşağıdaki talimatları uygulayın. Bu, uygulamanıza Street View eklemenin en basit yoludur. Ardından, parçalar, görünümler ve panoramayı özelleştirme hakkında daha fazla bilgi edinin.
Street View panoraması ekleme
Aşağıdaki adımları uygulayarak bu tür bir Street View panoraması ekleyin:

Özet olarak:
- Sokak Görünümü panoramasını işleyecek Activity'ye bir Fragment nesnesi ekleyin. Bunu yapmanın en kolay yolu,
<fragment>
için düzen dosyasına birActivity
öğesi eklemektir. -
OnStreetViewPanoramaReadyCallback
arayüzünü uygulayın veonStreetViewPanoramaReady(StreetViewPanorama)
geri arama yöntemini kullanarakStreetViewPanorama
nesnesinin tutma yerini alın. - Geri aramayı kaydetmek için
getStreetViewPanoramaAsync()
simgesine dokunun.
Her adımla ilgili daha ayrıntılı bilgiyi aşağıda bulabilirsiniz.
Parça ekleme
Bir Fragment nesnesi tanımlamak için etkinliğin düzen dosyasına bir <fragment>
öğesi ekleyin. Bu öğede class
özelliğini com.google.android.gms.maps.StreetViewPanoramaFragment
(veya SupportStreetViewPanoramaFragment
) olarak ayarlayın.
Aşağıda, bir düzen dosyasındaki parça örneği verilmiştir:
<fragment android:name="com.google.android.gms.maps.StreetViewPanoramaFragment" android:id="@+id/streetviewpanorama" android:layout_width="match_parent" android:layout_height="match_parent"/>
Street View kodu ekleme
Uygulamanızdaki Street View panoramasıyla çalışmak için OnStreetViewPanoramaReadyCallback
arayüzünü uygulamanız ve StreetViewPanoramaFragment
veya StreetViewPanoramaView
nesnesinde geri çağırma işlevinin bir örneğini ayarlamanız gerekir. Bu eğitimde, uygulamanıza Street View eklemenin en basit yolu olduğu için StreetViewPanoramaFragment
kullanılmaktadır. İlk adım, geri çağırma arayüzünü uygulamaktır:
Kotlin
class StreetViewActivity : AppCompatActivity(), OnStreetViewPanoramaReadyCallback { // ... }
Java
class StreetViewActivity extends AppCompatActivity implements OnStreetViewPanoramaReadyCallback { // ... }
Activity
'nizin onCreate()
yönteminde, düzen dosyasını içerik görünümü olarak ayarlayın. Örneğin, düzen dosyasının adı main.xml
ise şu kodu kullanın:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_street_view) val streetViewPanoramaFragment = supportFragmentManager .findFragmentById(R.id.street_view_panorama) as SupportStreetViewPanoramaFragment streetViewPanoramaFragment.getStreetViewPanoramaAsync(this) }
Java
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_street_view); SupportStreetViewPanoramaFragment streetViewPanoramaFragment = (SupportStreetViewPanoramaFragment) getSupportFragmentManager() .findFragmentById(R.id.street_view_panorama); streetViewPanoramaFragment.getStreetViewPanoramaAsync(this); }
FragmentManager.findFragmentById()
öğenizin kaynak kimliğini ileterek
<fragment>
öğenizin kaynak kimliğini ileterek parçaya bir tutma yeri alın.
Düzen dosyasını oluşturduğunuzda kaynak kimliğinin R.id.streetviewpanorama
Android projesine otomatik olarak eklendiğini unutmayın.
Ardından, getStreetViewPanoramaAsync()
kullanarak parçada geri aramayı ayarlayın.
Kotlin
val streetViewPanoramaFragment = supportFragmentManager .findFragmentById(R.id.street_view_panorama) as SupportStreetViewPanoramaFragment streetViewPanoramaFragment.getStreetViewPanoramaAsync(this)
Java
SupportStreetViewPanoramaFragment streetViewPanoramaFragment = (SupportStreetViewPanoramaFragment) getSupportFragmentManager() .findFragmentById(R.id.street_view_panorama); streetViewPanoramaFragment.getStreetViewPanoramaAsync(this);
Kullanıma hazır, boş olmayan bir StreetViewPanorama
örneğini almak için onStreetViewPanoramaReady(StreetViewPanorama)
geri çağırma yöntemini kullanın.
Kotlin
override fun onStreetViewPanoramaReady(streetViewPanorama: StreetViewPanorama) { val sanFrancisco = LatLng(37.754130, -122.447129) streetViewPanorama.setPosition(sanFrancisco) }
Java
@Override public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) { LatLng sanFrancisco = new LatLng(37.754130, -122.447129); streetViewPanorama.setPosition(sanFrancisco); }
İlk durumu yapılandırma hakkında daha fazla bilgi
Haritaların aksine, Street View panoramasının başlangıç durumu XML üzerinden yapılandırılamaz. Ancak, belirttiğiniz seçenekleri içeren bir StreetViewPanoramaOptions
nesnesi ileterek panoramayı programatik olarak yapılandırabilirsiniz.
StreetViewPanoramaFragment
kullanıyorsanız parçayı oluşturmak ve özel olarak yapılandırılmış seçeneklerinizi iletmek içinStreetViewPanoramaFragment.newInstance(StreetViewPanoramaOptions options)
statik fabrika yöntemini kullanın.StreetViewPanoramaView
kullanıyorsanızStreetViewPanoramaView(Context, StreetViewPanoramaOptions)
oluşturucusunu kullanın ve özel olarak yapılandırılmış seçeneklerinizi iletin.
Kotlin
val sanFrancisco = LatLng(37.754130, -122.447129) val view = StreetViewPanoramaView( this, StreetViewPanoramaOptions().position(sanFrancisco) )
Java
LatLng sanFrancisco = new LatLng(37.754130, -122.447129); StreetViewPanoramaView view = new StreetViewPanoramaView(this, new StreetViewPanoramaOptions().position(sanFrancisco));
StreetViewPanoramaFragment hakkında daha fazla bilgi
StreetViewPanoramaFragment
, Android Fragment sınıfının bir alt sınıfıdır ve bir Android parçasında Street View panoraması yerleştirmenize olanak tanır.
StreetViewPanoramaFragment
nesneleri, panorama için kapsayıcı görevi görür ve StreetViewPanorama
nesnesine erişim sağlar.
StreetViewPanoramaView
Android StreetViewPanoramaView
sınıfının bir alt sınıfı olan View
, Android View
'e Street View panoraması yerleştirmenize olanak tanır. View
ekranın dikdörtgen şeklindeki bir bölgesini temsil eder ve Android uygulamaları ile widget'ları için temel bir yapı taşıdır. StreetViewPanoramaFragment
gibi, StreetViewPanoramaView
de panorama için kapsayıcı görevi görür ve temel özellikleri StreetViewPanorama
nesnesi aracılığıyla kullanıma sunar. Bu sınıfın kullanıcıları, onCreate()
, onDestroy()
, onResume()
ve onPause())
gibi tüm etkinlik yaşam döngüsü yöntemlerini StreetViewPanoramaView
sınıfındaki ilgili yöntemlere yönlendirmelidir.
Kullanıcı tarafından kontrol edilen özelliği özelleştirme
Kullanıcı, Sokak Görünümü panoramasını görüntülerken varsayılan olarak şu özellikleri kullanabilir: kaydırma, yakınlaştırma ve bitişik panaromalara gitme. Kullanıcı kontrollü hareketleri StreetViewPanorama
üzerindeki yöntemlerle etkinleştirebilir ve devre dışı bırakabilirsiniz. Hareket devre dışı bırakıldığında programatik değişiklikler yapılabilir.
Panoramanın konumunu ayarlama
Street View panoramasının konumunu ayarlamak için StreetViewPanorama.setPosition()
işlevini çağırıp LatLng
değerini iletin.
Ayrıca radius
ve source
değerlerini isteğe bağlı parametreler olarak da iletebilirsiniz.
Yarıçap, Street View'un eşleşen bir panorama arayacağı alanı genişletmek veya daraltmak istediğinizde kullanışlıdır. 0 yarıçap, panoramaların tam olarak belirtilen LatLng
ile bağlantılı olması gerektiği anlamına gelir.
Varsayılan yarıçap 50 metredir. Eşleşen alanda birden fazla panorama varsa API en iyi eşleşmeyi döndürür.
Kaynak, Street View'in yalnızca dış mekan panoramalarını aramasını istiyorsanız kullanışlıdır. Varsayılan olarak, Street View panoramaları müzeler, kamu binaları, kafeler ve işletmeler gibi yerlerin içinde olabilir. Belirtilen konum için dış mekan panoramalarının mevcut olmayabileceğini unutmayın.
Kotlin
val sanFrancisco = LatLng(37.754130, -122.447129) // Set position with LatLng only. streetViewPanorama.setPosition(sanFrancisco) // Set position with LatLng and radius. streetViewPanorama.setPosition(sanFrancisco, 20) // Set position with LatLng and source. streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR) // Set position with LaLng, radius and source. streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR)
Java
LatLng sanFrancisco = new LatLng(37.754130, -122.447129); // Set position with LatLng only. streetViewPanorama.setPosition(sanFrancisco); // Set position with LatLng and radius. streetViewPanorama.setPosition(sanFrancisco, 20); // Set position with LatLng and source. streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR); // Set position with LaLng, radius and source. streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR);
Alternatif olarak, panoId
değerini StreetViewPanorama.setPosition()
parametresine ileterek konumu panorama kimliğine göre ayarlayabilirsiniz.
Bitişik panoramaların panorama kimliğini almak için önce getLocation()
kullanarak StreetViewPanoramaLocation
alın.
Bu nesne, mevcut panoramanın kimliğini ve her biri mevcut panoramaya bağlı bir panoramanın kimliğini içeren bir StreetViewPanoramaLink
nesneleri dizisini içerir.
Kotlin
streetViewPanorama.location.links.firstOrNull()?.let { link: StreetViewPanoramaLink -> streetViewPanorama.setPosition(link.panoId) }
Java
StreetViewPanoramaLocation location = streetViewPanorama.getLocation(); if (location != null && location.links != null) { streetViewPanorama.setPosition(location.links[0].panoId); }
Yakınlaştırma ve uzaklaştırma
StreetViewPanoramaCamera.zoom
değerini ayarlayarak yakınlaştırma düzeyini programatik olarak değiştirebilirsiniz.
Yakınlaştırmayı 1,0 olarak ayarladığınızda görüntü 2 kat büyütülür.
Aşağıdaki snippet, yakınlaştırmayı yüzde elli artırırken mevcut kameranın eğim ve yönünü kullanarak yeni bir kamera oluşturmak için StreetViewPanoramaCamera.Builder()
işlevini kullanır.
Kotlin
val zoomBy = 0.5f val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom + zoomBy) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing) .build()
Java
float zoomBy = 0.5f; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom + zoomBy) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing) .build();
Kamera yönünü (bakış açısı) ayarlama
StreetViewPanoramaCamera
üzerinde yön ve eğim ayarlayarak Street View kamerasının yönünü belirleyebilirsiniz.
- bearing
- Kameranın baktığı yön, kamera yerinin etrafında gerçek kuzeyden saat yönünde derece cinsinden belirtilir. Gerçek kuzey 0, doğu 90, güney 180, batı ise 270'tir.
- eğme
- Y ekseni yukarı veya aşağı eğilir. Aralık -90 ile 0 ve 90 arasındadır. -90 değeri doğrudan aşağıyı, 0 değeri ufuk çizgisini, 90 değeri ise doğrudan yukarıyı gösterir. Varyans, kameranın ilk varsayılan eğiminden itibaren ölçülür. Bu eğim genellikle (ancak her zaman değil) düz yataydır. Örneğin, bir tepede çekilen bir görüntüde muhtemelen yatay olmayan bir varsayılan eğim bulunur.
Aşağıdaki snippet, mevcut kameranın yakınlaştırma ve eğme özelliklerine sahip yeni bir kamera oluşturmak için StreetViewPanoramaCamera.Builder()
işlevini kullanırken yönü 30 derece sola çevirir.
Kotlin
val panBy = 30f val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing - panBy) .build()
Java
float panBy = 30; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing - panBy) .build();
Aşağıdaki snippet, kamerayı 30 derece yukarı eğiyor.
Kotlin
var tilt = streetViewPanorama.panoramaCamera.tilt + 30 tilt = if (tilt > 90) 90f else tilt val previous = streetViewPanorama.panoramaCamera val camera = StreetViewPanoramaCamera.Builder(previous) .tilt(tilt) .build()
Java
float tilt = streetViewPanorama.getPanoramaCamera().tilt + 30; tilt = (tilt > 90) ? 90 : tilt; StreetViewPanoramaCamera previous = streetViewPanorama.getPanoramaCamera(); StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder(previous) .tilt(tilt) .build();
Kamera hareketlerini canlandırma
Kamera hareketlerini canlandırmak için StreetViewPanorama.animateTo()
işlevini çağırın.
Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında enterpolasyon yapar. Animasyon olmadan doğrudan kameraya geçmek istiyorsanız süreyi 0 olarak ayarlayabilirsiniz.
Kotlin
// Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds. val duration: Long = 1000 val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing - 60) .build() streetViewPanorama.animateTo(camera, duration)
Java
// Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds. long duration = 1000; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing - 60) .build(); streetViewPanorama.animateTo(camera, duration);
Aşağıdaki resimde, Handler.postDelayed()
kullanılarak yukarıdaki animasyonun her 2.000 milisaniyede bir çalışacak şekilde planlanması sonucu gösterilmektedir:
