Skip to content

Instantly share code, notes, and snippets.

@Oshinowo
Created February 6, 2022 16:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Oshinowo/f7ff12dc20aeb6a51436a57f7ca96eae to your computer and use it in GitHub Desktop.
Save Oshinowo/f7ff12dc20aeb6a51436a57f7ca96eae to your computer and use it in GitHub Desktop.
Add a zoom slider and a GeoPoint Button on the map
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
GoogleMapController? mapController;
CameraPosition _kInitialPosition = const CameraPosition(
target: LatLng(19.07, 72.87),
zoom: 15,
);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('GIS App'),
),
body: Stack(
children: [
GoogleMap(
initialCameraPosition: _kInitialPosition,
onMapCreated: _onMapCreated,
myLocationEnabled: true,
myLocationButtonEnabled: false,
mapType: MapType.hybrid,
compassEnabled: true,
onCameraMove: _updateCameraPosition,
// trafficEnabled: true,
zoomControlsEnabled: false,
),
Positioned(
bottom: 80,
right: 15,
child: ClipRRect(
borderRadius: BorderRadius.circular(
30.0,
),
child: Container(
width: 40.h,
height: 40.h,
color: Colors.greenAccent,
child: IconButton(
padding: const EdgeInsets.all(
3.0,
),
icon: const Icon(
Icons.pin_drop,
color: Colors.white,
),
onPressed: _addGeoPoint,
),
),
),
),
Positioned(
bottom: 70.0,
left: 15.0,
child: Slider(
inactiveColor: Colors.grey,
activeColor: Colors.greenAccent,
thumbColor: Colors.greenAccent,
min: 100.0,
max: 500.0,
divisions: 4,
value: radius.value,
label: 'Radius ${radius.value}km',
onChanged: _updateQuery,
),
),
],
),
);
}
void _onMapCreated(GoogleMapController controller) {
_startQuery();
setState(() {
mapController = controller;
});
}
void _updateCameraPosition(CameraPosition position) {
setState(() {
_kInitialPosition = position;
});
}
_updateQuery(value) {
final zoomMap = {
100.0: 12.0,
200.0: 10.0,
300.0: 7.0,
400.0: 6.0,
500.0: 5.0
};
final zoom = zoomMap[value];
mapController?.moveCamera(CameraUpdate.zoomTo(zoom!));
setState(() {
radius.add(value);
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment