Untuk mendapatkan lokasi pengguna saat ini, Anda perlu mendeklarasikan:
let locationManager = CLLocationManager()
Di viewDidLoad()
Anda harus instantiate CLLocationManager
kelas, seperti:
// Ask for Authorisation from the User.
self.locationManager.requestAlwaysAuthorization()
// For use in foreground
self.locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
Kemudian dalam metode CLLocationManagerDelegate Anda bisa mendapatkan koordinat lokasi pengguna saat ini:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
print("locations = \(locValue.latitude) \(locValue.longitude)")
}
Dalam info.plist Anda harus menambahkan NSLocationAlwaysUsageDescription
dan pesan peringatan khusus Anda seperti; AppName (Aplikasi Demo) ingin menggunakan lokasi Anda saat ini.
Import MapKit
+CoreLocation
+CLLocationManagerDelegate
dalam definisi kelas.NSLocationAlwaysUsageDescription
telah berganti nama menjadiPrivacy - Location Always Usage Description
locationManager
sebagai variabel global dan bukan variabel lokal diviewDidLoad
Anda harus melakukan langkah-langkah ini:
CoreLocation.framework
ke BuildPhases -> Tautkan Biner Dengan Perpustakaan (tidak lagi diperlukan pada XCode 7.2.1)CoreLocation
ke kelas Anda - kemungkinan besar ViewController.swiftCLLocationManagerDelegate
ke deklarasi kelas AndaNSLocationWhenInUseUsageDescription
danNSLocationAlwaysUsageDescription
plistmanajer lokasi init:
dapatkan Lokasi Pengguna Dengan:
sumber
Pembaruan untuk iOS 12.2 dengan Swift 5
Inilah saya
Pastikan Anda telah menambahkan CoreLocation dan MapKit kerangka kerja untuk proyek Anda (ini tidak diperlukan dengan Xcode 7.2.1)
Ini adalah layar hasil
sumber
Impor perpustakaan seperti:
atur Delegasi:
Ambil variabel seperti:
Pada viewDidLoad () tulis kode cantik ini:
Tulis metode delegasi CLLocation:
Sekarang setel izin untuk mengakses lokasi, jadi tambahkan nilai kunci ini ke file info.plist Anda
100% berfungsi tanpa masalah. DIUJI
sumber
NSLocationWhenInUseUsageDescription = Minta izin untuk menggunakan layanan lokasi saat aplikasi ada di latar belakang. dalam file plist Anda.
Jika ini berhasil maka silakan pilih jawabannya.
sumber
Impor Corelocation dan MapKit library pertama:
mewarisi dari CLLocationManagerDelegate ke kelas kami
buat variabel locationManager, ini akan menjadi data lokasi Anda
buat fungsi untuk mendapatkan info lokasi, spesifik sintaks yang tepat ini berfungsi:
di fungsi Anda buat konstanta untuk lokasi pengguna saat ini
berhenti memperbarui lokasi, ini mencegah perangkat Anda terus-menerus mengubah Jendela untuk memusatkan lokasi Anda saat bergerak (Anda dapat menghilangkan ini jika Anda ingin berfungsi sebaliknya)
dapatkan pengguna mengoordinasi dari userLocatin yang baru saja Anda tetapkan:
tentukan seberapa besar tampilannya yang Anda inginkan dari peta Anda:
let span = MKCoordinateSpanMake(0.2,0.2)
gabungkan keduanya untuk mendapatkan wilayah:sekarang atur wilayah dan pilih apakah Anda ingin pergi ke sana dengan animasi atau tidak
tutup fungsi Anda
}
dari tombol Anda atau cara lain Anda ingin mengatur locationManagerDeleget menjadi mandiri
sekarang izinkan lokasi ditampilkan
menunjuk keakuratan
mengizinkan:
untuk dapat mengotorisasi layanan lokasi Anda perlu menambahkan dua baris ini ke daftar Anda
dapatkan lokasi:
perlihatkan kepada pengguna:
Ini adalah kode lengkap saya:
sumber
Swift 3.0
Jika Anda tidak ingin menampilkan lokasi pengguna di peta, tetapi hanya ingin menyimpannya di firebase atau di tempat lain, ikuti langkah-langkah ini,
Sekarang gunakan CLLocationManagerDelegate pada VC Anda dan Anda harus mengganti tiga metode terakhir yang ditunjukkan di bawah ini. Anda dapat melihat bagaimana metode requestLocation () akan memberi Anda lokasi pengguna saat ini menggunakan metode ini.
Sekarang Anda dapat membuat kode panggilan di bawah ini sekali pengguna masuk ke aplikasi Anda. Saat requestLocation () dipanggil, ia akan memohon didUpdateLocations di atas dan Anda dapat menyimpan lokasi ke Firebase atau di mana pun.
jika Anda menggunakan GeoFire maka dalam metode didUpdateLocations di atas Anda dapat menyimpan lokasi seperti di bawah ini
Terakhir tetapi tidak kalah pentingnya, buka Info.plist Anda dan aktifkan "Privasi -Lokasi saat dalam Deskripsi Penggunaan Penggunaan."
Ketika Anda menggunakan simulator untuk mengujinya, selalu memberi Anda satu lokasi khusus yang Anda konfigurasikan di Simulator -> Debug -> Lokasi.
sumber
pertama tambahkan dua kerangka kerja di proyek Anda
1: MapKit
2: Corelocation (tidak lagi diperlukan pada XCode 7.2.1)
Tentukan di kelas Anda
kemudian pada kode metode viewDidLoad ini
jangan lupa untuk menambahkan kedua nilai ini dalam file plist
sumber
Karena panggilan ke
requestWhenInUseAuthorization
tidak sinkron, aplikasi memanggillocationManager
fungsi setelah pengguna memberikan izin atau menolaknya. Oleh karena itu tepat untuk menempatkan lokasi Anda mendapatkan kode di dalam fungsi itu diberikan izin yang diberikan pengguna. Ini adalah tutorial terbaik yang saya temukan di sana .sumber
Ini adalah pandangan Anda yang memuat metode dan di Kelas ViewController juga menyertakan metode pembaruan mapStart sebagai berikut
Juga jangan lupa untuk menambahkan CoreLocation.FrameWork dan MapKit.Framework dalam proyek Anda (tidak lagi diperlukan pada XCode 7.2.1 )
sumber
Pemakaian:
Tentukan bidang di kelas
Gunakan fungsi kelas dengan kode sederhana:
Kelas:
Jangan lupa untuk menambahkan "NSLocationWhenInUseUsageDescription" di info.plist.
sumber
Perlu menulis kode ini di ViewController yang diperlukan.
sumber
di sini adalah contoh salin-tempel yang bekerja untuk saya.
http://swiftdeveloperblog.com/code-examples/determine-users-current-location-example-in-swift/
sumber
sumber
100% bekerja di iOS Swift 4 oleh: Parmar Sajjad
Langkah 1: Goto GoogleDeveloper Api Console Dan buat ApiKey Anda
Langkah 2: Proyek Goto menginstal Cocoapods GoogleMaps pod
langkah 3: Goto AppDelegate.swift mengimpor GoogleMaps dan
langkah 4: impor UIKit impor GoogleMaps kelas ViewController: UIViewController, CLLocationManagerDelegate {
}
langkah 5: buka file info.plist dan Tambahkan di bawah Privasi - Lokasi Saat Di Gunakan Uraian Penggunaan ...... di bawah nama dasar file storyboard utama
langkah 6: jalankan
sumber