【移动端】Flutter 自定义高德地图比例尺

背景

因为高德地图本身的比例尺是默认只能在左下角展示,且样式不能调整,所以在实际开发中会有自定义比例尺的需求

通过阅读源码和开发文档会发现,针对Flutter ,高德地图并未开放自定义比例尺的接口

分析

通过阅读源码和AMap Android SDK源发现,在AMap类中存在getScalePerPixel方法可以获取比例尺数据,所以现在需要解决的是获取AMap类的实例,获取方法可以参考上篇文章:

【移动端】Flutter 获取Android AMap实例

获取后的问题的来了,就是计算比例尺数据,终端设备屏幕的像素一般分为物理像素和逻辑像素,阅读源码会发现getScalePerPixel获取的实际是逻辑像素,所以下面需要计算逻辑像素

比如计算1cm下设备对应的逻辑像素值:

  1. 获取像素比也就是PDI

PDI:表示1逻辑像素对应多少物理像素

dart 复制代码
double pixelRatio = View.of(context).devicePixelRatio;
  1. 获取物理像素值:
dart 复制代码
Size physicalSize = View.of(context).physicalSize;
  1. 计算1cm对应的逻辑像素值:

2.54 : 代表1英寸,1英寸等于2.54厘米

所以这里需要计算1cm的物理像素值,然后再除于PDI就等于1cm下的逻辑像素值

dart 复制代码
double pixelsPerCentimeter =
        physicalSize.width / 2.54 / pixelRatio * centimeters;

注意

  1. getScalePerPixel`` 获取的单位是m/px`,像素是逻辑像素
相关推荐
克喵的水银蛇1 小时前
Flutter 通用输入框封装实战:带校验 / 清除 / 密码切换的 InputWidget
前端·javascript·flutter
小蜜蜂嗡嗡14 小时前
flutter namespace问题
android·flutter
克喵的水银蛇14 小时前
Flutter 适配实战:屏幕适配 + 暗黑模式 + 多语言
前端·javascript·flutter
西西学代码15 小时前
flutter---自定义白噪音UI
flutter
肠胃炎15 小时前
Flutter ListView 组件及各种模式
flutter
sunly_15 小时前
Flutter:设备唯一id生成,存储,
flutter
走在路上的菜鸟18 小时前
Android学Dart学习笔记第十节 循环
android·笔记·学习·flutter
小蜜蜂嗡嗡19 小时前
【flutter项目从xcode运行时报错:Undefined symbol: _OBJC_CLASS_$_WeiboSDK】
flutter·cocoa·xcode
走在路上的菜鸟19 小时前
Android学Dart学习笔记第九节 Patterns
android·笔记·学习·flutter
晚霞的不甘21 小时前
跨端一致性与体验统一:构建面向全场景的 Flutter UI 自适应架构
flutter·ui·架构