Jump to content
  • Status: Fixed
  • Priority: Minor
  • Resolution: Fixed
  • Platform: iOS
  • Affects version: 1.9.4.1

Здравствуйте. 

Для простоты возьмем стандартный пример MapObjectsDemo из поставки.

1) Избавляемся от использования модулей FGX.*.Android, Android.*

2)Отключаем опцию myLocation, дабы не повторять ошибку при определении местоположения

3)Очищаем процедуру fgFormShow, в связи с ненужностью оной

4) Меняем процедуру 

procedure TFormMain.fgMap1MarkerTap(Sender: TObject; const AMarker: TfgMapMarker);
const rsCar='https://upload.wikimedia.org/wikipedia/en/2/2d/Front_left_of_car.jpg';
var A:TfgAssetBitmapSet;
begin
 if not TfgAssetsManager.Current.Find<TfgAssetBitmapSet>('CARJPG',A)
 then
 begin
  TfgAssetsManager.Current.AddBitmapFromUrl('CARJPG',rsCar);
 end;
  TfgToast.Show(Format('Marker id=%s title=%s', [AMarker.Id, AMarker.Title]));
end;

5) После запуска, добавления маркера и нажатия на него, получим ошибку

Module Load: dyld. No Debug Info. Base Address: $0000000102A84000. Process MapObjectsDemo (1173)
Exception EAccessViolation in module libsystem_platform.dylib at 00000001C8BD6108. Process MapObjectsDemo (1173)
Access violation at address 00000001C8BD6108, accessing address 0000000115ED0000. Process MapObjectsDemo (1173)
First chance exception at $0000000100D90648. Exception class EfgPlatformService with message 'Сервис не поддерживается. id="IFGXScreenService"'. Process MapObjectsDemo (1173)

Со стеком 

System._DbgExcNotify(int, void*, System.SmallString<(unsigned char)255>*, void*, void*)
System.NotifyReRaise(System.TObject*, void*)(0x000000028320d000,0x0000000100d90648)
System._RaiseAtExcept(System.TObject*, void*)(0x000000028320d000,0x0000000100d90648)
System._RaiseExcept(System.TObject*)(0x000000028320d000)
Fgx.Screen.TfgScreenManager.Main()(0x0000000101622280)
Fgx.Assets.Bitmapset.TfgAssetBitmapSet.FindBitmapInfo(Fgx.Assets.Bitmapset.TfgBitmapInfo*&)(??,0x000000016f597048)
Fgx.Assets.Ios.AssetToUIImage(Fgx.Assets.TfgAsset*, System.Uitypes.TAlphaColor, Fgx.Assets.Ios.TfgDrawableMode)(0x0000000283286040,0)
Fgx.Assets.Ios.AssetToUIImage(Fgx.Assets.TfgAsset*, Fgx.Assets.Ios.TfgDrawableMode)(0x0000000283286040,Default)
Fgx.Navigationbar.Ios.TfgiOSNavigationBarActionsButtonsContainer.CreateButton(Fgx.Navigationbar.Types.TfgNavigationBarButton*)(0x0000000280981380,0x000000028099d900)
Fgx.Navigationbar.Ios.TfgiOSNavigationBarActionsButtonsContainer.RefillButtons(Fgx.Navigationbar.Types.TfgNavigationBarButtons*)(0x0000000280981380,0x00000002804eeee0)
Fgx.Navigationbar.Ios.TfgiOSNavigationBar.RecreateActionButtons()(0x0000000280982580)
Fgx.Navigationbar.Ios.TfgiOSNavigationBar.WMButtonChanged(Fgx.Messaging.TfgMessage__1<Fgx.Navigationbar.TfgButtonChangedInfo>&)(0x0000000280982580)

6) Поменяем тактику, бросим на форму компонент ht:TNetHttpClient и поменяем процедуру нажатия на маркер, следующим образом

procedure TFormMain.fgMap1MarkerTap(Sender: TObject; const AMarker: TfgMapMarker);
const rsCar='https://upload.wikimedia.org/wikipedia/en/2/2d/Front_left_of_car.jpg';
var A:TfgAssetBitmapSet;
    B:TfgBitmap;
    s:TStream;
    F:TFileStream;
    FName:String;
begin
 if not TfgAssetsManager.Current.Find<TfgAssetBitmapSet>('CARJPG',A)
 then
 begin
//  TfgAssetsManager.Current.AddBitmapFromUrl('CARJPG',rsCar); Убираем падение
  s:=ht.Get(rsCar).ContentStream;
  s.Position:=0;
  FName:=TPath.GetTempFileName+'.jpg';
  F:=TFileStream.Create(FName,fmCreate);
  F.CopyFrom(s,s.size);
  F.Free;
  A:=TfgAssetsManager.Current.AddBitmapFromFile('CARJPG',FName);
 end;
//Тут мы грузим картинку в описание, но это никому уже неинтересно   
 if TfgAssetsManager.Current.Find<TfgAssetBitmapSet>('CARJPG',A) 
 then
     TfgiOSMapMarker(AMarker).AnnotationView.setDetailCalloutAccessoryView(
     TUIImageView.Wrap(TUIImageView.Alloc.initWithImage(AssetToUIImage(A)))
     );
  
  TfgToast.Show(Format('Marker id=%s title=%s', [AMarker.Id, AMarker.Title]));
end;

7) Ошибка ушла, у меня есть подозрение, что ошибка возникает в случае TfgBitmap.CreateFromStream

Delphi 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.