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

背景

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

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

分析

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

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

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

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

  1. 获取像素比也就是PDI

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

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

2.54 : 代表1英寸,1英寸等于2.54厘米
所以这里需要计算1cm的物理像素值,然后再除于PDI就等于1cm下的逻辑像素值

double pixelsPerCentimeter =
        physicalSize.width / 2.54 / pixelRatio * centimeters;

注意

  1. getScalePerPixel`` 获取的单位是m/px`,像素是逻辑像素

相关推荐

  1. 移动Flutter 定义地图比例尺

    2024-03-23 07:54:01       45 阅读
  2. flutter 使用地图

    2024-03-23 07:54:01       56 阅读
  3. flutter地图release闪退

    2024-03-23 07:54:01       22 阅读
  4. pcvue封装地图实现定位 PlaceSearch搜索

    2024-03-23 07:54:01       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 07:54:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 07:54:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 07:54:01       82 阅读
  4. Python语言-面向对象

    2024-03-23 07:54:01       91 阅读

热门阅读

  1. 数学建模常用代码

    2024-03-23 07:54:01       41 阅读
  2. RK3568 安装jupyter和jupyterlab

    2024-03-23 07:54:01       43 阅读
  3. Skywalking

    2024-03-23 07:54:01       44 阅读
  4. moba客户端开发面经

    2024-03-23 07:54:01       38 阅读
  5. 1.1-数组-704. 二分查找★

    2024-03-23 07:54:01       38 阅读
  6. C++中的vector简介

    2024-03-23 07:54:01       42 阅读
  7. 学习笔记3/22

    2024-03-23 07:54:01       45 阅读