Bir 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ülenmektir.
Kod örnekleri
GitHub'daki ApiDemos deposu, tüm bilgi penceresi özelliklerini gösteren bir örnek içerir:
- MarkerDemoActivity - Java: Bilgi pencerelerini özelleştirme ve bilgi penceresi işleyicilerini kullanma
- MarkerDemoActivity - Kotlin: Bilgi pencerelerini özelleştirme ve bilgi penceresi işleyicilerini kullanma
Giriş
Bilgi penceresi, kullanıcılar bir işaretçiye dokunduğunda onlara bilgi görüntülemenizi sağlar. 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ı, bilgi penceresi gösteren bir 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 üzerinde ortalanmış bir bilgi penceresi gösterilir. Varsayılan bilgi penceresinde başlık kalın harflerle gösterilir. Başlığın altında (isteğe bağlı) snippet metni de bulunur.
Bilgi penceresi ekleme
Bilgi penceresi eklemenin en basit yolu, ilgili işaretçi için 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ünmesine 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öster/gizle
Bilgi pencereleri, kullanıcı dokunma etkinliklerine yanıt verecek şekilde tasarlanmıştır. İsterseniz hedef işaretçide showInfoWindow()
yöntemini çağırarak bir bilgi penceresini programatik olarak gösterebilirsiniz. hideInfoWindow()
çağrısı yapılarak bir 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()
Ayrı ayrı kümelenmiş işaretçiler için bilgi pencereleri de oluşturabilirsiniz. Bağımsız 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ı ö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 da null
değerini 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()
), varsayılan bilgi pencere çerçevesi ve arka planı korurken yalnızca pencerenin içeriğini özelleştirmenize olanak tanır.
Aşağıdaki resimlerde bir varsayılan bilgi penceresi, özelleştirilmiş içeriklerin bulunduğu bilgi penceresi ve özelleştirilmiş çerçeve ile arka planın bulunduğu bir bilgi penceresi gösterilmektedir.

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.
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, uzun tıklama etkinliklerini bir OnInfoWindowLongClickListener
ile dinleyebilirsiniz. Bunu GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener)
işlevini ç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. Bunu, GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener)
yöntemini çağırarak ayarlayabilirsiniz. onInfoWindowClose(Marker)
ile ilgili geri arama alacaksınız.
Bilgi penceresini yenileme hakkında 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 programlı olarak Marker.showInfoWindow()
çağırırsanız onInfoWindowClose()
etkinliği tetiklenmez. İkinci davranış, bilgi penceresinin kapanacağını ve 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ümde ayarladığınız işleyiciler dikkate alınmaz ve görünümün çeşitli bölümlerindeki tıklama etkinliklerini ayırt edemezsiniz. Düğmeler, onay kutuları veya metin girişleri gibi etkileşimli bileşenleri özel bilgi pencerenize yerleştirmemeniz önerilir.