Bilgi Pencereleri

Platform seçin: Android iOS JavaScript

Bilgi penceresi, haritanın üzerindeki bir pop-up pencerede metin veya resim gösterir. Bilgi pencereler her zaman bir işaretçiye sabitlenir. Varsayılan davranışları, işaretçiye dokunulduğunda gösterilmektir.

Kod örnekleri

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

Giriş

Bilgi penceresi, dokunduğunda kullanıcıya bilgileri görüntülemenizi sağlar kullanabilirsiniz. Aynı anda yalnızca bir bilgi penceresi gösterilir. Kullanıcı mevcut bilgi penceresi kapatılır ve yeni bilgi penceresi, bir metin görüntülenir. Kullanıcı, işaretleyiciyi tıklarsa şu anda bir bilgi penceresi gösteriliyorsa, bu bilgi penceresi kapanıp yeniden açılır.

Cihaz ekranına dayalı olarak ortalanmış bir bilgi penceresi çizilir üzerine gelin. Varsayılan bilgi penceresi, başlığı içerir kalın harflerle gösterilir ve (isteğe bağlı) snippet metni başlığın altında bulunur.

Bilgi penceresi ekleyin

Bilgi penceresi eklemenin en kolay yolu, ilgili işaretçinin title() ve snippet() yöntemlerini ayarlamaktır. Bu özelliklerin ayarlanması, bilgi penceresi görünecektir.

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 verecek şekilde tasarlanmıştır. Dilerseniz hedef işaretçide showInfoWindow() işlevini çağırarak bilgi penceresini programatik olarak gösterebilirsiniz. Bilgi penceresi sesli arama yoluyla gizlenebilir hideInfoWindow().

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. Yapılacaklar Bu durumda, kalite standartlarının InfoWindowAdapter arayüzünü ve ardından çağrı GoogleMap.setInfoWindowAdapter() bazı ipuçları vereceğim. Arayüzde, uygulayabileceğiniz iki yöntem bulunur: getInfoWindow(Marker) ve getInfoContents(Marker). İlgili içeriği oluşturmak için kullanılan API önce getInfoWindow(Marker) yöntemini çağırır. null bu çağrılıyorsa: çağrılırsa getInfoContents(Marker) çağırır. Bu da null döndürürse varsayılan bilgi penceresi kullanılır.

Bunlardan (getInfoWindow()) ilki, Google Haritalar'ı kullanarak tüm bilgi penceresi için kullanılacak. Bunlardan ikincisi (getInfoContents()), pencerenin içeriğini özelleştirmenize ancak varsayılan bilgi penceresi çerçevesini ve arka planını korumanıza olanak tanır.

Aşağıdaki resimlerde varsayılan bilgi penceresi, özelleştirilmiş bilgiler içeren bir bilgi penceresi içeriği ve özelleştirilmiş çerçeve ile arka planı olan bir bilgi penceresi

Bilgi Penceresi Karşılaştırma

Bilgi penceresi etkinlikleri

MarkerDemoActivity örneği, bilgi penceresi etkinliklerini kaydetme ve işleme.

OnInfoWindowClickListener kullanarak şunları yapabilirsiniz: bir bilgi penceresindeki tıklama etkinliklerini dinleme. Bu işleyiciyi haritaya ayarlamak için: GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener) numaralı telefonu arayın. Zaman Kullanıcı bir bilgi penceresini tıkladığında, onInfoWindowClick(Marker) adı 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 izlemek için OnInfoWindowLongClickListener: telefon ederek ayarlayabilirsiniz GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener). Bu işleyici, tıklama işleyiciye benzer şekilde davranır ve onInfoWindowClose(Marker) geri çağırmasına sahip uzun tıklama etkinlikleri.

Bilgi penceresi kapandığında bildirim almak için şunu kullanın: OnInfoWindowCloseListener: arayarak ayarlandı GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener). Bu kurstan sonra onInfoWindowClose(Marker) geri aranır.

Bilgi penceresini yenileme hakkında not: onInfoWindowClose() etkinliği aşağıdaki durumlarda tetiklenir Kullanıcı, halihazırda açık olan bir işaretçiye dokunarak bilgi penceresini yeniler bilgi penceresine gidin. Ancak açık bir bilgi penceresinde Marker.showInfoWindow()'ü programatik olarak çağırırsanız onInfoWindowClose() etkinliği tetiklenmez. İkincisi bilgi penceresinin açık olduğunun farkında olduğunuz varsayımına dayanır. kapatıp yeniden açın.

Bilgi pencereleriyle ilgili bir önceki bölümde belirtildiği gibi, bilgi penceresi Canlı görüntüleme. Bunun yerine, görünüm haritada bir resim olarak oluşturulur. Kullanıcı görünüm için ayarladığınız dinleyiciler göz ardı edilir ve Görünümün çeşitli bölümlerindeki tıklama etkinliklerini birbirinden ayırt edebilirsiniz. Özel bilgi pencerenize düğme, onay kutusu veya metin girişi gibi etkileşimli bileşenler yerleştirmemeniz önerilir.