Bilgi Pencereleri

Platform seçin: Android iOS JavaScript

Bilgi penceresinde, haritanın üzerindeki pop-up pencerede metin veya resimler görüntülenir. Bilgi pencereleri her zaman bir işaretçiye sabitlenir. Varsayılan davranışı, işaretçiye dokunduğunda görüntülenme şeklindedir.

Kod örnekleri

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

Giriş

Bilgi penceresi, kullanıcıya bir işaretçiye dokunduğunda bilgi görüntülemenizi sağlar. Aynı anda yalnızca bir bilgi penceresi görüntülenir. Kullanıcı bir işaretçiyi tıklarsa mevcut bilgi penceresi kapatılır ve yeni bilgi penceresi gösterilir. Kullanıcı, o anda bir bilgi penceresini gösteren işaretçiyi tıklarsa bilgi penceresinin kapanıp yeniden açılacağını unutmayın.

Cihaz ekranına dayalı olarak, ilişkili işaretçisinin üzerinde ortalanmış olarak bir bilgi penceresi çizilir. Varsayılan bilgi penceresi, başlığı kalın harflerle, başlığın altında da (isteğe bağlı) snippet metni içerir.

Bilgi penceresi ekleyin

Bilgi penceresi eklemenin en basit yolu, ilgili işaretçinin title() ve snippet() yöntemlerini ayarlamaktır. Bu özelliklerin ayarlanması, söz konusu işaretçi her tıklandığında 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öster/gizle

Bilgi pencereleri, kullanıcı dokunma etkinliklerine yanıt vermek üzere tasarlanmıştır. İsterseniz, hedef işaretçiden showInfoWindow() numaralı telefonu arayarak bir bilgi penceresini programatik olarak gösterebilirsiniz. Bilgi penceresi, 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();

      

Tek tek kümelenmiş işaretçiler için de bilgi pencereleri oluşturabilirsiniz. Tek tek kümelenmiş işaretçiler için bilgi penceresi ekleme ile ilgili kılavuzu okuyun.

Özel bilgi pencereleri

Ayrıca, bilgi pencerelerinin içeriğini 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 birlikte GoogleMap.setInfoWindowAdapter() çağrısı yapmanız gerekir. Arayüzde, uygulayabileceğiniz iki yöntem bulunur: getInfoWindow(Marker) ve getInfoContents(Marker). API önce getInfoWindow(Marker) yöntemini çağırır. null döndürülürse getInfoContents(Marker) yöntemini çağırır. Bu da null sonucunu 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 (getInfoContents()) ikincisi, yalnızca pencerenin içeriğini özelleştirmenize olanak tanırken varsayılan bilgi penceresi çerçevesini ve arka planını yine de korur.

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

Bilgi Penceresi Karşılaştırması

Bilgi penceresi etkinlikleri

MarkerDemoActivity örneği, bilgi penceresi etkinliklerini kaydetmek ve işlemek için örnek kod içerir.

Bir bilgi penceresindeki etkinlikleri tıklamak için OnInfoWindowClickListener kullanabilirsiniz. Bu işleyiciyi haritaya 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 vurgu rengiyle (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, uzun tıklama etkinliklerini bir OnInfoWindowLongClickListener ile dinleyebilirsiniz. GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) öğesini çağırarak ayarlayabilirsiniz. Bu işleyici, tıklama işleyiciye benzer şekilde davranır ve uzun tıklama etkinliklerinde onInfoWindowClose(Marker) geri çağırmasıyla bilgilendirilir.

Bilgi penceresi kapatıldığında bildirim almak için bir OnInfoWindowCloseListener kullanın. Bu ayarı GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) numaralı telefonu arayarak ayarlayabilirsiniz. onInfoWindowClose(Marker) araması alacaksınız.

Bilgi penceresini yenileme hakkında not: Kullanıcı, hâlihazırda 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() öğesini programatik olarak ç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üntüleme değildir. Bunun yerine, görünüm haritada bir resim olarak oluşturulur. Sonuç olarak, görünümde ayarladığınız işleyiciler göz ardı edilir ve görünümün çeşitli bölümlerindeki tıklama etkinliklerini birbirinden ayırt edemezsiniz. Özel bilgi pencerenize düğmeler, onay kutuları veya metin girişleri gibi etkileşimli bileşenler yerleştirmemeniz önerilir.