summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/navigation/openstreetmapNavigation.dart194
-rw-r--r--lib/pages/navigation_page.dart2
2 files changed, 87 insertions, 109 deletions
diff --git a/lib/navigation/openstreetmapNavigation.dart b/lib/navigation/openstreetmapNavigation.dart
index f8f37df..1ad2d7b 100644
--- a/lib/navigation/openstreetmapNavigation.dart
+++ b/lib/navigation/openstreetmapNavigation.dart
@@ -1,4 +1,6 @@
import 'dart:async';
+import 'package:flutter_map/flutter_map.dart' as FlutterMap;
+import 'package:flutter_map/plugin_api.dart';
import 'package:flutter_osm_plugin/flutter_osm_plugin.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
@@ -13,6 +15,7 @@ import 'package:training_planner/navigation/baseNavigation.dart';
import 'package:training_planner/pages/navigation_page.dart';
import 'package:training_planner/route.dart';
import '../route.dart' as DHLRoute;
+import 'package:latlong2/latlong.dart';
class OpenstreetmapNavigation extends BaseNavigation {
OpenstreetmapNavigation({Key? key, required route})
@@ -25,20 +28,24 @@ class OpenstreetmapNavigation extends BaseNavigation {
class _OpenstreetNavigationState extends BaseNavigationState
with OSMMixinObserver {
late List<RoadInfo> roads;
- late MapController controller;
+ late FlutterMap.MapController controller;
+ GlobalKey<ScaffoldState> _scaffoldKey =
+ new GlobalKey(); //so we can call snackbar from anywhere
+
+ late LatLng startPosition = LatLng(0, 0);
@override
void initState() {
widget.routeSectionCursor = 0;
widget.currentZoom = 10;
- controller = MapController(
- initMapWithUserPosition: true,
- areaLimit: BoundingBox(
- east: 7.601818,
- north: 53.703101,
- south: 50.679237,
- west: 2.894101,
- ));
+ controller = FlutterMap.MapController();
+
+ Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high)
+ .then((value) {
+ setState(() {
+ startPosition = LatLng(value.latitude, value.longitude);
+ });
+ });
widget.isLookingAround = true;
eventBus.fire(MapPanningEvent(true));
@@ -66,31 +73,33 @@ class _OpenstreetNavigationState extends BaseNavigationState
.getBlacklist()
.then((value) => {widget.blacklist = value});
- super.initState();
- controller.addObserver(this);
+ mapIsReady(true);
- addRoute(widget.route);
+ super.initState();
+ //controller.addObserver(this);
}
@override
Future<void> mapIsReady(bool isReady) async {
+ if (widget.allTasks.length != 0) return;
addRoute(widget.route);
}
@override
Future<void> addRoute(DHLRoute.Route route) async {
- print(
- "ASGOPDJS_GH DS*()FHY DS()UFHY) DSU(FHY)DSU( FH)DSUHF)UDS HF)UDSUHF ");
if (route.tasks == null) return;
- print("234");
-
- GeoPoint routeStartCoords = await controller.myLocation();
+ Position currentPosition = await Geolocator.getCurrentPosition(
+ desiredAccuracy: LocationAccuracy.high);
+ GeoPoint routeStartCoords = GeoPoint(
+ latitude: currentPosition.latitude,
+ longitude: currentPosition.longitude);
List<GeoPoint> waypoints = [routeStartCoords];
//List<MultiRoadConfiguration> configs = [];
groupTasksIntoGroups(route);
+
/*
GeoPoint prevCoord = routeStartCoords;
for (var item in widget.parcelNumberPins) {
@@ -110,7 +119,8 @@ class _OpenstreetNavigationState extends BaseNavigationState
for (var item in widget.parcelNumberPins) {
item.isDoublePlannedAddress = isAddressDoublePlanned(item);
}
-*/
+ */
+
/*
roads = await controller.drawMultipleRoad(
configs,
@@ -129,12 +139,16 @@ class _OpenstreetNavigationState extends BaseNavigationState
@override
void dispose() {
controller.dispose();
+ widget.stopCompletedEvent?.cancel();
+ widget.stopIncompletedEvent?.cancel();
super.dispose();
}
var mapPointers = 0;
var mapPosition;
+ late List<FlutterMap.Marker> markers = [];
+
void onMoveStart() {
widget.isLookingAround = true;
eventBus.fire(MapPanningEvent(true));
@@ -145,47 +159,37 @@ class _OpenstreetNavigationState extends BaseNavigationState
@override
Widget build(BuildContext context) {
return Listener(
- onPointerDown: (details) {
- if (mapPointers == 0) onMoveStart();
- mapPointers++;
- },
- onPointerUp: (details) {
- mapPointers--;
- if (mapPointers == 0) onMoveEnd();
- },
- behavior: HitTestBehavior.deferToChild,
- child: OSMFlutter(
- controller: controller,
- trackMyPosition: true,
- initZoom: widget.currentZoom,
- minZoomLevel: 2,
- maxZoomLevel: 18,
- stepZoom: 1.0,
- userLocationMarker: UserLocationMaker(
- personMarker: MarkerIcon(
- assetMarker: AssetMarker(
- image: AssetImage('assets/package.png'),
- scaleAssetImage: 1.0),
- ),
- directionArrowMarker: MarkerIcon(
- assetMarker: AssetMarker(
- image: AssetImage('assets/package.png'),
- scaleAssetImage: 1.0),
+ onPointerDown: (details) {
+ if (mapPointers == 0) onMoveStart();
+ mapPointers++;
+ },
+ onPointerUp: (details) {
+ mapPointers--;
+ if (mapPointers == 0) onMoveEnd();
+ },
+ behavior: HitTestBehavior.deferToChild,
+ child: Stack(
+ children: [
+ FlutterMap.FlutterMap(
+ mapController: controller,
+ options: MapOptions(
+ center: startPosition,
+ bounds: LatLngBounds(
+ LatLng(53.703101, 7.601818), LatLng(50.679237, 2.894101)),
),
- ),
- roadConfiguration: RoadOption(
- roadColor: Colors.yellowAccent,
- ),
- markerOption: MarkerOption(
- defaultMarker: MarkerIcon(
- icon: Icon(
- Icons.person_pin_circle,
- color: Colors.blue,
- size: 56,
+ children: [
+ FlutterMap.TileLayer(
+ urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
+ userAgentPackageName: 'com.example.app',
),
- ),
+ FlutterMap.MarkerLayer(
+ markers: markers,
+ )
+ ],
),
- ));
+ ],
+ ),
+ );
}
@override
@@ -193,40 +197,39 @@ class _OpenstreetNavigationState extends BaseNavigationState
if (newVal > 18) newVal = 18;
if (newVal < 10) newVal = 10;
widget.currentZoom = newVal;
- await controller.setZoom(zoomLevel: newVal);
+
+ controller.moveAndRotate(controller.center, widget.currentZoom, 0.0);
}
@override
createPinWidget(
DestinationPin pin, Color color, DHLCoordinates coords) async {
- await controller.addMarker(
- GeoPoint(
- latitude: pin.coords.lattitude, longitude: pin.coords.longitude),
- markerIcon: MarkerIcon(
- iconWidget: Container(
- height: 65,
- width: 150,
- child: createPin(pin, color,
- isDoublePlannedAddress: pin.isDoublePlannedAddress),
- ),
- ),
- angle: 0);
+ // poop
}
@override
void flyTo(DHLCoordinates coords) async {
- await controller.enableTracking(
- enableStopFollow: false,
- );
+ Position currentPosition = await Geolocator.getCurrentPosition(
+ desiredAccuracy: LocationAccuracy.high);
+
+ controller.moveAndRotate(
+ LatLng(currentPosition.latitude, currentPosition.longitude),
+ widget.currentZoom,
+ 0.0);
}
@override
- void updateHighlightedRouteSections({bool force = false}) {
+ void updateHighlightedRouteSections({bool force = false}) async {
int maxPins = 300;
- for (int i = widget.parcelNumberPins.length - 1; i >= 0; i--) {
- DestinationPin pin = widget.parcelNumberPins.elementAt(i);
+ markers.clear();
+
+ for (int i = widget.routeSectionCursor - 1;
+ i < widget.routeSectionCursor + 7;
+ i++) {
+ if (i < 0 || i >= widget.parcelNumberPins.length) continue;
+ DestinationPin pin = widget.parcelNumberPins.elementAt(i);
Color color = Color.fromARGB(200, 0, 144, 138);
if (i == widget.routeSectionCursor)
color = Color.fromARGB(199, 143, 8, 31);
@@ -236,39 +239,14 @@ class _OpenstreetNavigationState extends BaseNavigationState
color = Color.fromRGBO(143, 8, 31, 0.78);
}
- bool forceUpdateThisPin = force &&
- (i > widget.routeSectionCursor - 3 &&
- i < widget.routeSectionCursor + 3);
-
- /*
- if (!shouldDoublePlannedAddressBeVisible(pin)) {
- pin.pin?.unpin();
- pin.pin = null;
- continue;
- }
-
-
- if (i > routeSectionCursor + 1 && i < routeSectionCursor + maxPins) {
- if (forceUpdateThisPin) {
- pin.pin?.unpin();
- pin.pin = null;
- } else if (pin.pin != null) {
- continue;
- }
- var widgetPin =
- createPinWidget(pin, color, widget.destinationCoords[i]);
- pin.pin = widgetPin;
- } else {
- pin.pin?.unpin();
- pin.pin = null;
- }*/
-
- if (i == widget.routeSectionCursor ||
- i == widget.routeSectionCursor + 1) {
- var widgetPin =
- createPinWidget(pin, color, widget.destinationCoords[i]);
- pin.pin = widgetPin;
- }
+ markers.add(FlutterMap.Marker(
+ point: LatLng(pin.coords.lattitude, pin.coords.longitude),
+ width: 80,
+ height: 34,
+ builder: (ctx) => createPin(pin, color,
+ isDoublePlannedAddress: pin.isDoublePlannedAddress)));
}
+
+ setState(() {});
}
}
diff --git a/lib/pages/navigation_page.dart b/lib/pages/navigation_page.dart
index 0f8b454..7c7bcd7 100644
--- a/lib/pages/navigation_page.dart
+++ b/lib/pages/navigation_page.dart
@@ -136,7 +136,7 @@ class _NavigationPageState extends State<NavigationPage> {
@override
Widget build(BuildContext context) {
if (navigation == null) {
- navigation = HERENavigation(route: widget.route);
+ navigation = OpenstreetmapNavigation(route: widget.route);
}
return WillPopScope(