Get started
Before you can try the sample code, you must configure your development environment. For more information, see Set up a Flutter project.
View the code
Dart
// Copyright 2025 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; /// Shows advanced options of markers. class CustomMarkerSample extends StatefulWidget { const CustomMarkerSample({super.key}); @override State<CustomMarkerSample> createState() => _CustomMarkerSampleState(); } class _CustomMarkerSampleState extends State<CustomMarkerSample> { late Marker _marker = Marker( markerId: MarkerId('my_marker'), // Start with the default Google Maps pin, except yellow. // (Note: Hue isn't supported on all platforms.) icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueYellow), onTap: _changeIcon, ); @override Widget build(BuildContext context) { return GoogleMap( initialCameraPosition: CameraPosition(target: LatLng(0, 0)), markers: {_marker}, ); } void _changeIcon() async { // Set up the image configuration for the new icon, including its size. final imageConfiguration = createLocalImageConfiguration( context, size: Size(42, 52), ); // Load the icon image from an asset. // Alternatively, you can create the icon with BitmapDescriptor.bytes(), // which allows loading from network or using a CustomPainter. final assetIcon = await BitmapDescriptor.asset( imageConfiguration, 'assets/icon_flutter.png', ); setState(() { // Modify the existing marker with the new icon and set its anchor // to center. _marker = _marker.copyWith( iconParam: assetIcon, anchorParam: const Offset(0.5, 0.5), ); }); } }
Next steps
View the complete set of samples on GitHub:
Alternatively, clone the full set of samples to run them locally by executing the following commands:
git clone -b flutter_samples https://github.com/googlemaps-samples/flutter-maps-samples.git
cd flutter-samples
flutter pub get