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
selectedMarker
parametresini işaretçinin adına ayarlayın. selectedMarker
öğesini gizlemek içinnil
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ındanNO
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:
mapView:markerInfoWindow:
— Bir işaretçi seçilmek üzereyken çağrılır. İsteğe bağlı olarakUIView
biçiminde özel bilgi penceresi döndürebilir. tıklayın. Daha fazla bilgi için aşağıdaki Özel bilgi pencereleri bölümüne bakın.mapView:markerInfoContents:
—mapView:markerInfoWindow
, nil değerini döndürdüğünde çağrılır.mapView:didCloseInfoWindowOfMarker:
— İşaretçinin bilgi penceresi kapatıldığında çağrılır.mapView:didLongPressInfoWindowOfMarker:
: İşaretçinin bilgi penceresine uzun süre basıldıktan sonra çağrılır.
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
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.