Street View

Platform seçin: Android iOS JavaScript

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:

Kotlin örnekleri:

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:

Street View panorama demosu

Özet olarak:

  1. 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.
  2. OnStreetViewPanoramaReadyCallback arayüzünü uygulayın ve StreetViewPanorama nesnesine ulaşmak için onStreetViewPanoramaReady(StreetViewPanorama) geri çağırma yöntemini kullanın.
  3. 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.

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:

Street View panorama animasyonu demosu