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 之后也不行)

  • 相关阅读:
    react ts axios 配置跨域
    npm run eject“Remove untracked files, stash or commit any changes, and try again.”错误
    java 进程的参数和list的线程安全
    帆软报表 大屏列表跑马灯效果JS
    帆软报表 快速复用数据集,避免重复劳动
    分析云 OA中部门分级思路和实现方法
    分析云 分段器 只显示一个块的数据
    分析云 更改服务默认的端口号
    分析云U8项目配置方法新版本(2)
    Oracle 创建时间维度表并更新是否工作日字段
  • 原文地址:https://www.cnblogs.com/wyhlightstar/p/11172234.html
Copyright © 2011-2022 走看看