Bilgi pencereleri

Platformu seçin: Android iOS JavaScript

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

Bilgi penceresi, bir işaretçiye dokunan kullanıcıya bilgi göstermenize olanak tanır.

Bilgi penceresi, cihaz ekranına doğrultularak, ilişkili işaretçisinin merkezine yerleştirilmiştir. Varsayılan bilgi penceresinde başlık kalın harflerle gösterilir ve snippet snippet'i başlığın altında yer alır.

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

Aynı anda yalnızca bir bilgi penceresi gösterilir. 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ır ve yeniden açılır.

Ek 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 ekleme

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 bir yazı tipiyle görünecek ek metin ekleyebilirsiniz. Bilgi penceresinin genişliğinden daha uzun olan dizeler otomatik olarak birkaç satıra kaydırılır. Çok uzun mesajlar kesilebilir.

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 için tasarlanmıştır. Bir bilgi penceresini programatik olarak gösterebilir veya gizleyebilirsiniz. Bunun için selectedMarkerGMSMapView özelliğini ayarlayabilirsiniz:

  • Göstermek için selectedMarker öğesini işaretçinin adına ayarlayın.
  • Gizlemek için selectedMarker öğesini 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;
      

Otomatik olarak yenilenecek bir bilgi penceresi ayarlama

Değişiklik yapıldığında yeni özelliklerin veya bilgi penceresinin içeriğinin hemen görüntülenmesini ve bilgi penceresinin gizlenip tekrar gösterilmesini beklemek yerine işaretçide tracksInfoWindowChanges değerini YES veya true olarak ayarlayın. Varsayılan değer NO veya false'dir.

Swift

london.tracksInfoWindowChanges = true
      

Objective-C

london.tracksInfoWindowChanges = YES;
      

tracksInfoWindowChanges özelliğinin ne zaman ayarlanacağına karar vermek için bilgi penceresinin otomatik olarak yeniden çizilmesinin avantajlarına dikkat etmeniz gerekir. Örneğin:

  • Yapacağınız bir dizi değişiklik varsa mülkü YES olarak değiştirip tekrar NO olacak şekilde değiştirebilirsiniz.
  • Bir animasyon çalışırken veya içerik eşzamansız olarak yüklenirken, işlemler tamamlanana kadar mülkü YES değerine ayarlamalısınız.

Ayrıca, işaretçinin iconView özelliğini kullanırken dikkat edilmesi gereken notlara bakın.

Bilgi penceresinin konumunu değiştirme

Bilgi penceresi, cihaz ekranına doğrultularak, ilişkili işaretçisinin üzerinde ortalanır. infoWindowAnchor özelliğini ayarlayarak, işaretçiye göre bilgi penceresinin konumunu değiştirebilirsiniz. Bu özellik, CGPoint değerini kabul eder. Burada, x ve y arasındaki değerler 0,0 ile 1,0 arasında bir (x,y) ofset olarak tanımlanır. Varsayılan göreli konum (0,5, 0,0)'dır, yani orta üst kısmıdır. infoWindowAnchor ofsetini ayarlamak, bilgi penceresini özel bir 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ılavuzu'na ve yöntem listesine GMSMapViewDelegate göz atın.

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örüntülenen görüntüleri eklemek için başlık ve snippet metnini ve UIImageView örnekleri gibi diğer görünümleri görüntülemek üzere özel UILabel örneklerini kullanabilirsiniz.

ViewController cihazınızın 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şaretleyici 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ürmenize olanak tanır.

Aşağıdaki resimlerde, varsayılan bilgi penceresi, özelleştirilmiş içerik barındıran bilgi penceresi ve özelleştirilmiş çerçeve ile arka plana sahip 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 için kod örneklerini inceleyin.