Bilgi pencereleri

Platform seçin: Android iOS JavaScript

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

Bilgi penceresi, bir düğmeye dokunduğunda kullanıcıya bilgi görüntülemenizi sağlar kullanabilirsiniz.

Cihaz ekranına dayalı olarak yukarıda ortalanmış şekilde bir bilgi penceresi çizilir ilgili işaretçisine izin verir. Varsayılan bilgi penceresinde başlık kalın harflerle yazılmıştır. snippet metniyle değiştirin.

Bilgi penceresinin içeriği title ve İşaretçinin snippet özellikleri. İşaretçiyi tıkladığınızda bir hem title hem de snippet özellikleri boşsa bilgi penceresi veya nil.

Aynı anda yalnızca bir bilgi penceresi görüntülenir. Kullanıcı başka bir işaretçi varsa, geçerli pencere gizlenir ve yeni bilgi penceresi açılır. Kullanıcı, o anda bir bilgi penceresi gösteren işaretçiyi tıklarsa bilgi penceresi kapanıp tekrar 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 denetime sahip olmanızı sağlar.

Bilgi penceresi ekleyin

Aşağıdaki snippet, metin için yalnızca bir başlık içeren basit bir işaretçi oluşturuyor tıklayın.

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, gösterilecek ilave metinler ekleyebilirsiniz daha küçük yazı tipiyle yazın. Şu genişliğinden uzun dizeler: bilgi penceresi otomatik olarak birkaç satıra yerleştirilir. Çok uzun iletiler 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. selectedMarker ayarlayarak bilgi penceresini programatik olarak gösterebilir veya gizleyebilirsiniz. GMSMapView mülkü:

  • 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

tracksInfoWindowChanges Yeni özellikler veya bilgi içeriği isterseniz işaretçiyi YES veya true olarak işaretleyin değiştirildiğinde hemen görüntülenecektir. daha sonra tekrar gösterilecek bilgi penceresine gidin. Varsayılan değer NO veya false'dır.

Swift

london.tracksInfoWindowChanges = true
      

Objective-C

london.tracksInfoWindowChanges = YES;
      

tracksInfoWindowChanges mülkü, siz performans değerlendirmelerini en iyi uygulamalara sahip olmanın avantajlarıyla bilgi penceresi otomatik olarak yeniden çizilir. Örneğin:

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

Aşağıdaki durumlarda dikkate alınması gereken notlara da Bunun için işaretçinin iconView özelliğini kullanabilirsiniz.

Bilgi penceresinin konumunu değiştirme

Cihaz ekranına dayalı olarak ortalanmış bir bilgi penceresi çizilir üzerine gelin. Bilgi penceresinin konumunu değiştirebilirsiniz. infoWindowAnchor özelliğini ayarlayarak işaretçiye göre seçim yapın. Bu mülkü, x ve y'nin olduğu bir (x,y) ofseti olarak tanımlanan CGPoint kabul eder aralığı 0,0 ile 1,0 arasındadır. Varsayılan ofset (0, 5, 0, 0) yani orta üst. infoWindowAnchor ofsetini ayarlamak, bilgileri hizalamak için yararlıdır simgesini tıklayın.

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ü. Bkz. etkinlik rehberine ve GMSMapViewDelegate.

GitHub bilgi penceresi etkinliklerinin nasıl ele alınacağını gösteren örnekler içerir:

Özel bilgi pencereleri

Bir alt sınıf oluşturarak bilgi pencerelerinin içeriğini özelleştirin: UIView özel bilgi penceresinin düzenini tanımlayan değeri tanımlayın. O alt sınıfta, görünümü istediğiniz gibi tanımlayabilirsiniz. Örneğin, UILabel başlık ve snippet metnini ve diğer görünümleri (örneğin, UIImageView bilgi penceresinde görüntülenen resimleri eklemek için kullanılır.

ViewController uygulamanızın GMSIndoorDisplayDelegate protokolüdür ve bu dosya için bir işleyici mapView:markerInfoWindow: unutmayın. Bu etkinlik işleyici, bir işaretçi tamamlanmak üzereyken çağrılır seçilidir ve özel UIView sınıfınızın bir örneğini önceki işaretleyici tarafından kullanılan özel bilgi penceresini tanımlayın.

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ırması

Kod örnekleri GitHub iOS için Haritalar SDK'sı ile sağlanır özel bilgi pencerelerinin örneklerini içermelidir. Örneğin, Arkadaş Bitkiler projesinin MarkerInfoWindowViewController.m (Hedef-C) ya da MarkerInfoWindowViewController.swift (Swift).

İndirme ve çalıştırma hakkında bilgi için kod örneklerine bakın bazı en iyi uygulamalardan bahsedeceğiz.