diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 4db0984..1c52108 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -37,5 +37,7 @@
+
diff --git a/lib/Components/Map/mapView.dart b/lib/Components/Map/mapView.dart
new file mode 100644
index 0000000..308a2cf
--- /dev/null
+++ b/lib/Components/Map/mapView.dart
@@ -0,0 +1,225 @@
+import 'dart:async';
+import 'package:flutter/material.dart';
+import 'package:google_maps_flutter/google_maps_flutter.dart';
+import 'package:tablet_app/Components/Map/markerInfo.dart';
+
+Set markers = {};
+List markersList = List();
+
+class MarkersModel {
+ int id;
+ String name;
+ String description;
+ String latitude;
+ String longitude;
+ String image;
+ MarkersModel(
+ this.id,
+ this.name,
+ this.description,
+ this.latitude,
+ this.longitude,
+ this.image);
+
+// you can use this model with your backend as well :
+
+/* factory MarkersModel.fromJson(Map json) => MarkersModel(
+ id: json['id'],
+ name: json['name'],
+ description: json['description'],
+ latitude: json['latitude'],
+ longitude: json['longitude'],
+ image: json["image"]);
+*/
+}
+
+
+class MapViewWidget extends StatefulWidget {
+ MapViewWidget();
+
+ @override
+ _MapViewWidget createState() => _MapViewWidget();
+}
+
+class _MapViewWidget extends State {
+
+ Completer _controller = Completer();
+
+ var markerSelected = "NULL";
+
+ void getMarkers() async {
+ /*final Uint8List userMarkerIcon =
+ await getBytesFromAsset('assets/normalMarker.png', 75);
+
+ final Uint8List selectedMarkerIcon =
+ await getBytesFromAsset('assets/selectedMarker.png', 100);*/
+
+ markers = {};
+
+ markersList.add(MarkersModel(
+ 1,
+ "La Grande Poste",
+ "The Algiers central post office is an office building for postal services located at Alger Centre municipality in Algiers, Algeria",
+ "36.752887",
+ "3.042048",
+ "https://www.dzbreaking.com/wp-content/uploads/2018/03/2000.png"));
+ markersList.add(MarkersModel(
+ 2,
+ "Mosquee Ketchaoua",
+ "The Ketchaoua Mosque is a mosque in Algiers, the capital of Algeria. It was built during the Ottoman rule in the 17th century and is located at the foot of the Casbah, which is a UNESCO World Heritage Site",
+ "36.7850",
+ "3.0608",
+ "https://ttnotes.com/images/makam-echahid-algiers.jpg"));
+ markersList.add(MarkersModel(
+ 3,
+ "The shrine of the martyr",
+ "The Maqam Echahid is a concrete monument commemorating the Algerian war for independence. The monument was opened in 1982 on the 20th anniversary of Algeria's independence",
+ "36.7456",
+ "3.0698",
+ "https://www.airfrance.co.uk/GB/common/common/img/tbaf/news/ALG/la-mosquee-ketchaoua-l-histoire-avec-un-grand-h/ALG-la-mosquee-ketchaoua-l-histoire-avec-un-grand-h-2_1-1024x512.jpg"));
+
+
+ markersList.forEach((element) {
+ if (element.latitude != null && element.longitude != null) {
+ markers.add(Marker(
+ draggable: false,
+ markerId: MarkerId(element.latitude + element.longitude),
+ position: LatLng(
+ double.tryParse(element.latitude),
+ double.tryParse(element.longitude),
+ ),
+ icon: BitmapDescriptor.defaultMarkerWithHue(
+ BitmapDescriptor.hueYellow,
+ ),
+ onTap: () {
+ print('hello you 1');
+ setState(() {
+ markerSelected = element.latitude + element.longitude;
+ });
+ },
+ infoWindow: InfoWindow(title: element.name)));
+ }
+ });
+ }
+
+ @override
+ void initState() {
+ getMarkers();
+ print('coucou marlers');
+ print(markers);
+ super.initState();
+ }
+
+ @override
+ void dispose() {
+ // TODO: implement dispose
+ super.dispose();
+ }
+
+ static final CameraPosition _kGooglePlex = CameraPosition(
+ target: LatLng(50.4167344, 4.879165),
+ zoom: 0.4746,
+ );
+
+ static final CameraPosition _kLake = CameraPosition(
+ bearing: 192.8334901395799,
+ target: LatLng(37.43296265331129, -122.08832357078792),
+ tilt: 59.440717697143555,
+ zoom: 59.151926040649414);
+
+ @override
+ Widget build(BuildContext context) {
+ return new Scaffold(
+ body: Stack(
+ children: [
+ GoogleMap(
+ mapType: MapType.hybrid,
+ initialCameraPosition: _kGooglePlex,
+ onMapCreated: (GoogleMapController controller) {
+ _controller.complete(controller);
+ },
+ markers: markers,
+ onTap: (LatLng location) {
+ setState(() {
+ print(location);
+ });
+ },
+ ),
+ MarkerInfoWidget(title: markerSelected,
+ description: 'DESCRIPTION',
+ text: 'TEXTE kmljfdkmj dfsmlkj dfmlkj mlkj df')
+ ]
+ ),
+ floatingActionButton: FloatingActionButton.extended(
+ onPressed: _goToTheLake,
+ label: Text('To the lake!'),
+ icon: Icon(Icons.directions_boat),
+ ),
+ );
+ }
+
+ void _onMarkerTapped(Marker marker) {
+
+ }
+
+ Future _goToTheLake() async {
+ final GoogleMapController controller = await _controller.future;
+ controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
+ }
+
+ Marker newyork1Marker = Marker(
+ markerId: MarkerId('newyork1'),
+ position: LatLng(40.742451, -74.005959),
+ infoWindow: InfoWindow(title: 'Los Tacos', snippet: 'lhlkjsdf lksdfk jdsf kjdfs lkjfds lkjdflkjdjdsf ljfds ljdfslkj fdsjfdslkjfdsmkfdsmlk dfslkjh dfjdfskdsf dfsmkj fdskj df'),
+ icon: BitmapDescriptor.defaultMarkerWithHue(
+ BitmapDescriptor.hueViolet,
+ ),
+ );
+
+ Marker gramercyMarker = Marker(
+ markerId: MarkerId('asticot'),
+ position: LatLng(20.738380, -43.988426),
+ infoWindow: InfoWindow(title: 'Coucou asticot'),
+ icon: BitmapDescriptor.defaultMarkerWithHue(
+ BitmapDescriptor.hueGreen,
+ ),
+ );
+
+ Marker bernardinMarker = Marker(
+ markerId: MarkerId('bernardin'),
+ position: LatLng(40.761421, -73.981667),
+ infoWindow: InfoWindow(title: 'Le Bernardin'),
+ icon: BitmapDescriptor.defaultMarkerWithHue(
+ BitmapDescriptor.hueViolet,
+ ),
+ );
+ Marker blueMarker = Marker(
+ markerId: MarkerId('bluehill'),
+ position: LatLng(40.732128, -73.999619),
+ infoWindow: InfoWindow(title: 'Blue Hill'),
+ icon: BitmapDescriptor.defaultMarkerWithHue(
+ BitmapDescriptor.hueViolet,
+ ),
+ );
+
+//New York Marker
+
+
+ Marker newyork2Marker = Marker(
+ markerId: MarkerId('newyork2'),
+ position: LatLng(40.729640, -73.983510),
+ infoWindow: InfoWindow(title: 'Tree Bistro'),
+ icon: BitmapDescriptor.defaultMarkerWithHue(
+ BitmapDescriptor.hueViolet,
+ ),
+ );
+ Marker newyork3Marker = Marker(
+ markerId: MarkerId('newyork3'),
+ position: LatLng(40.719109, -74.000183),
+ infoWindow: InfoWindow(title: 'Le Coucou'),
+ icon: BitmapDescriptor.defaultMarkerWithHue(
+ BitmapDescriptor.hueViolet,
+ ),
+ );
+}
+
diff --git a/lib/Components/Map/markerInfo.dart b/lib/Components/Map/markerInfo.dart
new file mode 100644
index 0000000..7dd1084
--- /dev/null
+++ b/lib/Components/Map/markerInfo.dart
@@ -0,0 +1,64 @@
+import 'dart:async';
+import 'package:flutter/material.dart';
+
+import '../../constants.dart';
+
+class MarkerInfoWidget extends StatefulWidget {
+ final String title;
+ final String description;
+ final String text;
+ MarkerInfoWidget({this.title, this.description, this.text});
+
+ @override
+ _MarkerInfoWidget createState() => _MarkerInfoWidget();
+}
+
+class _MarkerInfoWidget extends State {
+
+ @override
+ Widget build(BuildContext context) {
+ Size size = MediaQuery.of(context).size;
+ return new AnimatedPositioned(
+ duration: const Duration(milliseconds: 1500),
+ curve: Curves.easeInOutSine,
+ right: 160, // TODO
+ top: 150, // TODO
+ child: Container(
+ width: size.width * 0.29,
+ height: size.height * 0.6,
+ margin: EdgeInsets.symmetric(vertical: 3, horizontal: 4),
+ decoration: BoxDecoration(
+ color: kBackgroundLight,
+ shape: BoxShape.rectangle,
+ borderRadius: BorderRadius.circular(10.0),
+ boxShadow: [
+ BoxShadow(
+ color: kBackgroundSecondGrey,
+ spreadRadius: 0.5,
+ blurRadius: 1.1,
+ offset: Offset(0, 1.1), // changes position of shadow
+ ),
+ ],
+ ),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ Text(widget.title),
+ Text(widget.description),
+ Text(widget.text),
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ Text('Sub menu 1'),
+ Text('Sub menu 2'),
+ ]
+ )
+ ]
+ ),
+ )
+ );
+ }
+}
+
diff --git a/lib/constants.dart b/lib/constants.dart
index 8535612..47cbda6 100644
--- a/lib/constants.dart
+++ b/lib/constants.dart
@@ -12,6 +12,8 @@ const kTextRed = Color(0xFFba0505);
const kBackgroundGrey = Color(0xFFb5b7b9);
const kBackgroundSecondGrey = Color(0xFF5b5b63);
+const kBackgroundLight = Color(0xfff3f3f3);
+
/*
const kTextStyle = TextStyle(
fontSize: 23,
diff --git a/lib/main.dart b/lib/main.dart
index 71fe155..4b892ad 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,10 +1,12 @@
import 'dart:async';
+import 'dart:collection';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'Components/custom_clipper.dart';
+import 'Components/Map/mapView.dart';
import 'Components/webView.dart';
import 'constants.dart';
@@ -284,11 +286,11 @@ class _MyHomePageState extends State with TickerProviderStateMixin
child: Container(
width: size.width,
height: size.height,
- child: FutureBuilder(
+ child: MapViewWidget()/*FutureBuilder(
future: _url,
builder: (BuildContext context, AsyncSnapshot snapshot) => snapshot.hasData
? WebViewWidget(url: snapshot.data,)
- : CircularProgressIndicator()),
+ : CircularProgressIndicator()),*/
)),
),
),
diff --git a/pubspec.lock b/pubspec.lock
index 37a4f1d..6e2a3d3 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -62,11 +62,32 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
+ flutter_plugin_android_lifecycle:
+ dependency: transitive
+ description:
+ name: flutter_plugin_android_lifecycle
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.11"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
+ google_maps_flutter:
+ dependency: "direct main"
+ description:
+ name: google_maps_flutter
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.1"
+ google_maps_flutter_platform_interface:
+ dependency: transitive
+ description:
+ name: google_maps_flutter_platform_interface
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.0"
matcher:
dependency: transitive
description:
@@ -88,6 +109,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0-nullsafety.2"
+ plugin_platform_interface:
+ dependency: transitive
+ description:
+ name: plugin_platform_interface
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.3"
sky_engine:
dependency: transitive
description: flutter
@@ -114,6 +142,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0-nullsafety.2"
+ stream_transform:
+ dependency: transitive
+ description:
+ name: stream_transform
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.2.0"
string_scanner:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index c8087f3..6512e38 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -24,6 +24,7 @@ dependencies:
flutter:
sdk: flutter
webview_flutter: ^1.0.7
+ google_maps_flutter: ^1.1.1
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.