【问题标题】:Flutter OSM map : can't see markers on user positionFlutter OSM 地图:在用户位置上看不到标记
【发布时间】:2022-07-24 09:56:05
【问题描述】:

我正在试验 Flutter OSM 地图插件。我遵循了官方 github 上的示例,它可以正常工作,但我看不到用户位置上的标记。当用户位置发生变化时,位置更新良好,地图反映了正确的位置。

这是我的代码:

class MapScreenWidget extends StatefulWidget {

  MapScreenWidget({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _MapState();
}

class _MapState extends State<MapScreenWidget> {
  late MapController controller;

  @override
  void initState() {
    super.initState();
    controller = MapController(
      initMapWithUserPosition: true,
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: appBar,
        body: Center(
          child: OSMFlutter(
            controller: controller,
            onLocationChanged: (GeoPoint point) {
              print('lat: ${point.latitude}, lon: ${point.longitude}');
            },
            trackMyPosition: true,
            initZoom: 16,
            minZoomLevel: 6,
            maxZoomLevel: 19,
            stepZoom: 1.0,
            userLocationMarker: UserLocationMaker(
              personMarker: MarkerIcon(
                icon: Icon(
                  Icons.location_history_rounded,
                  color: Colors.red,
                  size: 48,
                ),
              ),
              directionArrowMarker: MarkerIcon(
                icon: Icon(
                  Icons.double_arrow,
                  size: 48,
                ),
              ),
            ),
            markerOption: MarkerOption(
                defaultMarker: MarkerIcon(
                  icon: Icon(
                    Icons.person_pin_circle,
                    color: Colors.blue,
                    size: 56,
                  ),
                )),
          ),
        ));
  }
}

环境:

  • 颤振:2.8.1
  • 飞镖:2.12
  • flutter_osm_map:0.26.1
  • 在 Android API 29 和 30 上测试

谢谢

【问题讨论】:

    标签: android flutter openstreetmap


    【解决方案1】:

    像这样在 onMapReady 函数中添加延迟

        onMapIsReady: (bool value) async {
        if (value) {
          Future.delayed(const Duration(seconds: 1), () async {
            await _mapController.currentLocation();
          });
    
        }
      },
    

    【讨论】:

      猜你喜欢
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 2011-08-29
      • 1970-01-01
      相关资源
      最近更新 更多