clearMarkers() и addMarker() не работают

#api #google-maps #flutter #dart #google-maps-android-api-2

#API #google-карты #флаттер #dart #google-maps-android-api-2

Вопрос:

Я нашел код в учебнике, который больше не работает. Проведя некоторое исследование, я понял, что API карт Google был изменен, и поэтому код больше не работает. Учебное пособие относится к 2018 году. Может кто-нибудь из вас сказать мне, как написать этот код в настоящее время? clearMarkers() И подчеркнуты addMarker() красным.

Код:

   void initMarker(client) {
    mapController.clearMarkers().then((val) {
      mapController.addMarker(
        Marker(
          position:
              LatLng(client['location'].latitude, client['location'].longitude),
              infoWindow: InfoWindow(title: client['name'])
        ),
      );
    });
  }
  

Ответ №1:

Сначала создайте список маркеров:

 List<Marker> _markers = <Marker>[];
  

Затем заполните список, что-то вроде этого:

     //for 1..100
    _markers.add(
      Marker(
        markerId: MarkerId("someId"),
        infoWindow: InfoWindow(title: "Marker Title", snippet: "$snippet"),
        position: LatLng(currentLocation.coordinates[1], currentLocation.coordinates[0]),

     )
   );
  

Теперь измените свои GoogleMaps на что-то вроде этого:

 GoogleMap(
      initialCameraPosition: CameraPosition(
        target: LatLng(38.9647,35.2233),
        zoom: 9.0,
      ),
      mapType: MapType.normal,
      markers: Set<Marker>.of(_markers),
      onMapCreated: (GoogleMapController controller) {
        _controller.complete(controller);
      },
    )
  

Чтобы очистить маркеры, просто очистите список маркеров с помощью setState

   setState(() {
    _markers.clear();
  });