Para obtener la ubicación actual de un usuario, debe declarar:
let locationManager = CLLocationManager()
En viewDidLoad()
tienes que instanciar la CLLocationManager
clase, así:
// 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()
}
Luego, en el método CLLocationManagerDelegate, puede obtener las coordenadas de ubicación actuales del usuario:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
print("locations = \(locValue.latitude) \(locValue.longitude)")
}
En la lista de información, tendrá que agregar NSLocationAlwaysUsageDescription
y su mensaje de alerta personalizado como; AppName (aplicación de demostración) desea utilizar su ubicación actual.
Import MapKit
+CoreLocation
+CLLocationManagerDelegate
en la definición de clase.NSLocationAlwaysUsageDescription
ha cambiado su nombre aPrivacy - Location Always Usage Description
locationManager
como una variable global en lugar de una variable local enviewDidLoad
debes hacer esos pasos:
CoreLocation.framework
a BuildPhases -> Link Binary With Libraries (ya no es necesario a partir de XCode 7.2.1)CoreLocation
a su clase, muy probablemente ViewController.swiftCLLocationManagerDelegate
a su declaración de claseNSLocationWhenInUseUsageDescription
yNSLocationAlwaysUsageDescription
plistAdministrador de ubicación de init:
obtener la ubicación del usuario por:
fuente
Actualización para iOS 12.2 con Swift 5
Así es como soy
Asegúrese de haber agregado el marco CoreLocation y MapKit a su proyecto (esto no es necesario con XCode 7.2.1)
Aquí está la pantalla de resultados.
fuente
Importar biblioteca como:
establecer delegado:
Tomar variables como:
En viewDidLoad () escribe este bonito código:
Escriba los métodos delegados de CLLocation:
Ahora configure el permiso para acceder a la ubicación, así que agregue estos valores clave en su archivo info.plist
100% trabajando sin ningún problema. Probado
fuente
NSLocationWhenInUseUsageDescription = Solicitar permiso para usar el servicio de ubicación cuando las aplicaciones están en segundo plano. en su archivo plist.
Si esto funciona, por favor vote la respuesta.
fuente
Primero importe la biblioteca Corelocation y MapKit:
heredar de CLLocationManagerDelegate a nuestra clase
crea una variable locationManager, esta será tu información de ubicación
cree una función para obtener la información de ubicación, sea específico, esta sintaxis exacta funciona:
en su función, cree una ubicación actual constante para los usuarios
deje de actualizar la ubicación, esto evita que su dispositivo cambie constantemente la ventana para centrar su ubicación mientras se mueve (puede omitir esto si desea que funcione de otra manera)
haga que los usuarios coordinen desde userLocatin que acaba de definir:
defina qué tan ampliado desea que sea su mapa:
let span = MKCoordinateSpanMake(0.2,0.2)
combina estos dos para obtener la región:ahora configure la región y elija si desea que vaya allí con animación o no
cierra tu función
}
desde su botón u otra forma en que desee establecer locationManagerDeleget en self
ahora permita que se muestre la ubicación
designar precisión
autorizar:
para poder autorizar el servicio de ubicación, debe agregar estas dos líneas a su lista
obtener ubicación:
muéstralo al usuario:
Este es mi código completo:
fuente
Swift 3.0
Si no desea mostrar la ubicación del usuario en el mapa, pero solo desea almacenarla en Firebase o en otro lugar, siga estos pasos,
Ahora use CLLocationManagerDelegate en su VC y debe anular los últimos tres métodos que se muestran a continuación. Puede ver cómo el método requestLocation () le proporcionará la ubicación actual del usuario utilizando estos métodos.
Ahora puede codificar la siguiente llamada una vez que el usuario inicie sesión en su aplicación. Cuando se invoca requestLocation (), invocará didUpdateLocations anteriormente y podrá almacenar la ubicación en Firebase o en cualquier otro lugar.
si está utilizando GeoFire, en el método didUpdateLocations anterior puede almacenar la ubicación de la siguiente manera
Por último, pero no menos importante, vaya a su Info.plist y habilite "Privacidad-Ubicación cuando esté en uso Descripción del uso".
Cuando usa el simulador para probarlo, siempre le da una ubicación personalizada que configuró en Simulador -> Depurar -> Ubicación.
fuente
primero agregue dos marcos en su proyecto
1: MapKit
2: Corelocation (ya no es necesario a partir de XCode 7.2.1)
Define en tu clase
luego en viewDidLoad código de método esto
no olvide agregar estos dos valores en el archivo plist
fuente
Debido a que la llamada a
requestWhenInUseAuthorization
es asíncrona, la aplicación llama a lalocationManager
función después de que el usuario le haya otorgado permiso o lo haya rechazado. Por lo tanto, es apropiado colocar su ubicación obteniendo código dentro de esa función dado el permiso otorgado por el usuario. Este es el mejor tutorial sobre esto que he encontrado en él .fuente
Este es su método de carga de la vista y en la clase ViewController también incluye el método de actualización mapStart de la siguiente manera
Además , no olvide agregar CoreLocation.FrameWork y MapKit.Framework en su proyecto (ya no es necesario a partir de XCode 7.2.1 )
fuente
Uso:
Definir campo en clase
Uso en función de clase por código simple:
Clase:
No olvide agregar "NSLocationWhenInUseUsageDescription" en la lista de información.
fuente
Necesita escribir este código en el ViewController requerido.
fuente
Aquí hay un ejemplo de copiar y pegar que funcionó para mí.
http://swiftdeveloperblog.com/code-examples/determine-users-current-location-example-in-swift/
fuente
fuente
100% trabajando en iOS Swift 4 por: Parmar Sajjad
Paso 1: Vaya a la consola Api de GoogleDeveloper y cree su ApiKey
Paso 2: Goto Project instala el pod de Cocoapods GoogleMaps
paso 3: Goto AppDelegate.swift importa GoogleMaps y
paso 4: importa UIKit importa la clase GoogleMaps ViewController: UIViewController, CLLocationManagerDelegate {
}
Paso 5: abra el archivo info.plist y agregue a continuación Privacidad: ubicación cuando está en uso Descripción del uso ...... debajo del nombre base del archivo del guión gráfico principal
paso 6: corre
fuente