Ajout de openStreetMap

pull/4/head
Enzo 1 year ago
parent b06c895198
commit 52accae66e

@ -3,6 +3,7 @@ import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:smartfit_app_mobile/common_widget/graph/graph.dart'; import 'package:smartfit_app_mobile/common_widget/graph/graph.dart';
import 'package:smartfit_app_mobile/modele/activity.dart'; import 'package:smartfit_app_mobile/modele/activity.dart';
import 'package:smartfit_app_mobile/modele/manager_file.dart'; import 'package:smartfit_app_mobile/modele/manager_file.dart';
import 'package:latlong2/latlong.dart' as osm;
class ManagerSelectedActivity { class ManagerSelectedActivity {
final ManagerFile _managerFile = ManagerFile(); final ManagerFile _managerFile = ManagerFile();
@ -519,4 +520,28 @@ class ManagerSelectedActivity {
} }
return list; return list;
} }
List<osm.LatLng> getPositionOSM() {
List<osm.LatLng> list = List.empty(growable: true);
for (int i = 0; i < activitySelected[0].contentActivity.length; i++) {
if (_notNull(
0,
i,
activitySelected[0]
.enteteCSV["Value_${_managerFile.fieldPositionLatitude}"]!) &&
_notNull(
0,
i,
activitySelected[0].enteteCSV[
"Value_${_managerFile.fieldPositionLongitude}"]!)) {
list.add(osm.LatLng(
activitySelected[0].contentActivity[i][activitySelected[0]
.enteteCSV["Value_${_managerFile.fieldPositionLatitude}"]!],
activitySelected[0].contentActivity[i][activitySelected[0]
.enteteCSV["Value_${_managerFile.fieldPositionLongitude}"]!]));
}
}
return list;
}
} }

@ -0,0 +1,43 @@
import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/view/map/mobile/mobile_my_map.dart';
import 'package:smartfit_app_mobile/view/map/my_map_osm.dart';
class ChoseMap extends StatefulWidget {
const ChoseMap({Key? key}) : super(key: key);
@override
State<ChoseMap> createState() => _ChoseMap();
}
class _ChoseMap extends State<ChoseMap> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: TColor.white,
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const MobileMyMaps()));
},
child: const Text("Use map with google map")),
TextButton(
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => const MyMapOSM()));
},
child: const Text("Use map with Open Street Map")),
const Text(
"Mettre une image la en mode une personne avec des jumelles")
],
)),
);
}
}

@ -20,11 +20,14 @@ class _MobileMyMaps extends State<MobileMyMaps> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
_polylines = MapUtil().initPolines(context, 10, TColor.primaryColor1); _polylines = MapUtil().initPolines(context, 10, TColor.primaryColor1);
_cameraPosition = _cameraPosition =
CameraPosition(target: _polylines.first.points.first, zoom: 18); CameraPosition(target: _polylines.first.points.first, zoom: 15);
return Scaffold( return Scaffold(
body: _getMap(), appBar: AppBar(
); title: const Text("Carte Google Map "),
backgroundColor: TColor.primaryColor1,
),
body: _getMap());
} }
Widget _getMap() { Widget _getMap() {

@ -4,7 +4,8 @@ import 'package:responsive_builder/responsive_builder.dart';
import 'package:smartfit_app_mobile/modele/activity.dart'; import 'package:smartfit_app_mobile/modele/activity.dart';
import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/view/home/no_activity_view.dart'; import 'package:smartfit_app_mobile/view/home/no_activity_view.dart';
import 'package:smartfit_app_mobile/view/map/mobile/mobile_my_map.dart'; import 'package:smartfit_app_mobile/view/map/chose_map.dart';
import 'package:smartfit_app_mobile/view/map/my_map_osm.dart';
import 'package:smartfit_app_mobile/view/map/web/web_my_map.dart'; import 'package:smartfit_app_mobile/view/map/web/web_my_map.dart';
class MyMap extends StatefulWidget { class MyMap extends StatefulWidget {
@ -35,8 +36,8 @@ class _MyMapState extends State<MyMap> {
); );
} }
return ScreenTypeLayout.builder( return ScreenTypeLayout.builder(
mobile: (_) => const MobileMyMaps(), mobile: (_) => const ChoseMap(),
desktop: (_) => const WebMyMaps(), desktop: (_) => const ChoseMap(),
); );
} }
} }

@ -0,0 +1,47 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:latlong2/latlong.dart' as osm;
import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/modele/user.dart';
class MyMapOSM extends StatefulWidget {
const MyMapOSM({Key? key}) : super(key: key);
@override
State<MyMapOSM> createState() => _MyMapOSM();
}
class _MyMapOSM extends State<MyMapOSM> {
final controller = MapController();
@override
Widget build(BuildContext context) {
List<osm.LatLng> listPolynines =
context.watch<User>().managerSelectedActivity.getPositionOSM();
return Scaffold(
appBar: AppBar(
title: const Text("Carte Open Street Map "),
backgroundColor: TColor.primaryColor1,
),
body: FlutterMap(
options: MapOptions(center: listPolynines.first),
children: [
TileLayer(
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
),
PolylineLayer(
polylines: [
Polyline(
points: listPolynines,
color: TColor.primaryColor1,
strokeWidth: 5.0,
),
],
),
],
),
);
}
}

@ -1,117 +0,0 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:location/location.dart';
class MyMap extends StatefulWidget {
const MyMap({ Key? key }) : super(key: key);
@override
State<MyMap> createState() => _MyMapState();
}
class _MyMapState extends State<MyMap> {
Completer<GoogleMapController> _googleMapController = Completer();
CameraPosition? _cameraPosition;
Location? _location;
LocationData? _currentLocation;
@override
void initState() {
_init();
super.initState();
}
_init() async {
_location = Location();
_cameraPosition = CameraPosition(
target: LatLng(0, 0), // this is just the example lat and lng for initializing
zoom: 15
);
_initLocation();
}
//function to listen when we move position
_initLocation() {
//use this to go to current location instead
_location?.getLocation().then((location) {
_currentLocation = location;
});
_location?.onLocationChanged.listen((newLocation) {
_currentLocation = newLocation;
moveToPosition(LatLng(_currentLocation?.latitude ?? 0, _currentLocation?.longitude ?? 0));
});
}
moveToPosition(LatLng latLng) async {
GoogleMapController mapController = await _googleMapController.future;
mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: latLng,
zoom: 15
)
)
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _buildBody(),
);
}
Widget _buildBody() {
return _getMap();
}
Widget _getMarker() {
return Container(
width: 40,
height: 40,
padding: EdgeInsets.all(2),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(100),
boxShadow: [
BoxShadow(
color: Colors.grey,
offset: Offset(0,3),
spreadRadius: 4,
blurRadius: 6
)
]
),
child: ClipOval(child: Image.asset("assets/img/u1.png")),
);
}
Widget _getMap() {
return Stack(
children: [
GoogleMap(
initialCameraPosition: _cameraPosition!,
mapType: MapType.normal,
onMapCreated: (GoogleMapController controller) {
// now we need a variable to get the controller of google map
if (!_googleMapController.isCompleted) {
_googleMapController.complete(controller);
}
},
),
Positioned.fill(
child: Align(
alignment: Alignment.center,
child: _getMarker()
)
)
],
);
}
}

@ -21,11 +21,14 @@ class _WebMyMaps extends State<WebMyMaps> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
_polylines = MapUtil().initPolines(context, 10, TColor.primaryColor1); _polylines = MapUtil().initPolines(context, 10, TColor.primaryColor1);
_cameraPosition = _cameraPosition =
CameraPosition(target: _polylines.first.points.first, zoom: 18); CameraPosition(target: _polylines.first.points.first, zoom: 5);
return Scaffold( return Scaffold(
body: _getMap(), appBar: AppBar(
); title: const Text("Carte Google Map "),
backgroundColor: TColor.primaryColor1,
),
body: _getMap());
} }
Widget _getMap() { Widget _getMap() {

@ -57,6 +57,8 @@ dependencies:
crypto: ^3.0.3 crypto: ^3.0.3
responsive_builder: ^0.7.0 responsive_builder: ^0.7.0
universal_html: ^2.2.4 universal_html: ^2.2.4
flutter_map: ^5.0.0
latlong2: ^0.9.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

Loading…
Cancel
Save