Google Street View, belirlenmiş yol boyunca uzanan bölgenin 360 derecelik panoramik manzaralarını sunar.
Bu videoda, kullanıcılarınıza haritada bir adresle ilgili gerçek bir deneyim sunmak, Street View hizmetini nasıl kullanabileceğiniz gösterilmiştir. Böylece kullanıcılarınıza hedefleri veya ilgilendikleri herhangi bir yer hakkında anlamlı bir bağlam sağlamış olursunuz.
Google Haritalar Android API'si v2 üzerinden sunulan kapsam, Android cihazınızdaki Google Haritalar uygulamasının kapsamıyla aynıdır. Street View hakkında başlıklı makalede Street View hakkında daha fazla bilgi edinebilir ve desteklenen bir alanı etkileşimli bir haritada görebilirsiniz.
StreetViewPanorama
sınıfı, uygulamanızdaki Street View
Panoramasını modeller. Kullanıcı arayüzünde, panoramalar StreetViewPanoramaFragment
veya StreetViewPanoramaView
nesnesiyle temsil edilir.
Kod örnekleri
GitHub'daki ApiDemos deposu, Street View kullanımını gösteren örnekleri içerir.
Java örnekleri:
- StreetViewPanoramabasicDemoActivity: Street View'u kullanmayla ilgili temel bilgiler
- StreetViewPanoramaEventsDemoActivity: Etkinlikleri dinliyor
- StreetViewPanorama NavigationDemoActivity: Street View panoramalarını programatik olarak kontrol etme
- StreetViewPanoramaOptionsDemoActivity: Kullanıcı arayüzü ve hareket seçeneklerini değiştirme
- StreetViewPanoramaViewDemoActivity: Parça yerine
StreetViewPanoramaView
kullanılır - SplitStreetViewPanoramaAndMapDemoActivity: Street View ve harita gösteren bir etkinlik oluşturma
Kotlin örnekleri:
- StreetViewPanoramabasicDemoActivity: Street View'u kullanmayla ilgili temel bilgiler
- StreetViewPanoramaEventsDemoActivity: Etkinlikleri dinliyor
- StreetViewPanorama NavigationDemoActivity: Street View panoramalarını programatik olarak kontrol etme
- StreetViewPanoramaOptionsDemoActivity: Kullanıcı arayüzü ve hareket seçeneklerini değiştirme
- StreetViewPanoramaViewDemoActivity: Parça yerine
StreetViewPanoramaView
kullanılır - SplitStreetViewPanoramaAndMapDemoActivity: Street View ve harita gösteren bir etkinliği kullanma
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 edinmek ve değiştirmek için bir Street View hizmeti sağlar. Resimler panoramik görüntü olarak döndürülür.
Her Street View panoraması, tek bir konumdan tam 360 derece görünüm sağlayan bir resim veya resim grubudur. Resimler, 360 derece yatay görünüm (tam sarmalama) ve 180 derece dikey görünüm (düzden dik duruma) ve Ortaya çıkan 360 derecelik panoramik görüntü, kürenin iki boyutlu yüzeyine sarmalanmış bir şekilde projeksiyonu tanımlar.
StreetViewPanorama
, panoramik bir küre oluşturan
izleyiciyi, ortasındaki bir kamerayla gösterir. Kameranın yakınlaştırmasını ve yönünü (yatırma ve dayanma) kontrol etmek için StreetViewPanoramaCamera
özelliğini değiştirebilirsiniz.
Başla
Android için Haritalar SDK'sı oluşturmak üzere başlangıç kılavuzunu inceleyin. Ardından, aşağıda açıklandığı şekilde bir Street View panoraması ekleyin.
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şe bakın.
API'yi kullanma
Bir Android parçasına Street View panoraması eklemek için aşağıdaki talimatları uygulayın. Uygulamanıza Street View eklemenin en kolay yolu budur. Daha sonra parçalar, görünümler ve panoramayı özelleştirme hakkında daha fazla bilgi edinin.
Street View panoraması ekleme
Buna benzer bir Street View panoraması eklemek için aşağıdaki adımları uygulayın:

Özet olarak:
- Street View panoramasını işleyecek Etkinlik'e bir Parça nesne ekleyin. Bunu yapmanın en kolay yolu,
Activity
için düzen dosyasına bir<fragment>
öğesi eklemektir. OnStreetViewPanoramaReadyCallback
arayüzünü uygulayın veStreetViewPanorama
nesnesine ulaşmak içinonStreetViewPanoramaReady(StreetViewPanorama)
geri çağırma yöntemini kullanın.- Geri çağırmayı kaydetmek için parçaya
getStreetViewPanoramaAsync()
çağrısı yapın.
Aşağıda her adımla ilgili daha ayrıntılı bilgi verilmiştir.
Parça ekleme
Parça 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.
Düzen dosyasındaki bir parça örneğini aşağıda bulabilirsiniz:
<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 ekleyin
Uygulamanızın Street View panoramasıyla çalışmak için OnStreetViewPanoramaReadyCallback
arayüzünü uygulamanız ve bir StreetViewPanoramaFragment
veya StreetViewPanoramaView
nesnesinde geri çağırma örneği ayarlamanız gerekir. Bu eğitimde, uygulamanıza Street View eklemenin en kolay yolu olan StreetViewPanoramaFragment
kullanılır. İlk adım, geri çağırma arayüzünü uygulamaktır:
Java
class StreetViewActivity extends AppCompatActivity implements OnStreetViewPanoramaReadyCallback { // ... }
Kotlin
class StreetViewActivity : AppCompatActivity(), OnStreetViewPanoramaReadyCallback { // ... }
Activity
onCreate()
yönteminizde düzen dosyasını içerik görünümü olarak ayarlayın. Örneğin, düzen dosyasının adı main.xml
ise aşağıdaki kodu kullanın:
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); }
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) }
Parça için herkese açık kullanıcı adını FragmentManager.findFragmentById()
çağırarak <fragment>
öğenizin kaynak kimliğini iletin.
Düzen dosyasını oluşturduğunuzda R.id.streetviewpanorama
kaynak kimliğinin, Android projesine otomatik olarak eklendiğini unutmayın.
Ardından, parçadaki geri çağırmayı ayarlamak için getStreetViewPanoramaAsync()
öğesini kullanın.
Java
SupportStreetViewPanoramaFragment streetViewPanoramaFragment = (SupportStreetViewPanoramaFragment) getSupportFragmentManager() .findFragmentById(R.id.street_view_panorama); streetViewPanoramaFragment.getStreetViewPanoramaAsync(this);
Kotlin
val streetViewPanoramaFragment = supportFragmentManager .findFragmentById(R.id.street_view_panorama) as SupportStreetViewPanoramaFragment streetViewPanoramaFragment.getStreetViewPanoramaAsync(this)
Kullanıma hazır StreetViewPanorama
boş olmayan bir örneğini almak için onStreetViewPanoramaReady(StreetViewPanorama)
geri çağırma yöntemini kullanın.
Java
@Override public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) { LatLng sanFrancisco = new LatLng(37.754130, -122.447129); streetViewPanorama.setPosition(sanFrancisco); }
Kotlin
override fun onStreetViewPanoramaReady(streetViewPanorama: StreetViewPanorama) { val sanFrancisco = LatLng(37.754130, -122.447129) streetViewPanorama.setPosition(sanFrancisco) }
İlk durumu yapılandırma hakkında daha fazla bilgi
Bir haritadan farklı olarak, Street View panoramasının başlangıç durumunu XML yoluyla yapılandırmak mümkün değildir. Bununla birlikte, belirttiğiniz seçenekleri içeren bir StreetViewPanoramaOptions
nesnesine geçirerek panoramayı programatik olarak yapılandırabilirsiniz.
- Parça oluşturmak ve özel olarak yapılandırılmış seçeneklerinizi iletmek için
StreetViewPanoramaFragment
kullanıyorsanızStreetViewPanoramaFragment.newInstance(StreetViewPanoramaOptions options)
statik fabrika yöntemini kullanın. StreetViewPanoramaView
kullanıyorsanızStreetViewPanoramaView(Context, StreetViewPanoramaOptions)
oluşturucuyu kullanın ve özel olarak yapılandırılmış seçeneklerinizi iletin.
Java
LatLng sanFrancisco = new LatLng(37.754130, -122.447129); StreetViewPanoramaView view = new StreetViewPanoramaView(this, new StreetViewPanoramaOptions().position(sanFrancisco));
Kotlin
val sanFrancisco = LatLng(37.754130, -122.447129) val view = StreetViewPanoramaView( this, StreetViewPanoramaOptions().position(sanFrancisco) )
StreetViewPanoramaFragment hakkında daha fazla bilgi
StreetViewPanoramaFragment
, Android Parça sınıfının bir alt sınıfıdır ve Android parçasına 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.
StreetViewPanorama Görünümü
Android View
sınıfının bir alt sınıfı olan StreetViewPanoramaView
, Android View
bölümüne
Street View panoraması yerleştirmenize olanak tanır. View
, ekranın dikdörtgen dikdörtgenini temsil eder ve Android uygulamaları ile widget'ları için temel bir yapı taşıdır.
StreetViewPanoramaFragment
metriğine benzer şekilde StreetViewPanoramaView
de panoramanın kapsayıcısı görevi görür ve temel işlevi StreetViewPanorama
nesnesi aracılığıyla ortaya çıkarır. Bu sınıfın kullanıcıları, tüm etkinlik yaşam döngüsü yöntemlerini (onCreate()
, onDestroy()
, onResume()
ve onPause())
gibi) StreetViewPanoramaView
sınıfındaki ilgili yöntemlere yönlendirmelidir.
Kullanıcı tarafından kontrol edilen işlevi özelleştirme
Kullanıcı, Street View panoramasını görüntülerken varsayılan olarak şu işlevleri kullanabilir: kaydırma, yakınlaştırma ve bitişik panoramalara gitme. StreetViewPanorama
üzerindeki yöntemler aracılığıyla kullanıcı tarafından kontrol edilen hareketleri etkinleştirebilir ve devre dışı bırakabilirsiniz. Hareket devre dışı bırakıldığında bile programatik değişiklikler yapılabilir.
Panoramanın konumunu ayarla
Street View panoramasının konumunu ayarlamak için
StreetViewPanorama.setPosition()
numaralı telefonu arayın ve LatLng
numaralı telefondan geçin.
Dilerseniz radius
ve source
değerlerini isteğe bağlı parametre olarak geçirebilirsiniz.
Yarıçap, Street View'un eşleşen bir panorama arayacağı alanı genişletmek veya daraltmak istiyorsanız yararlıdır. Yarıçapın 0 olması, panoramanın tam olarak belirtilen LatLng
öğesine bağlanması gerektiği anlamına gelir.
Varsayılan yarıçap 50 metredir. Eşleşme alanında birden fazla panorama varsa API en iyi eşleşmeyi döndürür.
Street View'u yalnızca dış mekandaki panoramaları arayacak şekilde kısıtlamak istiyorsanız kaynak işinize yarayabilir. Varsayılan olarak Street View panoramaları; müzeler, halka açık binalar, kafeler ve işletmeler gibi yerlerin içinde olabilir. Belirtilen konum için açık hava panoraması bulunmayabileceğini unutmayın.
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);
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)
Alternatif olarak, konumu StreetViewPanorama.setPosition()
bölümüne panoId
ileterek konumu panoramik kimliğe göre ayarlayabilirsiniz.
Yandaki panoramaların panorama kimliğini almak için önce getLocation()
ile StreetViewPanoramaLocation
öğesini alın.
Bu nesne, mevcut panoramanın kimliğini ve her biri mevcut panoramaya bağlı bir panoramanın kimliğini içeren StreetViewPanoramaLink
nesne dizisini içerir.
Java
StreetViewPanoramaLocation location = streetViewPanorama.getLocation(); if (location != null && location.links != null) { streetViewPanorama.setPosition(location.links[0].panoId); }
Kotlin
streetViewPanorama.location.links.firstOrNull()?.let { link: StreetViewPanoramaLink -> streetViewPanorama.setPosition(link.panoId) }
Yakınlaştırma ve uzaklaştırma
Yakınlaştırma düzeyini programatik olarak değiştirmek için StreetViewPanoramaCamera.zoom
ayarını kullanabilirsiniz.
Yakınlaştırma değeri 1.0 olarak ayarlandığında resim 2 kat büyür.
Aşağıdaki snippet'te, mevcut kameranın eğimi ve yatağıyla yeni bir kamera oluşturmak için StreetViewPanoramaCamera.Builder()
kullanılıyor ve yakınlaştırma oranı yüzde elli artırılıyor.
Java
float zoomBy = 0.5f; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom + zoomBy) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing) .build();
Kotlin
val zoomBy = 0.5f val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom + zoomBy) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing) .build()
Kameranın yönünü (kamera görünümü) ayarlayın
Street View kamerasının yönünü, StreetViewPanoramaCamera
konumunu eğip ayarlayarak ayarlayabilirsiniz.
- dayanmak
- Kameranın, kuzeydeki kamera konumunun çevresinde saat yönünde. Doğru kuzey 0, doğu 90, güney 180, batı 270'tir.
- eğin
- Y eksenini yukarı veya aşağı yatırın. Aralık -90 ile 90 arasındadır. -90 değeri doğrudan aşağıya, 0'ı ufukta hizalanmış, 90'ı da yukarıya bakmaktadır. Varyant, kameranın başlangıçtaki varsayılan perdesinden ölçülür. Değer, genellikle her zaman değil, yatay yöndedir. Örneğin, bir tepede çekilen görüntülerin, yatay olmayan bir varsayılan perdesi olabilir.
Aşağıdaki snippet'te, konumu sola 30 derece değiştirirken mevcut kamerayı yakınlaştırma ve eğme özelliğiyle yeni bir kamera oluşturmak için StreetViewPanoramaCamera.Builder()
kullanılır.
Java
float panBy = 30; StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.getPanoramaCamera().zoom) .tilt(streetViewPanorama.getPanoramaCamera().tilt) .bearing(streetViewPanorama.getPanoramaCamera().bearing - panBy) .build();
Kotlin
val panBy = 30f val camera = StreetViewPanoramaCamera.Builder() .zoom(streetViewPanorama.panoramaCamera.zoom) .tilt(streetViewPanorama.panoramaCamera.tilt) .bearing(streetViewPanorama.panoramaCamera.bearing - panBy) .build()
Aşağıdaki snippet, kamerayı 30 derece yukarı yatırır.
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();
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()
Kamera hareketlerini canlandırın
Kamera hareketlerini canlandırmak için StreetViewPanorama.animateTo()
numaralı telefonu arayın.
Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında geçiş yapar. Animasyon olmadan doğrudan kameraya atlamak istiyorsanız
süresi 0 olarak ayarlayabilirsiniz.
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);
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)
Aşağıdaki animasyon, Handler.postDelayed()
kullanarak yukarıdaki animasyonu her 2.000 milisaniyede bir çalışacak şekilde planladığınız sonucu gösterir:
