Bilgi Pencereleri

Platformu seçin: Android iOS JavaScript

Bilgi penceresinde, metin veya resimler haritanın üst kısmındaki pop-up pencerede gösterilir. Bilgi pencereleri her zaman bir işaretçiye sabitlenir. Varsayılan davranışı, işaretçiye dokunulduğunda görüntülenir.

Kod örnekleri

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

Giriş

Bilgi penceresi, bir işaretçiye dokunan 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örüntülenir. Kullanıcı, halihazırda bir bilgi penceresi gösteren işaretçiyi tıklarsa bu bilgi penceresinin kapanıp yeniden açıldığını unutmayın.

Bilgi penceresi, cihaz ekranına doğrultularak, ilişkili işaretçisinin üzerinde ortalanır. Varsayılan bilgi penceresi, başlığı kalın harflerle, (isteğe bağlı) snippet metni ise başlığın altında yer alır.

Bilgi penceresi ekleme

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

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

      

Kotlin


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

      

Bilgi penceresini gösterme/gizleme

Bilgi pencereleri, kullanıcıların dokunma etkinliklerine yanıt vermek üzere tasarlanmıştır. Dilerseniz hedef işaretçide showInfoWindow() yöntemini çağırarak programatik olarak bir bilgi penceresi gösterebilirsiniz. hideInfoWindow() aranarak bilgi penceresi gizlenebilir.

Java


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

      

Kotlin


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

      

Bağımsız kümelenmiş işaretçiler için bilgi pencereleri de oluşturabilirsiniz. Kümelenmiş işaretçiler için bilgi penceresi ekleme ile ilgili kılavuzu okuyun.

Özel bilgi pencereleri

Bilgi pencerelerinin içeriğini ve tasarımını da özelleştirebilirsiniz. Bunun için InfoWindowAdapter arayüzünü somut bir şekilde oluşturmanız ve ardından uygulamanızla GoogleMap.setInfoWindowAdapter() çağırmanız gerekir. Arayüzde kullanabileceğiniz iki yöntem bulunur: getInfoWindow(Marker) ve getInfoContents(Marker). API önce getInfoWindow(Marker) yöntemini çağırır. null geri döndürülürse getInfoContents(Marker) yöntemini çağırır. Bu da null değerini 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. İkinci seçenek (getInfoContents()), pencerenin içeriğini özelleştirmenize olanak tanır ancak varsayılan bilgi penceresi çerçevesini ve arka planını korur.

Aşağıdaki resimlerde, varsayılan bilgi penceresi, özelleştirilmiş içerik barındıran bilgi penceresi ve özelleştirilmiş çerçeve ile arka plana sahip bilgi penceresi gösterilmektedir.

Bilgi Penceresi Karşılaştırması

Bilgi penceresi etkinlikleri

MarkerDemoActivity örneği, bilgi penceresi etkinliklerini kaydetme ve işlemeyle ilgili örnek kodu içerir.

Bilgi penceresindeki etkinlikleri tıklamak için OnInfoWindowClickListener kullanabilirsiniz. Bu dinleyiciyi haritada ayarlamak için GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener) numaralı telefonu arayın. Kullanıcı bir bilgi penceresini tıkladığında onInfoWindowClick(Marker) çağrılır ve bilgi penceresi, varsayılan vurgulama renginde (gri) vurgulanır.

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

      

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()
    }
}

      

Benzer şekilde, OnInfoWindowLongClickListener ile uzun tıklama etkinliklerini GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) çağırarak ayarlayabilirsiniz. Bu işleyici, tıklama işleyiciye benzer şekilde davranır ve bir onInfoWindowClose(Marker) geri çağırması ile uzun tıklama etkinliklerinde bilgilendirilir.

Bilgi penceresi kapatıldığında bildirim almak için OnInfoWindowCloseListener kullanın. Bu API'yi GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) çağırarak ayarlayabilirsiniz. Bir onInfoWindowClose(Marker) geri çağırması alırsınız.

Bilgi penceresini yenilemeyle ilgili not: Kullanıcı, açık bir bilgi penceresi olan bir işaretçiye dokunarak bilgi penceresini yenilediğinde onInfoWindowClose() etkinliği tetiklenir. Ancak açık bir bilgi penceresinde Marker.showInfoWindow() programını programatik olarak çağırırsanız onInfoWindowClose() etkinliği etkinleşmez. İkinci davranış, bilgi penceresinin kapanıp yeniden açılacağına dair varsayıma dayanır.

Bilgi pencerelerinin önceki bölümünde belirtildiği gibi, bilgi penceresi canlı bir görüntüleme değildir. Bunun yerine görünüm, harita üzerinde bir resim olarak oluşturulur. Sonuç olarak, görünümde ayarladığınız dinleyiciler yok sayılır ve görünümün çeşitli bölümlerindeki tıklama etkinlikleri arasında ayrım yapamazsınız. Düğmeler, onay kutuları veya metin girişleri gibi etkileşimli bileşenleri özel bilgi pencerenize yerleştirmemeniz önerilir.