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

原文地址:https://www.cnblogs.com/wyhlightstar/p/11172234.html

时间: 2024-08-29 11:29:41

flutter 踩坑小计: amap_base 地图缩放 zoom 设置无效的问题的相关文章

flutter踩坑01:下载包失败:Could not resolve all artifacts for configuration....

flutter踩坑01:下载包失败:Could not resolve all artifacts for configuration.... flutter在下载依赖失败或者flutter run运行的时候出现某个jar或者文件下载失败的时候,如下: FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ':url_launcher'. > Could

Flutter 踩坑之build函数返回了null

今天遇到一个bug,内容都正常显示没问题,但是控制台里报错,如图: 翻译了下,说是函数不能返回空值,搜索了下,网上相同问题的是少写了个return,我检查了下也没发现少return的,后来突然发现if条件判断不全,没写else,如图: 好吧,加上else不报错了. 记录一下吧,这坑踩的... 原文地址:https://www.cnblogs.com/joe235/p/11732039.html

Flutter踩坑日记,自己挖的坑,哭着也要走出来。

1. 系统运行缓慢,疯狂点击右上角小X,再次启动后Emulator启动黑屏,关机重启也不好使,其他 Emulator也无法使用. 执行以下步骤: 第一检查内存是否够用 啊  不够用了 那么 [解决方法]打开不能启动的config.ini(例如目录C:\Users\my.android\avd\Nexus_5X_API_25.avd\config.ini)修改 试试看 不行的话继续第二步 打开不能启动的config.ini(例如目录C:\Users\my.android\avd\Nexus_5X_

【踩坑经历】一次Asp.NET小网站部署踩坑和解决经历

2013年给1个大学的小客户部署过一个小型的Asp.NET网站,非常小,用的sqlite数据库,今年人家说要换台服务器,要重新部署一下,好吧,虽然早就过了服务时间,但无奈谁叫人家是客户了,二话不说,上,源代码和以前的文件都有,部署还不是分分钟的事情,打开IIS挂上去就行了.谁知道,这个部署将近花了2天的时间.看看踩坑过程和解决方法. 本文原文地址:http://www.cnblogs.com/asxinyu/p/4380380.html 1.居然拿XP系统做服务器 第一个坑其实和我没关系,客户以

百度地图sdk踩坑之旅

1.写在前面 项目中需要加上路线规划,导航,添加覆盖物,因为我最开始项目中定位我使用的是百度定位,所以为了省事,接着使用百度地图sdk实现这些.这两天踩了很多百度地图的坑,记下来.因为一些原因,后面会说,需求还没做完,所以效果图很简单,如下. 2.坑1,环境配置 对于百度地图sdk的配置我是无语.因为一开始项目中并没打算使用百度地图其他功能,只是准备定位.所以我下载sdk时只是下载了定位的sdk,如图 现在需要加上地图和导航的sdk(后面才知道导航并不需要下载专门的导航sdk,因为地图sdk可以

微信小程序开发问题踩坑整理,web-view、openID、小程序支付等汇总

微信小程序开发过程中遇到的问题踩坑整理,内容包括web-view.openID.小程序支付.网络请求等等一系列问题汇总,希望对大家能有一定帮助和启发. 内容如下: 关于小程序web-view bindmessage 真机不触发的问题 小程序iOS访问服务器访问不上,但android没有问题 关于ssl证书加密后小程序访问出错问题 微信拨打电话数据调用问题,如何一键拨号 后台php调用微信小程序接口获取openid,返回的是null 小程序图片显示问题,开发者工具显示,手机预览不显示 微信小程序支

微信小程序之蓝牙 BLE 踩坑记录

前言 前段时间接手了一个微信小程序的开发,主要使用了小程序在今年 3 月开放的蓝牙 API ,此过程踩坑无数,特此记录一下跳坑过程.顺便开了另一个相关的小项目,欢迎 start 和 fork: BLE_MiniProgram API简介 微信小程序目前有蓝牙 API 共 18 个,其中操作蓝牙适配器的共有 4 个,分别是 wx.openBluetoothAdapter 初始化蓝牙适配器 wx.closeBluetoothAdapter 关闭蓝牙模块 wx.getBluetoothAdapterS

微信小程序性能测试之jmeter踩坑秘籍(前言)

最近要做个微信小程序的性能压测,虽然之前只做过web端的,但想一想都是压后端的接口,所以果断答应了下来,之前对jmeter都是小打小闹,所以趁着这次机会好好摆弄摆弄. --------------------------------------------------------------------------------踩坑前总结哈理论,这篇写给自己的----------------------------------------------------------------------

生成指定页面带参数的小程序码及踩坑

//获取accessToken let that = this; const APP_ID = 'yourapp_id';// 小程序appid const APP_SECRET = 'yourapp_secreat';// 小程序app_secret let access_token = ''; wx.request({ url:"https://api.weixin.qq.com/cgi-bin/token", data: { grant_type: 'client_credent