Apple'ın MapKit çerçevesi, iPhone ve iPad'de doğru hissettiğiniz bir yerdeki farkındalık deneyimlerini sağlam bir şekilde kullanarak uygulamalarını sağlar.Bu kılavuz, MapKit'i etkin bir şekilde entegre etmek, kişiselleştirmek, kullanıcı etkileşimi, gelişmiş özellikler ve performans göstermek için size rehberlik etmek için ihtiyacınız olan her şeyi size rehberlik eder.Eğer bir navigasyon uygulaması inşa etmek, bir seyahat rehberi oluşturmak veya sadece bir lokatörü eklemek için yardımcı olacaktır.

MapKit ile Başlanmak

Önlemler ve Proje Kurulum

Ekranda bir haritayı oturtan önce, Xcode projesinize HaritaKit eklemek zorundasınız.Eğer UIKit ile inşa ediyorsanız, sadece görüntü kontrolörünizin üst kısmında çerçeveyi ithal edin: 03.000T:0))) SwiftUI projeleri için, aynı ithalat bildirimini Apple'ın SDK'sı ile eklediğinizden, bu yüzden ek bir paket yüklemesi gerekli değildir.

Uygulamanızın şu anki yerini gösteren ve uygun açıklamalarla ilgili olarak aşağıdaki anahtarların yerlerine dair kritik bir adım atılır:0)Info.plist[Dönetici: 0:1) Konum erişim talep etmek için yer hizmetlerine dayanmaktadır. MapKit, kullanıcının mevcut konumunu gösteren ve yön veren özellikleri için yer hizmetlerine dayanmaktadır.

  • [FONT:0]NSLocationInUseUsageDescription[[[[DÜT:1): Uygulamanızın neden kullanım sırasında yere eriştiğini açıklayan bir mesaj.
  • [FONT=0)NSLocationAlwaysAnd WhenInUseUsageDescription[[DÜT:1): Uygulamanız arka planda yer alıyorsa (örneğin, dönüş yolculuğu için).

Apple bu açıklamaları inceler, bu yüzden konum verilerini nasıl kullandığınız konusunda net ve dürüst olun. belirsiz veya yanıltıcı bir açıklama reddedilmeye yol açabilir.

İstek Listesi

Anahtarları ekledikten sonra bile, uygulamanız gerektiğinde izin almak için aktif olarak sormalıdır.UseENFLT:0)#LocationManager) Kullanıcının izin verdiği veya inkar etmesinden sonra, sistem sadece gerekli olan bir süre sonra izin almak için en iyisidir, bu nedenle uygulama başlatınızdaki değişikliklerden sonra aşağıdaki gibi bir şekilde yapılır.

UIKit ve SwiftUI için MapKit ekleyin

UIKit'te, aritFLT:0)MapKit View[Döneticilerime göre veya iOS 17'de yayınlanan veya )MKMapView) programınıza ek olarak, sizin görüntü kontrolünüzde bir çıkış için tıklayın.For SwiftUI, kullanım [[Dönetici:0|bent|bent|bent|kullanıcı|kullanıcı|kullanıcı|kullanıcıklama)[Döneticileri ile dolu haritaya erişmiş olduğunuza dair yorum yapan bir yaklaşıma sahip olun.

App Uygulamanıza Bir Map View to Your App

Programmatic Instantiation vs. Interface Builder

Interface Builder hızlı bir sürüklenme çözümü sunar, ancak programmatik yaratım size harita ve ilk konfigürasyon üzerinde iyi kontrol verir.Eğer koddaki haritayı yaratırsanız, [[Döngörüler:0)[Döngörüler:)[Dönem:)[Dönder)[Dönder)[Dönderlik).

Yöntem ne olursa olsun, genellikle haritanın [[Düşütme:0)[Döneticileri için [[Döneticileri için) veya içinde [[Gruple|Sekiz|2)UIViewRepresentable[DÜye Olmayanlar[Döneticileri işlemek ve belirli bir notasyon görüşlerini kullanmak için gereklidir.

Harita Type ve Bölgeyi Yeniden Tanımlayın

MapKit birkaç harita türü sunar: [[Dönetici:0) Standart[Dönetici:0)[Dönemli kareler)[Dönemli renkler[Dönemli resim) [[Döneticiler için değiştir].(Aerial image)[Dönetici: 0: 5 ).Bir navigasyon odaklı uygulama için; standart veya hibrit işler için; hava veya arazi uygulaması için, daha uygun olabilir.

İlk bölgeyi kurmak için, bir İLDİT:0)MKCoordRegion[Dönetici: 1 ) merkezi koordinat ve yay (daha iyi / uzun süre delta) ile merkezi bir koordinat ile koordineli olarak.

  • Merkez: latitude 40.7128, uzunlık -74.0060
  • Span: latitudeDelta 0.05, uzunlıkDelta 0.05 (yaklaşık 5-6 km).

Kolay bir kullanıcı girişi için bölge değişikliğini anlayın. Haritayı birçok karot yüklemeye zorlayan küçük bir dilimden kaçının; orta derecede daha hızlı bir şekilde yük.

Kullanıcı Konum

Kullanıcının mavi dotunu göstermek için, setFLT:7). Bu otomatik olarak Info.plist anahtarlarını eklediyseniz konum izni talep eder.Ayrıca kullanıcı konumdaki yerini dinlemek için haritayı da merkezleyebilirsiniz.

Daha yüksek doğruluk veya arka plan güncellemeleri için HaritaKit ile bir araya gelir:0)CLLocationManager) doğrudan ve haritaya koordinatlar verir. MapKit'in yerleşik konum hizmeti çoğu kullanım için yeterlidir ve kodunuzu basitleştirir.

Map with Annotations and Overlays ile özelleştirin

Özel Annotasyonlar Yaratmak

Bir pin yerine koymanın en basit yolu, [Dönetici:0]MKPointAnnotasyon)[Dönetici[Dönetici: 3))[Dönetici: 4|Dönetici|Dönetici|Dönetici|Dönetici|seçmiş) ve [Dönetici|Dönetici|seçmiş) ile değiştirebileceğiniz bir görüntüyü değiştirmek için, bir Üste indirme işlemine izin vermeniz gerekir.

Tam kontrol için, zengin bir notasyon görünümü oluşturmak için bir sınıf oluşturmak:0)MKAnnotasyon) protokolü. Daha sonra ek özellikleri (bir kimlik veya derecelendirme gibi) saklayabilirsiniz ve bunları zenginleştirme görünümü oluşturmak için kullanabilirsiniz. Bu yaklaşım, her bir çağrı için farklı veya ekstra veri taşıması gerekir.

Tasarım: Tasarım

[Üye Olmayanlar İçin Tıklayınız, Affin:0]MKPinAnnotationView[DÜye Olmayanlar İçindekiler İçindekiler ve Koşullar[DÜye Olmayanlar İçin Tıklayınız.)

Ayrıca sol / sağ çağrılı erişim görüşlerini (örneğin, bir başparmak görüntüsü veya detaylı bir düğme) ekleyebilirsiniz.For a detailed düğmesine, setÖRT:14). ve musluku [[ŞUFONTD:15) ele alın, bu model kullanıcıların bir yere daha fazla bilgi vermesine olanak sağlar.

Add Overlays

Overlays haritada çizilir: daireler, polilines ve poligonlar. UseurFLT:0)MKCircle) bir noktada bir yarıçap (örneğin, bir teslimat bölgesi) doldurmaktadır.

Bir overlay, uygulama:DÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ

İpucu: Eğer birçok overlays varsa, onları büyük bir alanı ve çizim kalıpları programı tematik olarak kapsayan tek bir aşırılığa gruplandırmayı düşünün.Bu, formların sayısını azaltır ve çerçeve oranını artırır.

Kullanıcı Etkileşimi

Delegate'i uygulamak

Bakış kontrolörünüz (veya koordinatörü), [[0)MKMapViewDelegate) haritanın delege mülkünü ayarlayın, sonra ihtiyacınız olan yöntemleri uygulayın.

  • [[GÖRÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ: Kullanıcının panning veya zoom yapmasından sonra çağırın. görünür bölge için yeni bir not veya yenileme verileri yüklemek için kullanın.
  • [[Düzg: Bir antasyon çalındığında ateşler. Hangi yeri seçilmiş bir detay paneli veya logu güncelleyebilirsiniz.
  • [FONT: Yukarıdakiler gibi, bir notasyon görüşlerini sağlamak için gerekli.
  • [FONT=FONT=FONT=FONT=FONT=)

Delegeyi 5/53'te kaldırmayı unutmayın. (UIKit) veya görüş yetim çağrılarından kaçınmak için kaybolur.

Pan, Zoom ve Annotasyon Seçimine Yanıt Ver

MapKit pan ve zoom jestleri varsayılan olarak ele alır.You can limit zoom levels by settingETHFLT:0)cameraZoomRange) (iOS 13+) haritanın maksimum ve minimum zoomunu kısıtlamak için. Örneğin, bir restoran bulucu çok uzak durmayı engelleyebilir.

Bir kullanıcı bir notasyon seçtiğinde, çağrı otomatik olarak yapılandırılırsa görünür. Ayrıca özel animasyonlar gerçekleştirebilirsiniz: örneğin, takıldığında seçilen annotasyona yakın.UseahiFLT:24). veya ) düzgün geçişler için dikkat edin.

Updating UI based on Map Events

Arama veya uygulama işlemi ile birlikte, kullanıcı kaydırmaları olarak, yeni görünür arka kapı içinde ilgi noktaları için bir sunucu sorgulayabilirsiniz.UseFLT:0)MKMapRect, bir istek olmadan yanıt veren bir uygulama sağlar.

Gelişmiş Özellikler Gelişmiş Özellikler

MKDirections ile Yol Alın

MapKit sürüş, yürüyüş, geçiş ve bisiklet yol tarifini kullanabilir:0)MKDirections) Birinci olarak, aİLFLT:2 BYMKDirections.Request[Dönemli ve varış noktaları için doğru olan yük ve varış noktaları için.transport|D][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT=)[D][/FONT=FONT=FONT=3][/FONT=3][/FONT=)

[FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=STRNT=S FONT=SNT=STRNT=S FONT=SNT=SNT=SNT=STRNT=S=S=S=S=S=S=S=S=S=S=S=S=S=S=S=S=S=S=S=SNT=S=S=S=SNT=S=SNT=S=SNT=S=S=S=S=S=S=SNT=S=S=SNT=FONT=SNT=S=S=SNT=S=S=S=S=S=S=S=S=S=S=S=S=FONT=

Geocoding with CLGeocoder

MapKit, geocoding (birkaç kişi koordinatörlüğü) aracılığıyla ileri sürünür (düşünmeler) ile aynı şekilde kullanışlıdır.(D)L.D.C.C.C.D.com[D)))))) Tamamlanan bir dizi geri dönüş (CLPK)[D)[D)[D)[D)[D)[D)[D)[D)[D)[D)[D)[D)[D)[D)[D)[D))[D)))))

Ters geocoding Apple tarafından sınırlandırılır, bu yüzden her annotasyon seçimine hitap etmekten kaçınır. Cache sonuçları yerel olarak (örneğin, koordinat tarafından anahtarlanan bir sözcüde).To heavy use, Think Apple'sASIFLT:0MapKit JS server-side geocoding veya üçüncü taraf sağlayıcı).

Gerçek Zaman Güncellemeleri için Core Location ile MapKit birleştirmek

Canlı izleme (örneğin, teslimat şoförünün pozisyonu), [[FONTD[Döneticileri) ve [[Döneticileri ) sürekli güncellemek için, o zaman kullanıcıyı temsil eden bir notasyon güncellemek. SeturFLT:30).

Annotasyonun koordinat mülkiyeti doğrudan güncel:Manager( :didUpdateHeading:)[Döneticileri değiştir] ve haritaya göre sıralayın.

Performans ve En İyi Uygulamalar

Annotations'ın Büyük Sayıları ile Bellek Yönetimi

Optimizasyon olmadan yüzlerce annotasyon ekle haritayı yavaşlatabilir ve hafıza basıncına neden olabilir.Her zaman maküla ile (similar to table views) Uygun bir şekilde ayarlayarak bir notasyon görüşlerini kullanın:0)

Gerçekten büyük veri setleri (bir dizi puan), [[Döneticileri [Döneticileri) kullanılarak algılanır[Döneticileri ile ayarlanırlar.[Döneticileri ile aynı tanımlayıcıları bir araya getirirler ve [Döneticileri için) ve [[Döneticileri/veya görüntüyü dramatik bir şekilde azaltan bir dizileri otomatik olarak azaltır.

Optimizing Overlay Rendering

Her overlay kendi fikre sahiptir.Eğer birçok küçük overlays varsa (örneğin, kiremitler), onları tek bir şekilde birleştirir:0)MKTileOverlay) veya [[Dönemli[D:2MKGroundOverlay[Diziler için) her çerçevede kırmızı çizer; bunun yerine, sadece değişmiş olan her bölgeyi değiştirir.

Harita hareket ettiğinde, overlays yeni zoom seviyesinde yapılır. karmaşık şekiller için geometriyi daha düşük zoom seviyelerinde basitleştirebilirsiniz.(0)lineWidth) ve Dinamik olarak yukarı doğru düzgün bir şekilde doğruya doğru düzgün bir şekilde konumlandırabilirsiniz.

Map Resources ve Licensing

MapKit Apple'ın haritalı sunucuları kullanır, bu da geliştirici programı üyeliğinize dahil edilir. ancak, Apple'ın [[0)MapKit Kullanım Kılavuzları) ile özel harita stillerine uymanız gerekir. Örneğin, Apple Developer hesabınızı görüntüleyebilirsiniz.

çevrimdışı haritalar için, MapKit, boks parçaları yerel olarak destekleyemez.Uygulamayı düşünün:0)MapKit'in , karo önyükleme davranışı (bazı parçalarına) inşa edilmiş, ancak garanti altına almak için çevrimdışı işlevsellik için, öncelikle online olarak kullanmak gerekir.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

MapKit, iOS geliştiricilerine, üçüncü taraf hizmetlerine güvenmekten önce yer alma arabirimleri için inanılmaz derecede zengin bir araç setini verir.Temel pins ve aşırı yüklemeler ile tam rota yönlendirme ve gerçek zamanlı annotasyonlar, çerçeve, haritalama ihtiyaçlarının çoğunu kapsar. Kurulum adımları takip ederek, kümeleme yöntemlerine göre performans optimizasyonlarını uygulayın, hızlı, hızlı ve duyarlı ve uygulamanızın işlevselliği ile derinden entegre edebilirsiniz.

Öğrenmeye devam etmek için resmi olarak bakınız:0) Apple MapKit Dokümantasyon[[Dönetici:2) ve burada bulunan örnek projeler keşfedin, sonraki iOS'a daha derin bir şekilde atfedin.