Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter MapboxMap';s控制器的cameraPosition在被侦听器调用时等于null_Flutter_Dart_Mapbox Gl - Fatal编程技术网

Flutter MapboxMap';s控制器的cameraPosition在被侦听器调用时等于null

Flutter MapboxMap';s控制器的cameraPosition在被侦听器调用时等于null,flutter,dart,mapbox-gl,Flutter,Dart,Mapbox Gl,我正在尝试在相机位置添加一个标记。因此,每当用户在地图上移动时,我需要得到相机的位置。经过快速研究,我发现设置一个监听器应该很容易,每次用户移动时都会调用它,并使用controller.cameraPosition提取相机位置。这看起来非常简单,但是当侦听器被调用时,控制器.cameraPosition总是null。只有在触发onmacreated函数时,它才具有正确的值 下面是一个易于复制的代码示例: import 'package:flutter/material.dart'; impor

我正在尝试在相机位置添加一个标记。因此,每当用户在地图上移动时,我需要得到相机的位置。经过快速研究,我发现设置一个监听器应该很容易,每次用户移动时都会调用它,并使用
controller.cameraPosition
提取相机位置。这看起来非常简单,但是当侦听器被调用时,
控制器.cameraPosition
总是
null
。只有在触发
onmacreated
函数时,它才具有正确的值

下面是一个易于复制的代码示例:

import 'package:flutter/material.dart';

import 'package:mapbox_gl/mapbox_gl.dart';

import 'package:test_01/secretAccessToken.dart';

void main() {
  runApp(
    MaterialApp(
      home: MyMapBoxMap(),
    )
  );
}

class MyMapBoxMap extends StatefulWidget {
  @override
  _MyMapBoxMapState createState() => _MyMapBoxMapState();
}

class _MyMapBoxMapState extends State<MyMapBoxMap> {
  MapboxMapController mapController;

  void _onMapCreated(MapboxMapController controller) {
    mapController = controller;
    print("On map created: ${mapController.cameraPosition}");
    mapController.addListener(() {
      print(mapController.cameraPosition);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: MapboxMap(
        onMapCreated: _onMapCreated,
        initialCameraPosition: CameraPosition(target: LatLng(42, 42), zoom: 3),
        accessToken: secretAccessToken,
      ),
    );
  }
}

我正在使用
mapbox\u gl:^0.8.0

我是不是错过了一些我应该读的很明显的东西?

感谢阅读

答案很简单。您可以(在mapbox\u gl的文档上)读取
cameraPosition

如果MapboxMap.trackCameraPosition为false,则将为null


感觉有点蠢,我想controller.cameraPosition可以正常工作。如果未创建贴图,则cameraPosition应为空。不是吗?在调用onMapCreated时,controller.CameraPosition被填充,但在调用侦听器时,它总是空的。(侦听器是在onMapCreated中设置的)
...
I/flutter (18328): On map created: CameraPosition(bearing: 0.0, target: LatLng(42.0, 42.0), tilt: 0.0, zoom: 3.0)
...
I/flutter (18328): null
...