Bilgi Pencereleri

Platform seçin: Android iOS JavaScript

Bilgi penceresi, haritanın üzerindeki bir pop-up pencerede metin veya resim gösterir. Bilgi pencereleri her zaman bir işaretçiye sabitlenir. Varsayılan davranışları, işaretçiye dokunulduğunda gösterilmektir.

Kod örnekleri

GitHub'daki ApiDemos deposu, tüm bilgi penceresi özelliklerini gösteren bir örnek içerir:

Giriş

Bilgi penceresi, kullanıcı bir işaretçiye dokunduğunda kullanıcıya bilgi göstermenize olanak tanır. Aynı anda yalnızca bir bilgi penceresi gösterilir. Kullanıcı bir işaretçiyi tıklarsa mevcut bilgi penceresi kapatılır ve yeni bilgi penceresi gösterilir. Kullanıcı, şu anda bilgi penceresi gösteren bir işaretçiyi tıkladığında bilgi penceresinin kapanıp yeniden açıldığını unutmayın.

Cihazın ekranına göre yönlendirilmiş, ilişkili işaretçisinin üzerinde ortalanan bir bilgi penceresi çizilir. Varsayılan bilgi penceresinde, başlığın kalın olarak gösterildiği ve başlığın altında (isteğe bağlı) snippet metninin yer aldığı bir görünüm bulunur.

Bilgi penceresi ekleme

Bilgi penceresi eklemenin en basit yolu, ilgili işaretçinin title() ve snippet() yöntemlerini ayarlamaktır. Bu özellikleri ayarlamak, ilgili işaretçi her tıklandığında bir bilgi penceresinin görünmesine neden olur.

Kotlin

val melbourneLatLng = LatLng(-37.81319, 144.96298)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLatLng)
        .title("Melbourne")
        .snippet("Population: 4,137,400")
)

      

Java

final LatLng melbourneLatLng = new LatLng(-37.81319, 144.96298);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLatLng)
        .title("Melbourne")
        .snippet("Population: 4,137,400"));

      

Bilgi penceresini gösterme/gizleme

Bilgi pencereleri, kullanıcı dokunma etkinliklerine yanıt verecek şekilde tasarlanmıştır. İsterseniz hedef işaretçide showInfoWindow() çağrısı yaparak bilgi penceresini programatik olarak da gösterebilirsiniz. Bilgi pencereleri hideInfoWindow() çağrısı yapılarak gizlenebilir.

Kotlin

val melbourneLatLng = LatLng(-37.81319, 144.96298)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLatLng)
        .title("Melbourne")
)
melbourne?.showInfoWindow()

      

Java

final LatLng melbourneLatLng = new LatLng(-37.81319, 144.96298);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLatLng)
        .title("Melbourne"));
melbourne.showInfoWindow();

      

Ayrıca, tek tek kümelenmiş işaretçiler için bilgi pencereleri de oluşturabilirsiniz. Gruplandırılmış işaretçiler için bilgi penceresi ekleme kılavuzunu okuyun.

Özel bilgi pencereleri

Bilgi pencerelerinin içeriklerini ve tasarımını da özelleştirebilirsiniz. Bunu yapmak için InfoWindowAdapter arayüzünün somut bir uygulamasını oluşturmanız ve ardından uygulamanızla GoogleMap.setInfoWindowAdapter() çağrısını yapmanız gerekir. Arayüzde, uygulamanız için iki yöntem bulunur: getInfoWindow(Marker) ve getInfoContents(Marker). API önce getInfoWindow(Marker) işlevini çağırır ve null döndürülürse getInfoContents(Marker) işlevini çağırır. Bu da null döndürürse varsayılan bilgi penceresi kullanılır.

Bunlardan ilki (getInfoWindow()), bilgi penceresinin tamamı için kullanılacak bir görünüm sağlamanıza olanak tanır. Bunlardan ikincisi (getInfoContents()), pencerenin içeriğini özelleştirmenize ancak varsayılan bilgi penceresi çerçevesini ve arka planını korumanıza olanak tanır.

Aşağıdaki resimlerde varsayılan bilgi penceresi, özelleştirilmiş içeriklere sahip bilgi penceresi ve özelleştirilmiş çerçeveye ve arka plana sahip bilgi penceresi gösterilmektedir.

Bilgi Penceresi Karşılaştırma

Bilgi penceresi etkinlikleri

MarkerDemoActivity örneği, bilgi penceresi etkinliklerini kaydetme ve işleme yönelik örnek kod içerir.

Bilgi penceresindeki tıklama etkinliklerini dinlemek için OnInfoWindowClickListener kullanabilirsiniz. Bu dinleyiciyi haritada ayarlamak için GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener) işlevini çağırın. Kullanıcı bir bilgi penceresini tıkladığında onInfoWindowClick(Marker) çağrılır ve bilgi penceresi varsayılan vurgu renginde (gri) vurgulanır.

Kotlin

internal inner class InfoWindowActivity : AppCompatActivity(),
    OnInfoWindowClickListener,
    OnMapReadyCallback {
    override fun onMapReady(googleMap: GoogleMap) {
        // Add markers to the map and do other map setup.
        // ...
        // Set a listener for info window events.
        googleMap.setOnInfoWindowClickListener(this)
    }

    override fun onInfoWindowClick(marker: Marker) {
        Toast.makeText(
            this, "Info window clicked",
            Toast.LENGTH_SHORT
        ).show()
    }
}

      

Java

class InfoWindowActivity extends AppCompatActivity implements
    GoogleMap.OnInfoWindowClickListener,
    OnMapReadyCallback {

    @Override
    public void onMapReady(GoogleMap googleMap) {
        // Add markers to the map and do other map setup.
        // ...
        // Set a listener for info window events.
        googleMap.setOnInfoWindowClickListener(this);
    }

    @Override
    public void onInfoWindowClick(Marker marker) {
        Toast.makeText(this, "Info window clicked",
            Toast.LENGTH_SHORT).show();
    }
}

      

Benzer şekilde, GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) çağrısı yaparak ayarlayabileceğiniz bir OnInfoWindowLongClickListener ile uzun tıklama etkinliklerini dinleyebilirsiniz. Bu dinleyici, tıklama dinleyiciye benzer şekilde çalışır ve uzun tıklama etkinliklerinde onInfoWindowClose(Marker) geri çağırma işlevi ile bilgilendirilir.

Bilgi penceresi kapandığında bildirim almak için GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) işlevini çağırarak ayarlayabileceğiniz bir OnInfoWindowCloseListener kullanın. onInfoWindowClose(Marker) numaralı telefondan geri aranırsınız.

Bilgi penceresinin yenilenmesi hakkında not: Kullanıcı, açık bir bilgi penceresine sahip bir işaretçiye dokunarak bilgi penceresini yeniler. Bu durumda onInfoWindowClose() etkinliği tetiklenir. Ancak açık bir bilgi penceresinde Marker.showInfoWindow()'ü programatik olarak çağırırsanız onInfoWindowClose() etkinliği tetiklenmez. İkinci davranış, bilgi penceresinin kapanıp yeniden açılacağını bildiğiniz varsayılarak belirlenir.

Bilgi pencereleriyle ilgili önceki bölümde belirtildiği gibi, bilgi penceresi canlı görüntüleme değildir. Bunun yerine, görünüm haritada resim olarak oluşturulur. Sonuç olarak, görünümde ayarladığınız tüm dinleyiciler yoksayılır ve görünümün çeşitli bölümlerindeki tıklama etkinliklerini ayırt edemezsiniz. Özel bilgi pencerenize düğme, onay kutusu veya metin girişi gibi etkileşimli bileşenler yerleştirmemeniz önerilir.