zoukankan      html  css  js  c++  java
  • flutter 踩坑小计: amap_base 地图缩放 zoom 设置无效的问题

    这种问题估计也就我这种菜鸡能遇到了,因为我问了一些大佬,他们完全没遇到这类的问题。

    如果你也遇到了,希望这篇文章能帮到你,倘若还不能解决你的问题,可以留言,我们共同研究。

    问题:同样的插件,为什么偏偏我能遇到这种邪门问题,别人的就一帆风顺?

    答案:菜是原罪!

    场景描述:

    在一个详情页面,需要展示地图,然后在真机上面调试的时候,地图显示的缩放比例完全跟zoom值不搭嘎,不管我的zoom值为5或是为15

    经过几个小时的排查测试以及猜想,并且对一位大佬穷追猛问,之后发现是 addMarker 添加标记点引起的。

    我也不知道为什么。

    也想不明白为什么。

    解决方案:

    加延迟,在 addMarker 之后加延迟设置 zoom 值!

    
    
        AMapController _controller;
      Widget _mapShowWidget(){
        return AMapView(
          onAMapViewCreated: (controller) async{
            _controller = controller;
            _requestLocationPermissions();
          },
          amapOptions: AMapOptions(
            compassEnabled: false,
            zoomControlsEnabled: false,
            logoPosition: LOGO_POSITION_BOTTOM_RIGHT,
            camera: CameraPosition(
              target: LatLng(latitude, longitude),
              zoom: 15,
            ),
          ),
        );
      }
    
      Future<void> _requestLocationPermissions() async {
        // 添加标记点
        _controller.addMarker(
          MarkerOptions(
            icon: 'lib/assets/image/locamark.png',
            position: LatLng(latitude, longitude),
            displayLevel: 15
          ),
        );
        reGetCountdown();
      }
    
      int count = 1;
      // 延迟加载
      Timer _countdownTimer;
      void reGetCountdown() {
        // Timer的第一秒倒计时是有一点延迟的,为了立刻显示效果可以添加下一行。
        // 添加200毫秒的延迟
        _countdownTimer = new Timer.periodic(new Duration(milliseconds: 200), (timer) {
          setState(() {
            count = count - 1;
          });
          if(count == 0){
            _controller.setZoomLevel(15); // 设置 zoom
            setState(() {
              _countdownTimer.cancel();
            });
          }
        });
      }

    问题到此算是解决了。原理我也说不清道不明。

    简单解释就是,既然 addMarker 的时候会导致 zoom 失效,那就在 addMarker 之后再重新设置 zoom (setZoomLevel 写在 addMarker 之后也不行)

  • 相关阅读:
    C#泛型
    C#接口
    C#委托和事件
    Unity Ray 射线
    C#学习基础
    Graph | Eulerian path
    Careercup | Chapter 8
    Leetcode | Pow(x, n)
    Leetcode | Gray code
    分布式缓存
  • 原文地址:https://www.cnblogs.com/wyhlightstar/p/11172234.html
Copyright © 2011-2022 走看看