google-maps - 方法 'removeMarker' 和 'addMarker' 没有为类 'GoogleMapController' 定义

标签 google-maps flutter location marker

我正在添加 removeMarker 和 addMarker 但它显示了这个 - 未为类“GoogleMapController”定义方法“addMarker”。 尝试将名称更正为现有方法的名称,或定义名为“addMarker”的方法。dart(undefined_method)

方法“MarkerOptions”没有为类“_GoogleMapsDemoState”定义。 尝试将名称更正为现有方法的名称,或定义名为 'MarkerOptions'.dart(undefined_method) 的方法 快速解决... 偷看问题

 import 'package:location/location.dart';

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
// import 'package:map_view/map_view.dart';

class GoogleMapsDemo extends StatefulWidget {
  @override
  _GoogleMapsDemoState createState() => _GoogleMapsDemoState();
}

class _GoogleMapsDemoState extends State<GoogleMapsDemo> {
  GoogleMapController mapController;
  Location location = Location();

  Marker marker;

  @override
  void initState() {
    super.initState();
    location.onLocationChanged().listen((location) async {
      if (marker != null) {
        mapController.removeMarker(marker);
      }
      marker = await mapController?.addMarker(MarkerOptions(
        position: LatLng(location["latitude"], location["longitude"]),
      ));
      mapController?.moveCamera(
        CameraUpdate.newCameraPosition(
          CameraPosition(
            target: LatLng(
              location["latitude"],
              location["longitude"],
            ),
            zoom: 20.0,
          ),
        ),
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: <Widget>[
          Container(
            height: MediaQuery.of(context).size.height,
            width: MediaQuery.of(context).size.width,
            child: GoogleMap(

              onMapCreated: (GoogleMapController controller) {
                mapController = controller;
              },
              initialCameraPosition: CameraPosition(
                target: const LatLng(45.521563, -122.677433),
                zoom: 11.0,
              ),
              myLocationButtonEnabled: true,
              myLocationEnabled: true,
            ),
          ),
        ],
      ),
    );
  }
}

方法“addMarker”没有为类“GoogleMapController”定义。 尝试将名称更正为现有方法的名称,或定义一个名为 'addMarker'.dart(undefined_method) 的方法 方法“MarkerOptions”没有为类“_GoogleMapsDemoState”定义。 尝试将名称更正为现有方法的名称,或定义名为 'MarkerOptions'.dart(undefined_method) 的方法 快速解决... 偷看问题

最佳答案

如果我没有完全弄错的话,这篇文章应该对您有所帮助。 https://stackoverflow.com/a/55000503/11620670

似乎 flutter 团队改变了一些东西,Google map API 现在是基于 Widget 而不是基于 Controller 了。

查看来自 flutter 的文档和我发布的链接。我认为这应该可以解决您的问题,因为您在错误的一端寻找解决方案。

关于google-maps - 方法 'removeMarker' 和 'addMarker' 没有为类 'GoogleMapController' 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56536481/

相关文章:

javascript - Angular JS 注入(inject)路由问题

flutter - 将文件转换为图像

ios - 定位服务作为 Swift 中的单例,卡在 "When In Use"上

dart - 当我选择一个文本字段时,键盘将移到它上面

image - Flutter pdf 生成对于图像太慢

android - 如何从在 android 中添加两次的 LocationManager 中删除 LocationListener?

c# - 在 C# 中用鼠标拖动来移动控件

javascript - 谷歌地图 : How to prevent InfoWindow from shifting the map

google-maps - 嵌入式 Google map 无法在 WebView 中获取当前位置

google-maps - 谷歌地图 - 绘制多个纬度经度对之间的线和距离(如乌鸦飞行)