MapSurvey - refraktorálás
This commit is contained in:
@@ -64,8 +64,8 @@ class MapSurveyController extends GetxController {
|
||||
RxDouble get gpsLongitudeError => _gnss.longitudeError;
|
||||
RxDouble get gpsAltitudeError => _gnss.altitudeError;
|
||||
Rx<DateTime> get gpsDateTime => _gnss.gpsDateTime;
|
||||
RxBool get gpsIsConnected =>
|
||||
(_gnss.connectionState.value == GnssConnectionState.connected).obs;
|
||||
bool get gpsIsConnected =>
|
||||
_gnss.connectionState.value == GnssConnectionState.connected;
|
||||
|
||||
// NTRIP állapot
|
||||
RxBool get ntripIsConnected => _ntrip.isConnected;
|
||||
@@ -85,6 +85,9 @@ class MapSurveyController extends GetxController {
|
||||
Rx<Eov> eov = Eov(0, 0).obs;
|
||||
Rx<double?> eovHeight = (0.0 as double?).obs;
|
||||
|
||||
final eovY = 0.0.obs;
|
||||
final eovX = 0.0.obs;
|
||||
|
||||
// DMS formátum
|
||||
RxInt latDegree = 0.obs;
|
||||
RxInt latMin = 0.obs;
|
||||
@@ -101,17 +104,18 @@ class MapSurveyController extends GetxController {
|
||||
RxBool isMapMoveToCenter = true.obs;
|
||||
RxBool mapIsInitialized = false.obs;
|
||||
|
||||
late final MapController mapController;
|
||||
final MapController mapController = MapController();
|
||||
|
||||
final currentLocationMarker = <Marker>[];
|
||||
final pointNotesMarker = <Marker>[];
|
||||
final pointsToMeasureMarker = <Marker>[];
|
||||
final pointsToMeasureLabel = <PolyWidget>[];
|
||||
final pointsToMeasureDropDownMenuItem = <DropdownMenuItem<int>>[];
|
||||
final currentLocationMarker = <Marker>[].obs;
|
||||
final pointNotesMarker = <Marker>[].obs;
|
||||
final pointsToMeasureMarker = <Marker>[].obs;
|
||||
final pointsToMeasureLabel = <PolyWidget>[].obs;
|
||||
final pointsToMeasureDropDownMenuItem = <DropdownMenuItem<int>>[].obs;
|
||||
|
||||
// ── Pont adatok ───────────────────────────────────────────────────
|
||||
List<PointToMeasure> pointsToMeasure = [];
|
||||
List<PointWithDescription> pointWithDescriptionList = [];
|
||||
final RxList<PointToMeasure> pointsToMeasure = <PointToMeasure>[].obs;
|
||||
final RxList<PointWithDescription> pointWithDescriptionList =
|
||||
<PointWithDescription>[].obs;
|
||||
RxInt pointsToMeasureSelectedValue = (-1).obs;
|
||||
RxDouble distance = 0.0.obs;
|
||||
|
||||
@@ -149,22 +153,17 @@ class MapSurveyController extends GetxController {
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
|
||||
@override
|
||||
void onInit() async {
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
_initAsync();
|
||||
}
|
||||
|
||||
Future<void> _initAsync() async {
|
||||
prefs = await SharedPreferences.getInstance();
|
||||
geoidGrid = await GeoidGrid.load('assets/Grids/geoid_eht2014.gtx');
|
||||
mapController = MapController();
|
||||
|
||||
// ── NTRIP RTCM adat → GNSS vevő ──────────────────────────────
|
||||
NtripService.to.onRtcmData = (data) {
|
||||
GnssService.to.sendToReceiver(data);
|
||||
};
|
||||
|
||||
// ── GnssService pozíció változás → EOV, marker, NTRIP GGA ────
|
||||
_gnssUpdateSub = _gnss.onDataUpdated.listen((_) {
|
||||
_onGnssUpdate();
|
||||
});
|
||||
NtripService.to.onRtcmData = (data) => GnssService.to.sendToReceiver(data);
|
||||
_gnssUpdateSub = _gnss.onDataUpdated.listen((_) => _onGnssUpdate());
|
||||
|
||||
// ── Supabase realtime ─────────────────────────────────────────
|
||||
_supaChannel = Supabase.instance.client
|
||||
@@ -193,18 +192,19 @@ class MapSurveyController extends GetxController {
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() async {
|
||||
super.onClose();
|
||||
|
||||
void onClose() {
|
||||
_phoneLocationSub?.cancel();
|
||||
_gnssUpdateSub?.cancel();
|
||||
await _supaChannel?.unsubscribe();
|
||||
final f = _supaChannel?.unsubscribe();
|
||||
if (f != null) unawaited(f);
|
||||
|
||||
pointIdController.dispose();
|
||||
pointDescriptionController.dispose();
|
||||
gpsHeightController.dispose();
|
||||
pointPrefixController.dispose();
|
||||
pointPostfixController.dispose();
|
||||
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
@@ -220,7 +220,11 @@ class MapSurveyController extends GetxController {
|
||||
final sep = _gnss.geoidSeparation.value;
|
||||
|
||||
// EOV konverzió
|
||||
eov.value = ConvertCoordinate.ConvertWgsToEov(lat, lon);
|
||||
final converted = ConvertCoordinate.ConvertWgsToEov(lat, lon);
|
||||
eov.value = converted;
|
||||
eovY.value = converted.Y.toDouble();
|
||||
eovX.value = converted.X.toDouble();
|
||||
|
||||
eovHeight.value = geoidGrid.toEovHeight(lat, lon, alt, sep);
|
||||
|
||||
// DMS
|
||||
@@ -254,10 +258,6 @@ class MapSurveyController extends GetxController {
|
||||
);
|
||||
}
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
// Telefon GPS fallback
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
// Térkép vezérlők
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
@@ -288,21 +288,23 @@ class MapSurveyController extends GetxController {
|
||||
}
|
||||
|
||||
void _updateCurrentLocationMarker() {
|
||||
currentLocationMarker.clear();
|
||||
currentLocationMarker.add(Marker(
|
||||
point: LatLng(currentLatitude.value, currentLongitude.value),
|
||||
width: 15.0,
|
||||
height: 15.0,
|
||||
child: Container(
|
||||
currentLocationMarker.assignAll([
|
||||
Marker(
|
||||
point: LatLng(currentLatitude.value, currentLongitude.value),
|
||||
width: 15.0,
|
||||
height: 15.0,
|
||||
decoration: BoxDecoration(
|
||||
color: getCurrentLocationMarkerColor(_gnss.gpsQuality.value),
|
||||
shape: BoxShape.circle,
|
||||
border: Border.all(width: 1.5, color: Colors.white),
|
||||
child: Container(
|
||||
width: 15.0,
|
||||
height: 15.0,
|
||||
decoration: BoxDecoration(
|
||||
color: getCurrentLocationMarkerColor(_gnss.gpsQuality.value),
|
||||
shape: BoxShape.circle,
|
||||
border: Border.all(width: 1.5, color: Colors.white),
|
||||
),
|
||||
),
|
||||
),
|
||||
));
|
||||
)
|
||||
]);
|
||||
|
||||
if (isMapMoveToCenter.value) {
|
||||
mapController.move(
|
||||
LatLng(currentLatitude.value, currentLongitude.value),
|
||||
@@ -622,7 +624,7 @@ class MapSurveyController extends GetxController {
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
|
||||
double calculateDistance(LatLng start, LatLng end) {
|
||||
const r = 6371.0;
|
||||
const r = 6371000.0;
|
||||
final lat1 = start.latitude * (pi / 180);
|
||||
final lon1 = start.longitude * (pi / 180);
|
||||
final lat2 = end.latitude * (pi / 180);
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
import 'dart:io';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_map_polywidget/flutter_map_polywidget.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:flutter_map/flutter_map.dart';
|
||||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:rive/rive.dart';
|
||||
import 'package:terepi_seged/pages/map_survey/presentations/controllers/map_survey_controller.dart';
|
||||
import 'package:terepi_seged/pages/map_survey/presentations/views/settings_dialog.dart';
|
||||
import 'package:terepi_seged/utils/rive_utils.dart';
|
||||
@@ -24,12 +19,29 @@ class MapSurveyView extends GetView<MapSurveyController> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Stack(children: [
|
||||
const SharedMapWidget(),
|
||||
SharedMapWidget(
|
||||
mapController: controller.mapController,
|
||||
currentZoom: controller.currentZoom,
|
||||
onZoomIn: controller.mapZoomIn,
|
||||
onZoomOut: controller.mapZoomOut,
|
||||
onCenterOnGps: controller.isMapMoveToCenter,
|
||||
),
|
||||
Positioned(
|
||||
top: 8,
|
||||
right: 60,
|
||||
left: 8,
|
||||
child: CoordinatePanel.fromController(controller),
|
||||
child: CoordinatePanel(
|
||||
eovY: controller.eovY,
|
||||
eovX: controller.eovX,
|
||||
horError: controller.gpsLatitudeError,
|
||||
vertError: controller.gpsAltitudeError,
|
||||
altitudeMsl: controller.gpsAltitude,
|
||||
geoidSeparation: controller.gpsGeoidSeparation,
|
||||
ntripConnected: controller.ntripIsConnected,
|
||||
ntripBytes: controller.ntripReceivedData,
|
||||
ntripPackets: controller.ntripDataPacketNumbers,
|
||||
ggaPackets: controller.ggaSenDataPacketNumber,
|
||||
),
|
||||
),
|
||||
// Positioned(top: 8, left: 0, right: 0, child: _ModeSelector()),
|
||||
// Positioned(
|
||||
|
||||
Reference in New Issue
Block a user