Street View

Platform seçin: Android iOS JavaScript

Google Street View, belirlenen yollardan 360 derecelik panoramik görünümler sunar kapsama alanında kullanılabilir.

Bu videoda, kullanıcılarınıza yüksek kaliteli içerikler sunmak için Street View hizmetini haritada bir adresin gerçek dünya deneyimini varış noktaları veya ilgilendikleri yerlerle ilgili anlamlı bir bağlam sunabilir.

Google Haritalar üzerinden sunulan kapsama alanı Android API v2, Android cihazınızda Google Haritalar uygulamasınınkiyle aynıdır. olanak tanır. Street View hakkında daha fazla bilgi edinmek ve desteklenen alanları görmek için etkileşimli harita için Street View hakkında başlıklı makaleye göz atın.

StreetViewPanorama sınıfı, Street'i modeller Panoramayı uygulamanızda görüntüleyin. Kullanıcı arayüzünüzde, bir panorama temsil edilir. StreetViewPanoramaFragment veya StreetViewPanoramaView nesne olarak tanımlar.

Kod örnekleri

GitHub'daki ApiDemos deposu şunları içerir: Street View kullanımını gösteren örnekler.

Kotlin örnekleri:

Java örnekleri:

Android için Haritalar SDK'sında Street View'a genel bakış

Android için Haritalar SDK'sı, Google Haritalar'daki verileri toplamak ve Google Street View'da kullanılan görüntülerin değiştirilmesi. Görüntüler panoramalar.

Her Street View panoraması, tüm ayrıntıları gösteren bir resim veya resim kümesidir. Tek bir konumdan 360 derece görünüm. Resimler eş dikdörtgene uygun 360 derece yatay görünüm içeren (Plate Carrée) projeksiyonu (tam bir sarma) ve 180 derece dikey görünüm (dümdüzden tepeden tırnağa). Ortaya çıkan 360 derecelik panorama, bir yüzeyin üzerinde bir projeksiyonu kürenin iki boyutlu yüzeyine sarmalanmış görüntüyle bir küre.

StreetViewPanorama, otomatik olarak oluşturulan merkezinde kamera bulunan bir küre gibi panorama oluşturun. Kullanıcılarınızın StreetViewPanoramaCamera kameranın yakınlaştırma ve yönünü (yatırma ve yönü) kontrol edin.

Başlayın

Proje kurma

Başlangıç kılavuzundaki talimatları uygulayarak Android projesi için Haritalar SDK'sı.

Panorama eklemeden önce Street View panoramasının kullanılabilirliğini kontrol edin

Google Play Hizmetleri SDK'sı istemci kitaplığında birkaç Projenize aktarabileceğiniz Street View örnekleri bir temel olarak kullanmak için harika bir fırsattır. Aşağıdaki girişe göz atın yönergelerine de uymanız gerekir.

Android Yardımcı Program Kitaplığı için Haritalar SDK'sı açık kaynak kodlu bir kitaplıktır. izin verir. GitHub deposunda bulunan Street View meta veri yardımcı programı. Bu yardımcı program bir konumun Google tarafından Street View. Etiket eklerken hatalardan kaçınabilirsiniz: Street View panoramasını bir Android uygulamasına yüklemek için şunu çağırın: meta veri yardımcı programı ve yalnızca Street View panoraması ekleme yanıt OK ise

API'yi kullanma

Android cihaza Street View panoraması eklemek için aşağıdaki talimatları uygulayın olabilir. Uygulamanıza Street View eklemenin en basit yolu budur. Sonra parçalar, görünümler ve panoramayı özelleştirme hakkında daha fazla bilgi edinin.

Street View panoraması ekleyin

Bunun gibi bir Street View panoraması eklemek için aşağıdaki adımları uygulayın:

Street View panorama demosu

Özet olarak:

  1. Etkinlik'e bir Parça nesnesi ekleyin Street View panoramasını işleyecek. Bunu yapmanın en kolay yolu Activity için düzen dosyasına bir <fragment> öğesi ekleyin.
  2. Şunu uygulayın: OnStreetViewPanoramaReadyCallback arayüzünü ve onStreetViewPanoramaReady(StreetViewPanorama) geri çağırma yöntemini kullanarak StreetViewPanorama nesnesini tanımlayın.
  3. Şu telefondan getStreetViewPanoramaAsync() numaralı telefonu arayın: parçasını kullanır.

Aşağıda her bir adımla ilgili daha fazla ayrıntı verilmiştir.

Parça ekle

Bir <fragment> öğesi tanımlamak için etkinliğin düzen dosyasına bir Parça nesnesi. Bu öğede class özelliğini com.google.android.gms.maps.StreetViewPanoramaFragment (veya SupportStreetViewPanoramaFragment).

Aşağıda, düzen dosyasındaki bir parçanın ö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 ekleyin

Uygulamanızda Street View panoraması ile çalışmak için OnStreetViewPanoramaReadyCallback bir geri çağırma örneğini StreetViewPanoramaFragment veya StreetViewPanoramaView nesnesini tanımlayın. Bu eğiticide StreetViewPanoramaFragment, çünkü Street View eklemenin en basit yolu budur ekleyin. İlk adım, geri çağırma arayüzünü uygulamaktır:

Kotlin



class StreetViewActivity : AppCompatActivity(), OnStreetViewPanoramaReadyCallback {
    // ...
}

      

Java


class StreetViewActivity extends AppCompatActivity implements OnStreetViewPanoramaReadyCallback {
    // ...
}

      

Activity cihazınızdaki onCreate() yöntemini kullanıyorsanız, düzen dosyasını içerik görünümü olarak ayarlayın. Örneğin, düzen dosyası 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);
}

      

Çağrı yaparak parçaya bir herkese açık kullanıcı adı ekleyin FragmentManager.findFragmentById(), <fragment> öğenizin kaynak kimliğini iletin. R.id.streetviewpanorama kaynak kimliğinin otomatik olarak Android projesini anlatacağım.

Ardından getStreetViewPanoramaAsync() kullanın. için geri çağırmayı içerir.

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);

      

Şunu kullanın: onStreetViewPanoramaReady(StreetViewPanorama) şunun boş olmayan bir örneğini almak için geri çağırma yöntemi: StreetViewPanorama, kullanıma hazır.

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

Bir haritadan farklı olarak, XML üzerinden Street View panoraması. Ancak her bir yapılandırmanın bu panoramayı programlı bir şekilde StreetViewPanoramaOptions nesne belirttiğiniz seçenekleri içerir.

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 Parçası sınıfını kullanır ve bir Street View yerleştirmenize olanak tanır bir Android parçasına yerleştiriyoruz. StreetViewPanoramaFragment nesne şu şekilde hareket eder: ve StreetViewPanorama nesnesine erişim sağlar.

StreetViewPanoramaView

StreetViewPanoramaView, Android'in bir alt sınıfıdır View sınıfı, Street View yerleştirmenize olanak tanır Android View'de panorama yapın. Bir View, aşağıdaki dikdörtgen bölgesini temsil eder: Android uygulamaları ve widget'ları için temel bir yapı taşıdır. StreetViewPanoramaFragment gibi, StreetViewPanoramaView de panorama için bir kapsayıcı oluşturur. Bu kapsayıcı, StreetViewPanorama nesne. Bu sınıfın kullanıcıları tüm etkinliği yönlendirmelidir yaşam döngüsü yöntemleri (ör. onCreate(), onDestroy(), onResume() ve StreetViewPanoramaView sınıfındaki ilgili yöntemlere onPause()).

Kullanıcı tarafından kontrol edilen işlevleri özelleştirin

Varsayılan olarak, kullanıcı aşağıdaki işlevler Street View panoraması: kaydırma, yakınlaştırma ve seyahat etme bu özelliği kullanabilirsiniz. Kullanıcı tarafından kontrol edilen hareketleri etkinleştirebilir ve devre dışı bırakabilirsiniz StreetViewPanorama adresindeki yöntemlerle. Programatik Hareket devre dışı bırakıldığında da değiştirilebilir.

Panoramanın konumunu ayarlayın

Street View panoramasının konumunu ayarlamak için şu numarayı arayın: StreetViewPanorama.setPosition(), LatLng geçti. radius ve source parametrelerini isteğe bağlı parametreler olarak da iletebilirsiniz.

Yarıçap, bir alanı genişletmek ya da alanı genişletmek istiyorsanız Street View'ın eşleşen bir panorama arayacağı alanı daraltın. Yarıçap 0 değeri, panoramanın tam olarak belirtilen LatLng öğesine bağlanması gerektiği anlamına gelir. Varsayılan yarıçap 50 metredir. Aynı ekranda birden fazla panorama varsa eşleşen alan varsa API en iyi eşleşmeyi döndürür.

Street View'ı yalnızca aşağıdakilerle kısıtlamak istiyorsanız bir kaynak yararlıdır: Yalnızca açık havadaki panoramaları arar. Varsayılan olarak, Street View Müzeler, kamu binaları, kafeler ve işletmeler gibi yerlerin içinde de panoramalar bulunabilir. 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, bir panoId - StreetViewPanorama.setPosition().

Bitişik panoramaların panorama kimliğini almak için önce şunu kullanın: getLocation() almak için StreetViewPanoramaLocation kullanın. Bu nesne, mevcut panoramayı ve her biri StreetViewPanoramaLink nesneden oluşan bir diziyi mevcut panoramaya bağlı bir panoramanın kimliğini içeren iletiler.

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

Yakınlaştırma düzeyini programlı bir şekilde değiştirmek için StreetViewPanoramaCamera.zoom. Yakınlaştırma seviyesi 1,0 olarak ayarlanırsa resim büyütülür 2 katlayın.

Aşağıdaki snippet, StreetViewPanoramaCamera.Builder() kullanarak bir mevcut kameranın yatırma ve yatağına sahip yeni bir kameranın yanı sıra yakınlaştırmayı yüzde elli oranında artırdık.

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ı) ayarlayın

Street View kamerasının yönünü belirlemek için StreetViewPanoramaCamera üzerinde yatay konuma getirin ve eğin.

dayanmak
Kameranın baktığı yön (derece cinsinden belirtilir) kamera karesinin çevresinde saat yönünde. Gerçek kuzey 0, doğu 90, güney 180, batı 270.
yatırmak
Y ekseni yukarı veya aşağı eğilir. Aralık -90 ile 0 ile 90 arasındadır, -90 ise tam aşağı bakıyor, 0 ufukta ortalanmış ve 90 tanesi yukarıya doğru. Varyans, kameranın ilk varsayılan perdesine göre ölçülür. genellikle (ancak her zaman değil) düz yataydır. Örneğin, Yeşil Ofis’te tepenin yatay olmayan bir varsayılan perdesi olabilir.

Aşağıdaki snippet, StreetViewPanoramaCamera.Builder() kullanarak bir mevcut kameranın yakınlaştırma ve eğme özelliklerini ayarlarken yeni kameranın sola doğru 30 derece duyuyorum.

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ı yatırır.

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ırın

Kamera hareketlerini canlandırmak için şunu arayın: StreetViewPanorama.animateTo(). Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında interpolasyon yapar kamera özellikleriyle değiştirebilirsiniz. Animasyon olmadan doğrudan kameraya atlamak isterseniz 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, yukarıdaki animasyonu çalıştırılmak üzere programladığınızda sonuç gösterilmektedir Handler.postDelayed() kullanılarak her 2.000 milisaniyede bir:

Street View panorama animasyonu demosu