luckyhandler
luckyhandler

Reputation: 11329

How to add markers on the map

I'm using the Flutter SDK Version 4.3.1.0.

I would like to display markers on the map and I found that this would be possible via:

final String positionMarkerPath = 'assets/markers/marker.png';

mapScene.addMapMarker(
  MapMarker(
    geoCoordinates,
    MapImage.withFilePathAndWidthAndHeight(positionMarkerPath, 32, 32)));

When using this method I constantly get errors

E/CL_geoviz( 9632): [ERROR] CL_geoviz - Can't find image 'file:///assets/markers/marker.png' in asset repository.
E/CL_geoviz( 9632): [ERROR] CL_geoviz - Can't load image file 'file:///assets/markers/marker.png' to memory stream.

Now, the method MapImage.withFilePathAndWidthAndHeight is documented as follows in the SDK:

Creates a new map image from the provided path to the SVG Tiny image which is weird because I thought that Flutter doesn't even support SVG out of the box. Could that be an issue? Or what am I doing wrong here?

I tried using an SVG, Vector Drawable and a png, tried fully qualifying the path, nothing works

Upvotes: 0

Views: 241

Answers (1)

Nusatad
Nusatad

Reputation: 3551

The documentation for MapImage.withFilePathAndWidthAndHeight says that it is only for SVG Tiny format. But it currently does not seem to work as the HERE SDK for Flutter is still in Beta state.

You can instead load and add PNG files as marker like this:

ByteData data = await rootBundle.load('assets/some_image.png');
MapImage image = MapImage.withPixelDataAndImageFormat(Uint8List.view(data.buffer), ImageFormat.png);
MapMarker marker = MapMarker(geoCoordinates, image);
hereMapController.mapScene.addMapMarker(marker);

The assets directory needs to be specified in the pubspec.yaml.

Upvotes: 1

Related Questions