mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-01-22 16:56:19 +01:00
Replace implementation type with our type in map
This commit is contained in:
parent
92286372cb
commit
c13e023d87
10 changed files with 41 additions and 30 deletions
|
@ -2,7 +2,6 @@ library np_gps_map;
|
|||
|
||||
export 'src/gps_map.dart';
|
||||
export 'src/interactive_map.dart';
|
||||
export 'src/map_coord.dart';
|
||||
export 'src/place_picker.dart';
|
||||
export 'src/type.dart';
|
||||
export 'src/util.dart' show initGpsMap;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:np_gps_map/src/map_coord.dart';
|
||||
import 'package:np_gps_map/src/native/google_gps_map.dart'
|
||||
if (dart.library.html) 'package:np_gps_map/src/web/google_gps_map.dart';
|
||||
import 'package:np_gps_map/src/osm_gps_map.dart';
|
||||
import 'package:np_gps_map/src/type.dart';
|
||||
import 'package:np_gps_map/src/util.dart';
|
||||
import 'package:np_platform_util/np_platform_util.dart';
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
|
|||
import 'package:np_gps_map/src/gps_map.dart';
|
||||
import 'package:np_gps_map/src/interactive_map/google.dart';
|
||||
import 'package:np_gps_map/src/interactive_map/osm.dart';
|
||||
import 'package:np_gps_map/src/map_coord.dart';
|
||||
import 'package:np_gps_map/src/type.dart';
|
||||
import 'package:np_gps_map/src/util.dart';
|
||||
import 'package:np_platform_util/np_platform_util.dart';
|
||||
|
|
|
@ -3,10 +3,8 @@ import 'dart:async';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:google_maps_cluster_manager/google_maps_cluster_manager.dart';
|
||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
import 'package:latlong2/latlong.dart' as type;
|
||||
import 'package:np_common/object_util.dart';
|
||||
import 'package:np_gps_map/src/interactive_map.dart';
|
||||
import 'package:np_gps_map/src/map_coord.dart';
|
||||
import 'package:np_gps_map/src/type.dart' as type;
|
||||
|
||||
typedef GoogleClusterBuilder = FutureOr<BitmapDescriptor> Function(
|
||||
|
@ -28,7 +26,7 @@ class GoogleInteractiveMap extends StatefulWidget {
|
|||
@override
|
||||
State<StatefulWidget> createState() => _GoogleInteractiveMapState();
|
||||
|
||||
final MapCoord? initialPosition;
|
||||
final type.MapCoord? initialPosition;
|
||||
final double? initialZoom;
|
||||
final List<DataPoint>? dataPoints;
|
||||
final GoogleClusterBuilder? clusterBuilder;
|
||||
|
@ -64,10 +62,7 @@ class _GoogleInteractiveMapState extends State<GoogleInteractiveMap> {
|
|||
onCameraMove: (position) {
|
||||
_clusterManager.onCameraMove(position);
|
||||
widget.onCameraMove?.call(type.CameraPosition(
|
||||
center: type.LatLng(
|
||||
position.target.latitude,
|
||||
position.target.longitude,
|
||||
),
|
||||
center: position.target.toMapCoord(),
|
||||
zoom: position.zoom,
|
||||
rotation: position.bearing,
|
||||
));
|
||||
|
@ -134,7 +129,7 @@ class _ParentController implements InteractiveMapController {
|
|||
const _ParentController(this.controller);
|
||||
|
||||
@override
|
||||
void setPosition(MapCoord position) {
|
||||
void setPosition(type.MapCoord position) {
|
||||
controller
|
||||
.animateCamera(CameraUpdate.newLatLngZoom(position.toLatLng(), 10));
|
||||
}
|
||||
|
@ -142,7 +137,7 @@ class _ParentController implements InteractiveMapController {
|
|||
final GoogleMapController controller;
|
||||
}
|
||||
|
||||
extension on MapCoord {
|
||||
extension on type.MapCoord {
|
||||
LatLng toLatLng() => LatLng(latitude, longitude);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@ import 'package:flutter_map_marker_cluster/flutter_map_marker_cluster.dart';
|
|||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:np_common/object_util.dart';
|
||||
import 'package:np_gps_map/src/interactive_map.dart';
|
||||
import 'package:np_gps_map/src/map_coord.dart';
|
||||
import 'package:np_gps_map/src/type.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
|
||||
|
@ -51,7 +50,7 @@ class _OsmInteractiveMapState extends State<OsmInteractiveMap> {
|
|||
_subscriptions.add(_controller.mapEventStream.listen((ev) {
|
||||
_mapRotationRadSubject.add(ev.camera.rotationRad);
|
||||
widget.onCameraMove?.call(CameraPosition(
|
||||
center: ev.camera.center,
|
||||
center: ev.camera.center.toMapCoord(),
|
||||
zoom: ev.camera.zoom,
|
||||
rotation: (360 - ev.camera.rotation) % 360,
|
||||
));
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
class MapCoord {
|
||||
const MapCoord(this.latitude, this.longitude);
|
||||
|
||||
@override
|
||||
String toString() => "MapCoord {latitude: $latitude, longitude: $longitude}";
|
||||
|
||||
final double latitude;
|
||||
final double longitude;
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
import 'package:np_gps_map/src/map_coord.dart';
|
||||
import 'package:np_gps_map/src/type.dart' as type;
|
||||
|
||||
class GoogleGpsMap extends StatelessWidget {
|
||||
const GoogleGpsMap({
|
||||
|
@ -46,7 +46,7 @@ class GoogleGpsMap extends StatelessWidget {
|
|||
);
|
||||
}
|
||||
|
||||
final MapCoord center;
|
||||
final type.MapCoord center;
|
||||
final double zoom;
|
||||
final VoidCallback? onTap;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_map/flutter_map.dart';
|
||||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:np_gps_map/src/map_coord.dart';
|
||||
import 'package:np_gps_map/src/type.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
class OsmGpsMap extends StatelessWidget {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:np_gps_map/src/gps_map.dart';
|
||||
import 'package:np_gps_map/src/interactive_map.dart';
|
||||
import 'package:np_gps_map/src/map_coord.dart';
|
||||
import 'package:np_gps_map/src/type.dart';
|
||||
|
||||
class PlacePickerView extends StatelessWidget {
|
||||
|
|
|
@ -1,17 +1,46 @@
|
|||
import 'package:equatable/equatable.dart';
|
||||
import 'package:google_maps_flutter/google_maps_flutter.dart' as gmap;
|
||||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:np_common/type.dart';
|
||||
|
||||
/// A pair of latitude and longitude coordinates, stored as degrees
|
||||
class MapCoord {
|
||||
const MapCoord(this.latitude, this.longitude);
|
||||
|
||||
MapCoord.fromJson(JsonObj json)
|
||||
: latitude = json["lat"],
|
||||
longitude = json["lng"];
|
||||
|
||||
@override
|
||||
String toString() => "MapCoord {latitude: $latitude, longitude: $longitude}";
|
||||
|
||||
JsonObj toJson() => {
|
||||
"lat": latitude,
|
||||
"lng": longitude,
|
||||
};
|
||||
|
||||
final double latitude;
|
||||
final double longitude;
|
||||
}
|
||||
|
||||
extension GLatLngExtension on gmap.LatLng {
|
||||
MapCoord toMapCoord() => MapCoord(latitude, longitude);
|
||||
}
|
||||
|
||||
extension LatLngExtension on LatLng {
|
||||
MapCoord toMapCoord() => MapCoord(latitude, longitude);
|
||||
}
|
||||
|
||||
class CameraPosition with EquatableMixin {
|
||||
const CameraPosition({
|
||||
required this.center,
|
||||
required this.zoom,
|
||||
required this.rotation,
|
||||
this.rotation = 0,
|
||||
});
|
||||
|
||||
factory CameraPosition.fromJson(JsonObj json) {
|
||||
return CameraPosition(
|
||||
center: LatLng.fromJson(json["center"]),
|
||||
center: MapCoord.fromJson(json["center"]),
|
||||
zoom: json["zoom"],
|
||||
rotation: json["rotation"],
|
||||
);
|
||||
|
@ -35,7 +64,7 @@ class CameraPosition with EquatableMixin {
|
|||
@override
|
||||
List<Object?> get props => [center, zoom, rotation];
|
||||
|
||||
final LatLng center;
|
||||
final MapCoord center;
|
||||
final double zoom;
|
||||
// The camera's bearing in degrees, measured clockwise from north.
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue