Bilgi pencereleri

Platform seçin: Android iOS JavaScript

İşaretçinin üzerinde görünen bilgi penceresi.

Bilgi penceresi, kullanıcıya bir işaretçiye dokunduğunda bilgileri görüntülemenizi sağlar.

Cihaz ekranına dayalı olarak, ilişkili işaretçinin üzerinde ortalanmış bir bilgi penceresi çizilir. Varsayılan bilgi penceresi kalın harflerle yazılmış başlık ve başlığın altında snippet metni içerir.

Bilgi penceresinin içeriği, işaretçinin title ve snippet özellikleriyle tanımlanır. Hem title hem de snippet özellikleri boşsa işaretçiyi tıkladığınızda bilgi penceresi görüntülenmez veya nil.

Aynı anda yalnızca bir bilgi penceresi görüntülenir. Kullanıcı başka bir işaretçiye dokunursa geçerli pencere gizlenir ve yeni bilgi penceresi açılır. Kullanıcı, bilgi penceresi gösteren bir işaretçiyi tıklarsa bu bilgi penceresi kapanıp yeniden açılır.

Daha fazla metin veya resim eklemek için özel bir bilgi penceresi oluşturun. Özel bilgi penceresi, pop-up'ın görünümü üzerinde tam kontrol sağlar.

Bilgi penceresi ekleyin

Aşağıdaki snippet, bilgi penceresinin metni için yalnızca bir başlık içeren basit bir işaretçi oluşturur.

Swift

let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127)
let london = GMSMarker(position: position)
london.title = "London"
london.map = mapView
      

Objective-C

CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127);
GMSMarker *london = [GMSMarker markerWithPosition:position];
london.title = @"London";
london.map = mapView;
      

snippet özelliğini kullanarak başlığın altında daha küçük yazı tipiyle görünecek ilave metinler ekleyebilirsiniz. Bilgi penceresinin genişliğinden daha uzun olan dizeler otomatik olarak birkaç satıra kaydırılır. Çok uzun mesajlar kısaltılabilir.

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
      

Objective-C

london.title = @"London";
london.snippet = @"Population: 8,174,100";
london.map = mapView;
      

Bilgi penceresini gösterme/gizleme

Bilgi pencereleri, işaretçideki kullanıcı dokunma etkinliklerine yanıt vermek üzere tasarlanmıştır. GMSMapView öğesinin selectedMarker özelliğini ayarlayarak bilgi penceresini programatik olarak gösterebilir veya gizleyebilirsiniz:

  • Göstermek için işaretçinin adına selectedMarker değerini ayarlayın.
  • selectedMarker öğesini gizlemek için nil olarak ayarlayın.

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
// Show marker
mapView.selectedMarker = london
// Hide marker
mapView.selectedMarker = nil
      

Objective-C

london.title = @"London";
london.snippet = @"Population: 8,174,100";
london.map = mapView;
// Show marker
mapView.selectedMarker = london;
// Hide marker
mapView.selectedMarker = nil;
      

Bilgi penceresini otomatik olarak yenilenecek şekilde ayarlama

Bilgi penceresinin gizlenmesini ve ardından tekrar gösterilmesini beklemek yerine, değiştirildiğinde yeni özelliklerin veya bilgi penceresinin içeriğinin hemen gösterilmesini istiyorsanız işaretçide tracksInfoWindowChanges değerini YES veya true olarak ayarlayın. Varsayılan değer NO veya false'dır.

Swift

london.tracksInfoWindowChanges = true
      

Objective-C

london.tracksInfoWindowChanges = YES;
      

tracksInfoWindowChanges özelliğinin ne zaman ayarlanacağına karar vermek için performansla ilgili hususları, bilgi aralığının otomatik olarak yeniden çizilmesinin avantajlarıyla karşılaştırmanız gerekir. Örneğin:

  • Yapılacak bir dizi değişiklik varsa özelliği YES, ardından tekrar NO olarak değiştirebilirsiniz.
  • Bir animasyon çalışırken veya içerikler eşzamansız olarak yüklenirken, işlemler tamamlanana kadar özelliği YES değerine ayarlı tutmanız gerekir.

İşaretçinin iconView özelliğini kullanırken dikkate alınması gereken notlara da bakın.

Bilgi penceresinin konumunu değiştirme

Cihaz ekranına dayalı olarak, ilişkili işaretçisinin üzerinde ortalanmış olarak bir bilgi penceresi çizilir. infoWindowAnchor özelliğini ayarlayarak işaretçiye göre bilgi penceresinin konumunu değiştirebilirsiniz. Bu özellik, x ve y'nin 0,0 ile 1,0 arasında değiştiği bir (x,y) ofseti olarak tanımlanan CGPoint öğesini kabul eder. Varsayılan ofset (0, 5, 0, 0) yani orta üst değerdir. infoWindowAnchor ofsetini ayarlamak, bilgi penceresini özel simgeyle hizalamak için yararlıdır.

Swift

london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5)
london.icon = UIImage(named: "house")
london.map = mapView
      

Objective-C

london.infoWindowAnchor = CGPointMake(0.5, 0.5);
london.icon = [UIImage imageNamed:@"house"];
london.map = mapView;
      

Bilgi pencerelerindeki etkinlikleri işleme

Aşağıdaki bilgi penceresi etkinliklerini dinleyebilirsiniz:

Etkinlikleri dinlemek için GMSMapViewDelegate protokolünü uygulamanız gerekir. Etkinlik kılavuzunu ve GMSMapViewDelegate sitesindeki yöntemlerin listesini inceleyin.

GitHub, bilgi penceresi etkinliklerinin nasıl işleneceğini gösteren örnekler içerir:

Özel bilgi pencereleri

Özel bilgi penceresinin düzenini tanımlayan bir UIView alt sınıfı oluşturarak bilgi pencerelerinin içeriğini özelleştirin. Bu alt sınıfta görünümü istediğiniz gibi tanımlayın. Örneğin, bilgi penceresinde gösterilen resimleri eklemek amacıyla, başlık ve snippet metnini ve diğer görünümleri (ör. UIImageView örnekleri) göstermek için özel UILabel örneklerini kullanabilirsiniz.

ViewController öğenizin GMSIndoorDisplayDelegate protokolünü uyguladığından ve mapView:markerInfoWindow: etkinliği için bir işleyici tanımladığından emin olun. Bu etkinlik işleyici, bir işaretçi seçilmek üzereyken çağrılır ve işaretçi tarafından kullanılan özel bilgi penceresini tanımlamak için özel UIView sınıfınızın bir örneğini döndürmenizi sağlar.

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ı

iOS için Haritalar SDK'sı ile sağlanan GitHub'daki kod örnekleri, özel bilgi pencerelerinin örneklerini içerir. Örneğin, MarkerInfoWindowViewController.m (Objective-C) veya MarkerInfoWindowViewController.swift (Swift) tanımına bakın.

Bu örnekleri indirme ve çalıştırma hakkında bilgi edinmek için kod örneklerine bakın.