import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_map_location_marker/flutter_map_location_marker.dart';
import 'package:flutter_map_polygon_editor/polygon_editor.dart';
import 'package:get/get.dart';
import 'package:latlong2/latlong.dart';
import 'package:terepi_seged/pages/field_trip/presentations/controllers/field_trip_controller.dart';
import 'package:flutter/material.dart';

class FieldTripView extends GetView<FieldTripController> {
  const FieldTripView({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomInset: false,
      extendBody: true,
      appBar: AppBar(
          title: const Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text('Terepbejárás'),
        ],
      )),
      body: Column(
        children: [
          Expanded(
              child: Stack(children: [
            Obx(() => controller.mapIsInitialized.value
                ? FlutterMap(
                    mapController: controller.mapController,
                    options: controller.mapOptions,
                    children: [
                      TileLayer(
                        urlTemplate:
                            'http://{s}.google.com/vt/lyrs=s,h&x={x}&y={y}&z={z}',
                        subdomains: const ['mt0', 'mt1', 'mt2', 'mt3'],
                        maxNativeZoom: 18,
                      ),
                      CurrentLocationLayer(
                        alignPositionOnUpdate: AlignOnUpdate.once,
                      ),
                      Obx(() =>
                          MarkerLayer(markers: [...controller.pointNotes])),
                      Obx(() => PolylineLayer(
                            polylines: [...controller.polylineNotes],
                          )),
                      Obx(() => PolygonLayer(
                            polygons: [...controller.polygonNotes],
                            useAltRendering: true,
                          )),
                      // PolylineLayer(polylines: [
                      //   Polyline(
                      //     points: [
                      //       const LatLng(47.65, 19.00),
                      //       const LatLng(47.64, 19.02),
                      //       const LatLng(47.69, 19.22),
                      //     ],
                      //     strokeWidth: 8,
                      //     color: const Color(0xFF60399E),
                      //     hitValue: (
                      //       title: 'Purple Line',
                      //       subtitle: 'Nothing really special here...',
                      //     ),
                      //   ),
                      // ]),
                      PolygonEditor(
                          controller: controller.polygonEditorController,
                          throttleDuration: Duration.zero)
                    ],
                  )
                : const Center(child: CircularProgressIndicator())),
            Positioned(
                bottom: 3,
                right: 3,
                child: Row(
                  children: [
                    IconButton.filled(
                        iconSize: 32,
                        onPressed: () {
                          controller.startPointEdition();
                        },
                        icon: const Icon(Icons.flag)),
                    IconButton.filled(
                        iconSize: 32,
                        onPressed: () {
                          controller.startPolylineEdition();
                        },
                        icon: const Icon(Icons.polyline)),
                    IconButton.filled(
                        iconSize: 32,
                        onPressed: () {
                          controller.startPolygonEdition();
                        },
                        icon: const Icon(Icons.border_outer)),
                    IconButton.filled(
                        iconSize: 32,
                        onPressed: () {
                          controller.saveNote();
                        },
                        icon: const Icon(Icons.done)),
                    IconButton.filled(
                        iconSize: 32,
                        onPressed: () {
                          controller.cancelEditorController();
                        },
                        icon: const Icon(Icons.cancel))
                  ],
                ))
          ]))
        ],
      ),
    );
  }
}
