Google Maps Flutter Custom marker not showing

Viewed 723

Because I had problems with Google Maps and Bitmap descriptor, I tried to preload the icons before loading the Map, like this:

Widget preloadPinsAndLoadSearchMap() {
  final config = ImageConfiguration(size: Size(48, 48));
  final activePin = 'assets/active-pin.png';
  final neutralPin = 'assets/neutral-pin.png';
  final home = 'assets/home-map.png';
  return FutureBuilder(
    future: Future.wait([
      BitmapDescriptor.fromAssetImage(config, activePin),
      BitmapDescriptor.fromAssetImage(config, neutralPin),
      BitmapDescriptor.fromAssetImage(config, home),
    ]),
    builder: (context, snapshot) {
      if (snapshot.connectionState == ConnectionState.done) {
        return SearchMap(pins: snapshot.data);
      } else {
        return Container();
      }
    },
  );
}

And the SearchMap and the Markers:

// Each Marker is produced like this:
Marker createMarker(dynamic seller) {
  return Marker(
    markerId: MarkerId(seller.id),
    position: LatLng(seller.latitude, seller.longitude),
    onTap: () => onMarkerTap(seller),
    // The icons are coming from the FutureBuilder.
    icon: isActive ? activePin : neutralPin,
  );
}

class SearchMap extends StatelessWidget {
  Widget build(BuildContext context) {
    final paris = initialPosition ??
      LatLng(parisPosition.latitude, parisPosition.longitude);
    return GoogleMap(
      myLocationButtonEnabled: false,
      zoomControlsEnabled: false,
      compassEnabled: false,
      mapType: MapType.normal,
      markers: markers,
      initialCameraPosition: CameraPosition(target: paris, zoom: 15),
      onMapCreated: onMapCreated,
      onTap: (obj) => print(obj),
    );
  }
}

Happily it works on my devices very well, both iOS and Android. But on my reviewers devices, the icons are just not showing up. Is it a correct way to handle BitmapDescriptor? Maybe I’m wrong on the way to do this?

0 Answers
Related