Jump to content
  • 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) Запускаем приложение.

При помещении карты в район местоположения, получаем ошибку

image.thumb.png.5feb2cd4048944a15c0ff9e3ae4db7ae.png

Со стеком 

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

User Feedback

Recommended Comments

  • Administrators

Значение Статус изменено на: Fixed

Значение Резолюция изменено на: Fixed

Значение Версия с исправлением изменено на: 1.9.5.0

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.