Bir bilgi penceresinde, haritanın üzerinde yer alan bir pop-up pencerede metin veya resim görüntülenir. Bilgi pencereleri her zaman bir işaretçiye bağlıdır. Varsayılan davranışı, işaretçiye dokunulduğunda göstermektir.
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 dinleyicilerini kullanma
- MarkerDemoActivity - Kotlin: Bilgi pencerelerini özelleştirme ve bilgi penceresi dinleyicilerini kullanma
Giriş
Bilgi penceresi, kullanıcı bir işaretçiye dokunduğunda kullanıcıya bilgi görüntülemenize 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ı, o anda bilgi penceresi gösteren bir işaretçiyi tıklarsa bu bilgi penceresinin kapanıp yeniden açıldığını unutmayın.
Cihazın ekranı, ilişkili işaretçisinin ortasına konmuş bir bilgi penceresiyle çizilir. Varsayılan bilgi penceresi, başlığın kalın harflerle yazıldığı (isteğe bağlı) snippet metninin altında bulunur.
Bilgi penceresi ekleme
Bilgi penceresi eklemenin en kolay 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ö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 bir bilgi penceresini programatik olarak gösterebilirsiniz. Bilgi penceresi, hideInfoWindow()
çağırılarak 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 uygulamanızla birlikte GoogleMap.setInfoWindowAdapter()
öğesini çağırmanız gerekir. Arayüz, uygulayabileceğiniz iki yöntem içerir:
getInfoWindow(Marker)
ve getInfoContents(Marker)
. API ilk olarak getInfoWindow(Marker)
yöntemini çağırır, ardından null
döndürülürse getInfoContents(Marker)
çağrısı yapar. Bu, aynı zamanda null
değerini de 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ı kullanmaya devam eder.
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 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)
işlevi ç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, OnInfoWindowLongClickListener
kullanarak uzun tıklama etkinliklerini dinleyebilirsiniz. GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener)
yöntemini çağırarak bu durumu ayarlayabilirsiniz.
Bu dinleyici, tıklama dinleyiciye benzer şekilde davranır ve onInfoWindowClose(Marker)
geri çağırması ile uzun tıklama etkinliklerinde bildirim alır.
Bilgi penceresi kapandığında bildirim almak için OnInfoWindowCloseListener
kullanın. Dilerseniz GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener)
üzerinden de arama yapabilirsiniz. Bir onInfoWindowClose(Marker)
geri çağırması alacaksınız.
Bilgi penceresini yenilemeyle ilgili not: Kullanıcı, açık bilgi penceresi olan bir işaretçiye dokunarak bilgi penceresini yenilediğinde onInfoWindowClose()
etkinliği tetiklenir. Ancak, Marker.showInfoWindow()
'yi açık bir bilgi penceresinde programlı 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 pencerelerine yönelik önceki bölümde belirtildiği gibi, bilgi penceresi etkin bir görüntüleme değildir. Bunun yerine, görünüm haritada resim olarak oluşturulur. Sonuç olarak, görünümde ayarladığınız dinleyicileri göz ardı edilir 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.