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österilmeleridir.

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ı, bilgi penceresi gösteren bir işaretçiyi tıklarsa bu bilgi penceresinin kapanıp yeniden açılacağını unutmayın.

Bilgi penceresi, cihazın ekranına göre yönlendirilmiş ve ilişkili işaretçinin üzerinde ortalanmış şekilde çizilir. Varsayılan bilgi penceresinde, başlık kalın yazı tipiyle gösterilir ve başlığın altında (isteğe bağlı) snippet metni 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ı, işaretçi 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ının dokunma etkinliklerine yanıt verecek şekilde tasarlanmıştır. İsterseniz hedef işaretçide showInfoWindow() yöntemini çağırarak bilgi penceresini programatik olarak gösterebilirsiniz. Bilgi penceresi, hideInfoWindow() çağrılarak gizlenebilir.

Kotlin

val melbourneLatLng = LatLng(-37.81319, 144.96298)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLatLng)
        .title("Melbourne"),
)
melbourne?.showInfoWindow()
if (melbourne?.isInfoWindowShown == true) {
    melbourne.hideInfoWindow()
}

      

Java

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

      

Ayrıca, bağımsız kümelenmiş işaretçiler için bilgi pencereleri de oluşturabilirsiniz. Tek tek kümelenmiş işaretçiler için bilgi penceresi ekleme kılavuzunu okuyun.

Özel bilgi pencereleri

Bilgi pencerelerinin içeriğini ve tasarımını da özelleştirebilirsiniz. Bunun için InfoWindowAdapter arayüzünün somut bir uygulamasını oluşturmanız ve ardından uygulamanızla GoogleMap.setInfoWindowAdapter() yöntemini çağırmanız gerekir. Arayüz, uygulamanız için iki yöntem içerir: getInfoWindow(Marker) ve getInfoContents(Marker). API önce getInfoWindow(Marker) yöntemini çağırır ve null döndürülürse getInfoContents(Marker) yöntemini ç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. İkincisi (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 bir bilgi penceresi, özelleştirilmiş içeriklere sahip bir bilgi penceresi ve özelleştirilmiş çerçeve ile arka plana sahip bir bilgi penceresi gösterilmektedir.

Bilgi penceresi karşılaştırması

Bilgi penceresi etkinlikleri

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

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

Kotlin

map.setOnInfoWindowClickListener { marker ->
    Toast.makeText(
        context,
        "Info window clicked",
        Toast.LENGTH_SHORT,
    ).show()
}

      

Java

map.setOnInfoWindowClickListener(
        new GoogleMap.OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {
                Toast.makeText(context, "Info window clicked", Toast.LENGTH_SHORT).show();
            }
        });

      

Benzer şekilde, GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) yöntemini çağırarak ayarlayabileceğiniz bir OnInfoWindowLongClickListener ile uzun tıklama etkinliklerini dinleyebilirsiniz. Bu işleyici, tıklama işleyiciye benzer şekilde davranır ve onInfoWindowClose(Marker) geri çağırma işleviyle uzun tıklama etkinlikleri hakkında bilgilendirilir.

Bilgi penceresi kapandığında bildirim almak için OnInfoWindowCloseListener kullanın. Bu işlevi GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) yöntemini çağırarak ayarlayabilirsiniz. onInfoWindowClose(Marker) geri çağırma bildirimi alırsınız.

Bilgi penceresini yenileme hakkında not: Kullanıcı, açık bir bilgi penceresi olan bir işaretçiye dokunarak bilgi penceresini yenilerse onInfoWindowClose() etkinliği tetiklenir. Ancak açık bir bilgi penceresinde programatik olarak Marker.showInfoWindow() yöntemini çağırırsanız onInfoWindowClose() etkinliği tetiklenmez. İkinci davranış, bilgi penceresinin kapanıp yeniden açılacağının farkında olduğunuz varsayımına dayanır.

Bilgi pencereleriyle ilgili önceki bölümde belirtildiği gibi, bilgi penceresi canlı görünüm 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 yok sayılır ve görünümün çeşitli bölümlerindeki tıklama etkinliklerini ayırt edemezsiniz. Özel bilgi pencerenize düğmeler, onay kutuları veya metin girişleri gibi etkileşimli bileşenler yerleştirmemeniz önerilir.