- Status: Fixed
- Priority: Minor
- Resolution: Fixed
- Platform: iOS
- Affects version: 1.9.4.1
Добрый день.
В настоящее время средствами библиотеки показать свое местоположение на IOS невозможно.
Но, в случае попытки сделать это при помощи API IOS мы убеждаемся в невозможности использования местоположения с помощью легкого исправления
Для демонстрации был взят Пример MapObjectsDemo из поставки.
1) Избавляемся от использования модулей FGX.*.Android, Android.*
2) Добавляем использование IOS.Api.CoreLocation
{$IFDEF IOS},IOS.Api.CoreLocation{$ENDIF}
3) Переписываем fgFormShow следующим образом
procedure TFormMain.fgFormShow(Sender: TObject); const AccessCoarseLocationPermission = 'android.permission.ACCESS_COARSE_LOCATION'; FineLocationPermission = 'android.permission.ACCESS_FINE_LOCATION'; begin if TOSVersion.Platform=TOsVerSion.TPlatform.pfAndroid then //Добавлено, из-за отсутствия поддержки сервиса разрешений в Ios TfgPermissionService.RequestPermissionsAsync([AccessCoarseLocationPermission, FineLocationPermission], procedure(const APermissionsInfos: TArray<TfgPermissionInfo>) begin if APermissionsInfos[0].CheckResult = TPermissionCheckResult.Denied then TfgToast.Show('ACCESS_COARSE_LOCATION was not granted, map cannot use MyLocation', TfgToastDuration.Long); if APermissionsInfos[1].CheckResult = TPermissionCheckResult.Denied then TfgToast.Show('ACCESS_FINE_LOCATION was not granted, map cannot use MyLocation', TfgToastDuration.Long); end); {$IFDEF IOS} with TCLLocationManager.Create do requestWhenInUseAuthorization();//Запрос использования местоположения {$ENDIF} end;
4) Запускаем приложение.
При помещении карты в район местоположения, получаем ошибку
Со стеком
System._DbgExcNotify(int, void*, System.SmallString<(unsigned char)255>*, void*, void*) System.NotifyReRaise(System.TObject*, void*)(0x0000000283a8c320,0x0000000101606774) System._RaiseAtExcept(System.TObject*, void*)(0x0000000283a8c320,0x0000000101606774) System._RaiseExcept(System.TObject*)(0x0000000283a8c320) Fgx.Map.Ios.TfgiOSMapDelegate.GetMarkerOrRaise(void const*)(0x0000000283a0f480,0x000000028191e1e0) Fgx.Map.Ios.TfgiOSMapDelegate.mapViewViewForAnnotation(System.DelphiInterface<Ios.Api.Mapkit.MKMapView>, void*)(0x0000000283a0f480,0x000000028191e1e0)
Delphi 10.3.3 10.4.2 SDK 14.4 IOS 14.4.4 Ipad mini 4
Спасибо.
Fix version: 1.10.0.0
Recommended Comments
Create an account or sign in to comment