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
...