Пользовательские маркеры с плагином Google Maps Flutter - PullRequest
0 голосов
/ 01 октября 2018

Есть ли способ отобразить пользовательские маркеры с помощью официального Flutter плагина Google Maps на карте?Не могу найти способ сделать это, основываясь на документации.

Ответы [ 5 ]

0 голосов
/ 07 августа 2019

** Попробуйте,

_createMarkerImageFromAsset("assets/locationMarker.png");

 Future <BitmapDescriptor> _createMarkerImageFromAsset(String iconPath) async {
    ImageConfiguration configuration = ImageConfiguration();
     bitmapImage = await BitmapDescriptor.fromAssetImage(
        configuration,iconPath);
    return bitmapImage;
  }

установить растровое изображение на маркер

 Marker(
        markerId: MarkerId('value'),
        icon: bitmapImage,
        position: LatLng(),
       );
0 голосов
/ 23 июля 2019

На самом деле работает только закомментированный код репозитория примера google_maps ... потому что в флаттере SDK есть некоторые изменения в API (ну в настоящее время я в 1.78 + hotfix4)

Итак,это та же функция, что и ответ kapil с некоторыми изменениями в API, вам нужно всего лишь изменить строку 'assets / red_square.png' для вашего маршрута изображения.

   Future<BitmapDescriptor> _getAssetIcon(BuildContext context) async {
   final Completer<BitmapDescriptor> bitmapIcon =
       Completer<BitmapDescriptor>();
   final ImageConfiguration config = createLocalImageConfiguration(context);

   const AssetImage('assets/red_square.png')
       .resolve(config)
       .addListener(ImageStreamListener((ImageInfo image, bool sync) async {
     final ByteData bytes =
         await image.image.toByteData(format: ImageByteFormat.png);
     final BitmapDescriptor bitmap =
         BitmapDescriptor.fromBytes(bytes.buffer.asUint8List());
     bitmapIcon.complete(bitmap);
   }));

   return await bitmapIcon.future;
 }

Пробали, если вы создаете переменную BitMapDescriptorВам нужно только вызвать эту функцию в первый раз, прежде чем добавлять маркеры, но не забывайте «ждать».

Также рекомендуется поместить еще 2 изображения большего размера в папки с именами (2.0x и 3.0x)Вы можете увидеть разрешение в примере изображений

Не забудьте раскомментировать "/ assets" в вашем pubspec.yaml

0 голосов
/ 18 февраля 2019

Изменение значка маркера

MarkerOptions(
position: LatLng(41.4219999, 63.0862462),
infoWindowText: InfoWindowText("Yur Title", "Your Content"),
icon: BitmapDescriptor.fromAsset('images/your_image.png',),
),
0 голосов
/ 25 мая 2019

согласно новому плагину BitmapDescriptor.fromAsset ("images / restaurant.png") не работает должным образом, поэтому назовите эту ссылку и найдите мое решение.

Future<BitmapDescriptor> _getAssetIcon(BuildContext context) async {
final Completer<BitmapDescriptor> bitmapIcon =
    Completer<BitmapDescriptor>();
final ImageConfiguration config = createLocalImageConfiguration(context);

const AssetImage('assets/red_square.png')
    .resolve(config)
    .addListener((ImageInfo image, bool sync) async {
  final ByteData bytes =
      await image.image.toByteData(format: ImageByteFormat.png);
  final BitmapDescriptor bitmap =
      BitmapDescriptor.fromBytes(bytes.buffer.asUint8List());
  bitmapIcon.complete(bitmap);
});

return await bitmapIcon.future;}

и используйте этувот так

void _add(LatLng position,String address) async{
final MarkerId markerId = MarkerId('1');
BitmapDescriptor markericon = await _getAssetIcon(context);

// creating a new MARKER
final Marker marker = Marker(
  markerId: markerId,
  position: position,
  infoWindow: InfoWindow(title: address, snippet: 'go here'),
  icon: markericon
);

setState(() {
  _markers[markerId] = marker;
});}

надеюсь, что это сработает для вас.

0 голосов
/ 28 ноября 2018

Я использую:

controller.addMarker(MarkerOptions(
  icon: BitmapDescriptor.fromAsset("images/restaurant.png"),
  position: LatLng(40.017870, -105.278350),
));

Он отлично работает на Android, но не работает на iOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...