高德地图开发实战案例:使用Loca数据源展示海量点标注(海量点、自定义分类图标、聚合、信息提示、3D控件)

news2024/11/29 10:37:31

系列文章目录

  1. 高德地图开发实战案例:弧线连接线标注
  2. 高德地图开发智慧社区网格化数据格式产生的无法单击事件的解决方案
  3. 高德地图进阶开发实战案例(1):webAPI坐标转换和jsAPI批量转换
  4. 高德地图进阶开发实战案例(2):电子围栏(多边形的绘制)的展示
  5. 高德地图进阶开发实战案例(4):计算骑行的距离和时间
  6. 高德地图进阶开发实战案例(5):矩形可视范围的东北西南角经纬度的获取
  7. 高德地图进阶开发实战案例(6):添加自定义图片覆盖物图层获取可视范围经纬度的解决方案
  8. 高德地图进阶开发实战案例(7):点是否在多边形内和内外部的数量统计的解决方案
  9. 高德地图进阶开发实战案例(8):加载多个多边形的覆盖物且实现鼠标高亮和单击事件解决方案
  10. 高德地图进阶开发实战案例(9):涟漪动画标注的实现方案
  11. 高德地图进阶开发实战案例(10):地图选取起终点OD位置经纬度的驾车规划路线
  12. 高德地图进阶开发实战案例(12):热力图模拟传播范围以及小区兴趣点POI经纬度的获取方法
  13. 数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)

文章目录

  • 系列文章目录
  • 前言
  • 一、引入外部JS包
  • 二、核心代码
    • 1.地图实例
    • 2.3D控制罗盘
    • 3.创建Loca 实例
    • 4.AMap.LabelMarker的配置项
      • 4.1自定义分类图标
    • 5.labelsLayer监听事件
      • 5.1信息提示
    • 6.geojson数据格式
  • 总结


前言

loca 数据可视化 API 2.0是一个基于高德地图JS API 2.0的高性能地图数据可视化库,采用了和1.3版本中不同的架构模式和渲染管线,极大的提升了性能和渲染效果。数据源进行了标准化,仅支持标准的GeoJSON格式数据。


在这里插入图片描述

一、引入外部JS包

  • 同时引入maps和loca两个js文件,同时注意官网版本;不同版本的引入,会导致高德地图无法渲染,甚至不显示的情况。
  • Loca 数据可视化 API 2.0 依赖 JSAPI 2.0,因此需要先引入 JSAPI v2.0。
<script src="https://webapi.amap.com/maps?v=2.0&key=69fb3067449c9***"></script>
<script src="https://webapi.amap.com/loca?v=2.0.0&key=69fb306744***"></script>

注意:新版Loca API 2.0和Loca 1.3.x版本不兼容,它们是针对不同的JS API版本进行的封装。 因此如果您需要使用JS API 1.4.x,那么只能使用Loca API 1.3.x;如果您需要使用JS API 2.0,那么只能使用Loca API 2.0。

二、核心代码

1.地图实例

  • 加载个性化地图皮肤
  • 加载3D地图模式viewMode
    var map = new AMap.Map('map', {
        zoom: 15.8,
        //center: [123.0155, 41.11805],
        center: [116.33081, 39.995731],
        showIndoorMap: false,
        pitch: 45, // 地图俯仰角度,有效范围 0 度- 83 度
        viewMode: '3D', // 地图模式
        mapStyle: 'amap://styles/a88f4b4a2db1276936aefa8d21ee95a1'
    });

由于是海量点的引入,不建议在实际生产环境使用3D视图,容易卡顿,或造成浏览器的崩溃。

2.3D控制罗盘

添加 3D 罗盘控制,显示倾斜和旋转按钮。

    //3D控制罗盘
    AMap.plugin([
        'AMap.ControlBar',
    ], function () {
        // 添加 3D 罗盘控制
        map.addControl(new AMap.ControlBar({
            position: {
                right: '20px',
                top: '20px'
            },
            showControlButton: true,  // 是否显示倾斜、旋转按钮。默认为 true
        }));
    });

3.创建Loca 实例

    var loca = new Loca.Container({
        map,
    });

    var labelsLayer = (window.labelsLayer = new Loca.LabelsLayer({
        zooms: [10, 20],
    }));

    var geo = new Loca.GeoJSONSource({
        url: 'data2.json',
    });

    labelsLayer.setSource(geo);

4.AMap.LabelMarker的配置项

labelsLayer.setStyle({
        icon: {
            type: 'image',
            image: (index, feat) => {
                //console.log(feat.properties.level)
                return './images/icon' + feat.properties.types + '.png'
            },
            size: [48, 75],
            anchor: 'center',
        },
        text: {
            // 每项配置都可使用回调函数来动态配置
            content: (index, feat) => {
                return feat.properties.name;
            },
            style: {

                fontSize: 12,
                fontWeight: 'normal',
                fillColor: '#5CDE8E',
                strokeColor: '#000',
                strokeWidth: 2,
            },
            direction: 'bottom',
        },
        extData: (index, feat) => {
            return feat.properties;
        },
    });
    loca.add(labelsLayer);

4.1自定义分类图标

在labelsLayer的icon配置项中,对image新增回调函数,读取geojson中对应的项目类型,进行自动加载图标。

 image: (index, feat) => {
                //console.log(feat.properties.level)
                return './images/icon' + feat.properties.types + '.png'
            },

5.labelsLayer监听事件

 labelsLayer.on('complete', () => {
        var normalMarker = new AMap.Marker({
            offset: [70, -15],
        });
        var labelMarkers = labelsLayer.getLabelsLayer().getAllOverlays();
        for (let marker of labelMarkers) {
            marker.on('mouseover', (e) => {
                var position = e.data.data && e.data.data.position;

                if (position) {
                    normalMarker.setContent(
                        '<div class="amap-info-window">地址:' + marker.getExtData().name + '</div>',
                    );
                    normalMarker.setPosition(position);
                    map.add(normalMarker);
                }
            });

            marker.on('mouseout', () => {
                map.remove(normalMarker);
            });
        }
    });

5.1信息提示

在鼠标移动到对应的数据层时,会出现信息提示。

    normalMarker.setContent(
 '<div class="amap-info-window">地址:' + marker.getExtData().name + '</div>', );

6.geojson数据格式

在这里插入图片描述


总结

@漏刻有时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

与chatGPT的第一次亲密接触

最近&#xff0c;chatGPT火了&#xff0c;不管传统媒体&#xff0c;还是各种自媒体平台都在说它。今天我突然也想注册一个玩玩&#xff0c;注册前2步还行&#xff0c;但是等点开邮箱校验时&#xff0c;打开网页显示&#xff1a; 上网查了一下&#xff0c;没向中国开放服务&…

Java高手速成 | 对象-关系的映射、映射对象标识符与JPA API的级联操作

01、对象-关系的映射概念 Java对象和关系数据库存在一些简单的映射关系&#xff0c;比如Customer类与CUSTOMERS表映射&#xff0c;一个Customer对象与CUSTOMERS表中的一条记录映射&#xff0c;Customer类的name属性与CUSTOMERS表的NAME字段映射。 但是&#xff0c;毕竟对象模型…

有了独自开,一个人就是一个团队

文章目录 简单介绍优点 优秀案例平台福利总结 简单介绍 独自开是一个基于商品与服务交易全流程的PaaS开发平台。对于开发者&#xff0c;独自开可以协助开发者一个人独自开发一套系统。 优点 独自开有独创的分层标准化平台架构&#xff0c;可以满足系统的任何个性化需求。 …

PICT:一款功能强大的信息收集和事件响应工具

关于PICT PICT是一款功能强大的信息收集和事件响应工具&#xff0c;该工具可以帮助广大研究人员在受感染的终端节点中收集各种信息&#xff0c;以辅助进行网络安全事件应急响应。这些数据可能不够完整&#xff0c;但确实能够捕捉到很多有价值的取证信息。如果你想要获取完整的…

搜广推 隐语义模型(LMF)与矩阵分解(MF)

😄 MF的出现就是为了解决CF处理稀疏矩阵能力弱的问题,增强泛化能力。挖掘用户和物品的隐含兴趣和隐含特征。 ⭐ 在这里隐语义模型LMF在这里也就是利用MF对用户评分矩阵分解出来的用户隐向量矩阵、物品隐向量矩阵,然后基于这两个矩阵就可以计算得分,完成推荐任务。 🚀 MF…

我猜这将是程序员副业接单赚外快的最好的平台!

文章目录一、前言二、【独自开】介绍2.1 分层标准化平台架构2.2 集成第三方数字接口2.3 支持各个行业的系统定制开发三、如何在【独自开】赚钱获取收益?3.1 如何称为【独自开】开发者?3.2 如何领取任务赚取收益四、【独自开】优秀案例4.1 家政服务平台4.2 优选商城五、【独自…

设计模式之观察者模式,以C++为例。

今天来准备浅浅的过一下观察者模式&#xff0c;观察者模式也叫作&#xff1a;发布者订阅者模式。该模式的特点是多个对象依赖一个对象&#xff0c;为一对多依赖关系&#xff0c;每当一个对象改变时&#xff0c;所有依赖它的对象都会得到通知并自动更新&#xff0c;该模式主要维…

MySQL数据同步到ES集群(MySQL数据库与ElasticSearch全文检索的同步)

简介&#xff1a;MySQL数据库与ElasticSearch全文检索的同步&#xff0c;通过binlog的设置对MySQL数据库操作的日志进行记录&#xff0c;利用Python模块对日志进行操作&#xff0c;再利用kafka的生产者消费者模式进行订阅&#xff0c;最终实现MySQL与ElasticSearch间数据的同步…

C++类和对象:面向对象编程的核心。| 面向对象还编什么程啊,活该你是单身狗。

&#x1f451;专栏内容&#xff1a;C学习笔记⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;日拱一卒&#xff0c;功不唐捐 文章目录一、前言二、面向对象编程三、类和对象1、类的引入2、类的定义Ⅰ、声明和定义在一起Ⅱ、声明和定义分开Ⅲ、成员变量命…

ChatGPT 怎么注册使用最新详细教程-新手小白

2022年11月30日chatGPT发布&#xff0c;一年时间风靡全美&#xff0c;甚至有调查&#xff0c;美国89%的大学生用chatGPT做作业&#xff0c;微软用100亿美元投资了该公司&#xff0c;这也引起了google的紧张&#xff0c;神经语言、人工智能、颠覆未来&#xff0c;成为描述chatGP…

VR博物馆带你走进云端,感受数字时代的力量

博物之志&#xff0c;以文化人&#xff0c;为了打破传统线上静态的博物馆图片&#xff0c;VR博物馆给民众带来了全新的视听体验&#xff0c;突破天气、交通、客流量等传统旅游限制问题&#xff0c;在VR全景中还能将线下博物馆的多媒体影响也逐一呈现出来&#xff0c;接下来让我…

ChatGPT给程序员人手一个,这很朋克(由ChatGPT编写)

目录ChatGPT、程序员、朋克为什么程序员需要ChatGPT&#xff0c;为什么这很朋克总结ChatGPT、程序员、朋克 本文由ChatGPT编写。 ChatGPT是由OpenAI开发的大型语言模型。它的核心功能是生成人类语言文本&#xff0c;因此有多种应用场景&#xff0c;如文本生成、对话生成、文本…

FlexGanttFX 11.12.6 Crack

FlexGanttFX 是 JavaFX 的调度和资源规划组件。它允许开发人员通过 CSS 以及可插入渲染器和编辑策略的使用来自定义其外观和行为的每个方面。FlexGanttFX 利用场景图/场景节点和画布 API 的完美组合&#xff0c;确保即使是最大的数据集也可以快速呈现。FlexGanttFX 不仅外表漂亮…

【java】遍历set集合,iterator遍历TreeSet,增强for循环遍历,set排序

目录 1. 增强for循环遍历&#xff08;底层还是用iterator实现的&#xff09;2.iterator遍历TreeSet3.说明4.补充测试用的集合来自上篇&#xff1a;https://blog.csdn.net/qq_43622777/article/details/128924730 1. 增强for循环遍历&#xff08;底层还是用iterator实现的&#…

服务异步通信 RabbitMQ

服务异步通信 RabbitMQRabbitMQ快速入门RabbitMQ概述和安装常见消息模型HelloWorld案例SpringAMQPBasic Queue 简单队列模型消息发送消息接收测试WorkQueue消息发送消息接收测试能者多劳总结发布/订阅Fanout声明队列和交换机消息发送消息接收总结Direct基于注解声明队列和交换机…

Ubuntu 22.04 LTS 入门安装配置优化、开发软件安装一条龙

Ubuntu 22.04 LTS 入门安装配置&优化、开发软件安装 例行前言   最近在抉择手上空余的笔记本&#xff08;X220 i7-2620M&#xff0c;Sk Hynix ddr3 8G*2 &#xff0c;Samsung MINISATA 256G&#xff09;拿来运行什么系统比较好&#xff0c;早年间我或许还会去继续使用Win…

urllib基础+xpath基础(爬虫基础_1)

文章目录1 urllib库的使用1.1 urllib.request发送请求获得响应数据一个类型六个方法内容下载定制请求对象1.2 urllib.parseget请求编码post请求编码1.3 ajax的get请求示例1.4 ajax的post请求示例1.5 Handler处理器1.6 代理服务器2 解析2.1 xpath2.2 JsonPath2.3 BeautifulSoup1…

自动驾驶感知——多传感器融合技术

文章目录1. 运动感知类与环境感知类传感器2. 为什么需要这么多传感器&#xff1f;2.1 从需求侧分析2.2 从供给侧分析3. 多传感器硬件系统的设计思路4. 多传感器系统的时序闭环4.1 传感器时钟闭环构建4.2 成像同步机制5. 多传感器融合算法5.1 多传感器融合问题建模5.2 后融合5.2…

OpenAI ChatGPT 人工智能机器人注册使用,能以中文对答如流的机器人

文章目录一、什么是 ChatGPT二、宇宙最强技术狂魔 马斯克 与 ChatGPT三、在中国大陆如何注册 ChatGPT1. 注册前准备&#xff08;只适用于中国大陆&#xff09;2. 注册方法与步骤四、GhatGPT 的使用方法1. 网页直接使用2. 使用 Google Chrome 浏览器插件3. CSDN 已经接入 ChatGP…

创业平台推荐 ⌈ 适和全部开发者 ⌋ | 成为一名开发者原来那么简单 | 获取收益不再困难 | 快来加入这个大家庭吧

&#x1f49b; 前情提要&#x1f49b; 本文是番外篇&#xff1a;在当今生活中&#xff0c;我们都想在业余时间通过不断学习去充实自己、提高自己 而本文就是为大家拓宽一种思路&#x1f929;&#xff0c;从身为开发者的角度出发&#xff0c;为大家提供一个全面的平台去开启“…