当前位置: 首页 > news >正文

Android高德地图贴合图片完成手绘地图展示

上周刚接到一个需求,产品觉得高德的默认地图样式不好看,想要一个手绘地图贴合上去,看着美观很多,然而我内心确是抵触的,无法 ,产品讲了,只能先回答试试看看。接下拉就是一搏谷歌搜索。

1.使用web版本的高德地图,然后和native交互完成

web端有现成的方案,直接贴合自定义图片

var imageLayer = new AMap.ImageLayer({
        url: 'gulangyu.png',
        bounds: new AMap.Bounds(
         [118.057708, 24.436293],   //左下角
         [118.077706, 24.454069]    //右上角
         ),
        zooms: [15, 18]
    });
    var map = new AMap.Map('container', {
        resizeEnable: true,
        center: [118.067042,24.444673],
        zoom: 15,
        layers: [
            new AMap.TileLayer(),
            imageLayer
        ]
    });
复制代码

上面就可以直接贴合手绘地图,需要四角定位,然后直接把图片的图层贴合上去。

考虑到性能问题以及后续的web和native的交互,在低端手机显示比较卡顿,先废弃此方案。

[web端的具体贴合可以参考]www.cnblogs.com/milkmap/p/6…

2.使用Marker点贴合图片

此方案我想想就觉得扯淡,Marker本身就是做标识用的,要贴合在地图上面,缺点一堆的,点数过多,图片内存占用大,无法缩放等,后面我直接拒绝

3.使用瓦片图TileOverlay

通过查看高德的文档

显示在基本地图上面的一个图层,貌似可以完成贴合手绘地图

然后这个需要后台配合提供在线的瓦片图服务 具体代码如下

 private void initTile() {
    //后台的瓦片图路径
    final String tileUrl = "http://******/mapImg/tiles/";
    TileOverlayOptions tileOverlayOptions =
        new TileOverlayOptions().tileProvider(new UrlTileProvider(256, 256) {

          @Override
          public URL getTileUrl(int x, int y, int zoom) {
            try {
              // x横坐标 ,y纵坐标,zoom缩放比
              String url = tileUrl + zoom+ "/"+x + "_" + y + ".png";
              LogUtils.i(url);
              return new URL(url);
            } catch (Exception e) {
              e.printStackTrace();
            }
            return null;
          }
        });
    tileOverlayOptions.diskCacheEnabled(true)
        //添加缓存路径
        .diskCacheDir("/storage/emulated/0/amap/OMCcache")
        //瓦片图数量
        .diskCacheSize(100000)
        .memoryCacheEnabled(true)
        .memCacheSize(100000)
        //显示的优先级
        .zIndex(-9999);
    //添加到地图
    TileOverlay mtileOverlay = aMap.addTileOverlay(tileOverlayOptions);
  }
复制代码

只需要返回后台的图片url路径即可完成瓦片图加载,其中x,y都是根据zoom的缩放比计算的,而且获取图片,要注意对应的参数,还有一个比较重要的是zIndex的设置,如果还有路径规划类似的Overlay需要设置zIndex的大小,以达到显示与手绘地图图层之上

转载于:https://juejin.im/post/5c17070af265da61590b9275

相关文章:

  • 使用ServletContext读取properties配置文件
  • java程序员必备的15个框架
  • 做还是不做,是一个问题
  • java springboot b2b2c shop 多用户商城系统源码-Spring Cloud Hystrix依赖隔离
  • 谨记一次问题排查经历
  • Framework7开发H5App如何禁止回退离开首页
  • ListT对元素的查找。
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 关于CAD的开发思路
  • 七彩视界
  • centos7使用kubeadm安装k8s集群
  • SQL Profile 总结(一)
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • Hihicoder 题目1 : Trie树(字典树,经典题)
  • Memcached理解笔记1---安装常规错误监控
  • ES2017异步函数现已正式可用
  • JavaScript-Array类型
  • Selenium实战教程系列(二)---元素定位
  • SQLServer之创建数据库快照
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue中实现单选
  • 复杂数据处理
  • 开源地图数据可视化库——mapnik
  • 容器服务kubernetes弹性伸缩高级用法
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 阿里云ACE认证之理解CDN技术
  • 第二十章:异步和文件I/O.(二十三)
  • 容器镜像
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (C++)八皇后问题
  • (C语言)球球大作战
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)四层和七层负载均衡的区别
  • **python多态
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Core WebAPI中封装Swagger配置
  • .NET Framework .NET Core与 .NET 的区别
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET企业级应用架构设计系列之开场白
  • /etc/fstab 只读无法修改的解决办法
  • @Bean注解详解
  • @ModelAttribute 注解
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [Android] Android ActivityManager
  • [Angularjs]ng-select和ng-options
  • [AutoSar NVM] 存储架构
  • [BUG] Authentication Error
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成