Запросить разрешение для служб местоположения, которые вы используете:
yourSharedLocationManager.requestWhenInUseAuthorization()
Если состояние в настоящее время не определено, предупреждение покажет запрос пользователю разрешить доступ. Если доступ запрещен, ваше приложение будет уведомлено в CLLocationManagerDelegate, так же, если разрешение будет отклонено в любой момент, вы будете обновлены здесь.
Для определения текущих разрешений необходимо проверить два отдельных состояния.
CLLocationManager.locationServicesEnabled()
CLLocationManager.authorizationStatus() == .authorizedWhenInUse
Вы можете добавить расширение - это удобная опция:
extension CLLocationManager {
static func authorizedToRequestLocation() -> Bool {
return CLLocationManager.locationServicesEnabled() &&
(CLLocationManager.authorizationStatus() == .authorizedAlways || CLLocationManager.authorizationStatus() == .authorizedWhenInUse)
}
}
Здесь он обращается, когда пользователь сначала запросил направления:
private func requestUserLocation() {
//when status is not determined this method runs to request location access
locationManager.requestWhenInUseAuthorization()
if CLLocationManager.authorizedToRequestLocation() {
//have accuracy set to best for navigation - accuracy is not guaranteed it 'does it's best'
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
//find out current location, using this one time request location will start the location services and then stop once have the location within the desired accuracy -
locationManager.requestLocation()
} else {
//show alert for no location permission
showAlertNoLocation(locationError: .invalidPermissions)
}
}
Вот делегат:
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
if !CLLocationManager.authorizedToRequestLocation() {
showAlertNoLocation(locationError: .invalidPermissions)
}
}
Добавить имя маршрута в контроллер @Route("/student/ajax", name="get-students")
Пример:
/**
* @Route("/student/ajax", name="get-students")
*/
public function ajaxAction(Request $request) {
if ($request->isXmlHttpRequest() || $request->query->get('showJson') == 1) {
$jsonData = array(
array(
'name' => 'name1',
'address' => 'addres1',
),
array(
'name' => 'name2',
'address' => 'addres2',
),
);
return new JsonResponse($jsonData);
} else {
return $this->render('@reservation/Default/ajax.html.twig');
}
}
Теперь в $.ajax
отправить запрос на имя маршрута url: "{{ path('get-students') }}"
Вывод файла ветки:
Name Address
name1 addres1
name2 addres2