Bilgi Pencereleri

Platform seçin: Android iOS JavaScript

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

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 ona bilgi görüntülemenizi sağlar. Aynı anda yalnızca tek 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ı, bir bilgi penceresi gösteren işaretçiyi tıklarsa bu bilgi penceresinin kapanıp yeniden açılacağını unutmayın.

Cihaz ekranına doğru, ilişkili işaretçisinin üzerine ortalanmış bir bilgi penceresi çizilir. Varsayılan bilgi penceresi, başlığın altında kalın metinle birlikte (isteğe bağlı) snippet metnini içerir.

Bilgi penceresi ekle

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 bir bilgi penceresinin görüntülenmesine 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() yöntemini çağırarak programatik olarak bir bilgi penceresi 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();

      

Bağımsız küme işaretçileri için de bilgi pencereleri de oluşturabilirsiniz. Ayrı kümelenmiş işaretçiler için bilgi penceresi ekleme kılavuzunu okuyun.

Özel bilgi pencereleri

Ayrıca, bilgi pencerelerinin içeriğini ve tasarımını ö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() yöntemini çağırmanız gerekir. Arayüzde, uygulayabileceğiniz iki yöntem bulunur: getInfoWindow(Marker) ve getInfoContents(Marker). API ilk olarak getInfoWindow(Marker) yöntemini çağırır ve null döndürülürse getInfoContents(Marker) yöntemini çağırır. Bu işlem null sonucunu da döndürürse varsayılan bilgi penceresi kullanılır.

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

Aşağıdaki resimlerde bir varsayılan bilgi penceresi, özelleştirilmiş içeriklerin bulunduğu bir bilgi penceresi ve özelleştirilmiş çerçeve ile arka planın bulunduğu 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 tıklama etkinliklerini dinlemek için OnInfoWindowClickListener kullanabilirsiniz. Bu işleyiciyi 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 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 OnInfoWindowLongClickListener ile dinleyebilirsiniz. Bunu GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) yöntemini ç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 bildirim alır.

Bilgi penceresi kapatıldığında bildirim almak için GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener) yöntemini çağırarak ayarlayabileceğiniz bir OnInfoWindowCloseListener kullanın. onInfoWindowClose(Marker) için bir geri arama alacaksınız.

Bilgi penceresini yenilemeyle ilgili not: Kullanıcı, açık bilgi penceresi bulunan bir işaretçiye dokunarak bilgi penceresini yenilerse onInfoWindowClose() etkinliği tetiklenir. Ancak açık bir bilgi penceresinde Marker.showInfoWindow() programlı olarak çağrılırsa onInfoWindowClose() etkinliği tetiklenmez. İkinci davranış, bilgi penceresinin kapanıp yeniden açılacağını bildiğiniz varsayımına dayanır.

Bilgi pencereleriyle ilgili bir önceki bölümde belirtildiği gibi, bilgi penceresi canlı görüntüleme değildir. Bunun yerine, görünüm harita üzerinde bir resim olarak oluşturulur. Sonuç olarak, görünüm için ayarladığınız işleyiciler dikkate alınmaz ve görünümün çeşitli bölümlerindeki tıklama etkinliklerini birbirinden ayırt edemezsiniz. Düğmeler, onay kutuları veya metin girişleri gibi etkileşimli bileşenleri özel bilgi pencerenize yerleştirmemeniz önerilir.