map_package.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import 'dart:typed_data';
  2. import 'ffi.dart' as ffi;
  3. import 'package:trackoffical_app/model/m_position.dart';
  4. import 'package:flutter/material.dart';
  5. class MapPackage {
  6. ffi.RwLockGeoMapInfo? ptr;
  7. Future<void> loadMemory(Uint8List data) async{
  8. ptr = await ffi.api.parseMapPackage(data: data);
  9. }
  10. Future<String> get mapExt async{
  11. return await ffi.api.runMapPackageMapExtOpaque(mapPackage: ptr!);
  12. }
  13. Future<Size> get dstSize async{
  14. final r = await ffi.api.runMapPackageGetDstSizeOpaque(mapPackage: ptr!);
  15. return Size(r.width, r.height);
  16. }
  17. Future<Uint8List> get mapImageData async{
  18. return await ffi.api.runMapPackageMapImageDataOpaque(mapPackage: ptr!);
  19. }
  20. Future<void> setDstSize(Size size) async{
  21. final dstSize = ffi.Size(width: size.width, height: size.height);
  22. await ffi.api.runMapPackageSetDstSizeOpaque(mapPackage: ptr!, dstSize: dstSize);
  23. }
  24. Future<MPosition> picToPosition(Offset onPic) async{
  25. final r = await ffi.api.runMapPackagePicToPositionOpaque(
  26. mapPackage: ptr!,
  27. onPic: ffi.Offset(x: onPic.dx, y: onPic.dy));
  28. return MPosition(latitude: r.latitude, longitude: r.longitude);
  29. }
  30. Future<Offset> positionToPic(MPosition position) async{
  31. final r = await ffi.api.runMapPackagePositionToPicOpaque(
  32. mapPackage: ptr!,
  33. position: ffi.Position(latitude: position.latitude, longitude: position.longitude));
  34. return Offset(r.x, r.y);
  35. }
  36. Future<ffi.ZoneType?> isInHotZone(MPosition position) async{
  37. final r = await ffi.api.runMapPackageIsInHotZoneOpaque(
  38. mapPackage: ptr!,
  39. position: ffi.Position(latitude: position.latitude, longitude: position.longitude));
  40. return r;
  41. }
  42. void close(){
  43. ptr?.dispose();
  44. ptr = null;
  45. }
  46. }