как показать изображение сети (также настроить это изображение) в качестве маркера на флаттере карты - PullRequest
1 голос
/ 13 февраля 2020

enter image description here

Я использую этот код, но это только для отображения сетевого изображения, но мне также нужно было настроить изображения, как это (я добавил демонстрационное изображение как выше).

ссылка- { ссылка }

Код -

import 'package:http/http.dart' as http;

          var iconurl ="your url";
          var dataBytes;
          var request = await http.get(iconurl);
          var bytes = await request.bodyBytes;

          setState(() {
            dataBytes = bytes;
          });

          LatLng _lastMapPositionPoints = LatLng(
              double.parse("22.7339"),
              double.parse("75.8499"));

            _markers.add(Marker(
              icon: BitmapDescriptor.fromBytes(dataBytes.buffer.asUint8List()),
              markerId: MarkerId(_lastMapPositionPoints.toString()),
              position: _lastMapPositionPoints,
              infoWindow: InfoWindow(
                title: "Delivery Point",
                snippet:
                "My Position",
              ),
            ));

1 Ответ

2 голосов
/ 13 февраля 2020

Google map Значок маркера принимает только значки и растровые изображения. Итак, сначала вам нужно конвертировать URL-изображения в растровые изображения.

import 'dart:typed_data';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'dart:io';
Map<String, Uint8List> userIdMarkerMap = {};
Future getMarkerImage() async
  {

    for(int j=0;j<userIdList.length;j++) {
      final File markerImageFile = await DefaultCacheManager().getSingleFile(imageURL);
      final Uint8List markerImageBytes = await markerImageFile.readAsBytes();


      ui.Codec codec = await ui.instantiateImageCodec(markerImageBytes, targetWidth: 50);
      ui.FrameInfo fi = await codec.getNextFrame();

      final Uint8List markerImage = (await fi.image.toByteData(format: ui.ImageByteFormat.png)).buffer.asUint8List();

      userIdMarkerMap[userIdList[j]] = markerImage;

    }

    setState(() {
      //call your function to build google map
    });

  }

, затем вы можете использовать это из маркера карты Google.

      markers.add(Marker(
      markerId: MarkerId(userIdList[j]),
      position: LatLng(lat, lon),
      icon: userIdMarkerMap[userIdList[j]] != null ? BitmapDescriptor.fromBytes(userIdMarkerMap[userIdList[j]]) : BitmapDescriptor.defaultMarker,));
...