vue 使用腾讯地图 标点 自定义瓦片 折线配置

news2024/9/24 17:17:46

vue 使用腾讯地图 标点 自定义瓦片 折线配置

  1. 申请腾讯地图秘钥 key
    腾讯地图开发者 https://lbs.qq.com/dev/console/application/mine
    腾讯地图开发文档 https://lbs.qq.com/webApi/javascriptGL/glGuide/glOverview
    在这里插入图片描述

  2. 添加 key
    在这里插入图片描述
    在这里插入图片描述

  3. 代码中引入

// 入口文件 index.html
// 填入你申请的key
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=这里是你申请的key"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
  1. 初始化
    在这里插入图片描述
    // 这是切好的瓦片图 文件夹名字为 z 文件名字为 x_y

在这里插入图片描述
在这里插入图片描述

<template>
  <div id="mapContainer"></div>
</template>

data(){
  return {
     mapObj:null,
     mapMarker:null
  }
},
mounted(){
  this.$nextTick(()=>{
   initMap()
  })
},
 methods:{
     initMap() {
        var center = new TMap.LatLng(26.870355, 110.239704) //设置中心点坐标
        // 初始化地图
        this.mapObj = new TMap.Map("mapContainer", {
        center: center,
        zoom: 12, // 地图默认缩放级别
        showControl: true,  // 是否显示地图上的控件
        // viewMode: '2D',  // 地图视图模式,支持2D和3D,默认为3D。2D模式下俯仰角和旋转角度始终为0
        rotation: 0, //设置地图旋转角度
      });
      // 初始化瓦片

      // 瓦片图需要切好每个位置的图
      // x,y,z 为上图的坐标
      
      new TMap.ImageTileLayer({
        getTileUrl: function (x, y, z) {
          console.log(x,y,z)
          //拼接瓦片URL
          let url =
            `https://xxxxxxxxx.com/${cutUrl}/` +
            z +
            "/" +
            x +
            "_" +
            y +
            ".png";
          return url;
        },
        tileSize: 256, //瓦片像素尺寸
        minZoom: Number(baseData.mapMinRatio), //显示自定义瓦片的最小级别
        maxZoom: Number(baseData.mapMaxRatio), //显示自定义瓦片的最大级别
        visible: true, //是否可见
        zIndex: 5000, //层级高度(z轴)
        opacity: 1, //图层透明度:1不透明,0为全透明
        map: this.mapObj, //设置图层显示到哪个地图实例中
      });
      
      //当图中打点非常密集,地图的可读性变差时,推荐使用点聚合功能,它会根据您的设置,自动将距离相近的标记聚合到一起,以统计数字方式呈现在图中相应位置,从而实现清晰、易读的场景需求。
       this.markerCluster = new TMap.MarkerCluster({
        id: "cluster",
        map: this.mapObj,
        enableDefaultStyle: false, // 关闭默认样式
        minimumClusterSize: 2,
        geometries: [
         // 这个数据可以写死  也可以调用方法 动态添加
             {position: new TMap.LatLng(39.982829,116.306934)},
	         {position: new TMap.LatLng(39.989011,116.323586)},
	         {position: new TMap.LatLng(39.978751,116.313286)},
	         {position: new TMap.LatLng(39.980593,116.304359)},
        ],
        zoomOnClick: true,
        gridSize: 60,
        averageCenter: true,
      });
     // 或者使用该方法  添加数据
    // this.markerCluster.setGeometries([]);

    // 折现初始化
    // 此处变量为动态配置的颜色  你也可以写死
      let lineColor = this.baseData.lineColor;
      let lineThickness = this.baseData.lineThickness;
      let lineOuterColor = this.baseData.lineOuterColor;
      let lineOuterThickness = this.baseData.lineOuterThickness;
      this.polyline = new TMap.MultiPolyline({
        id: "polyline-layer",
        map: this.mapObj,
        styles: {
          polyline: new TMap.PolylineStyle({
            color: lineColor, //线填充色
            width: lineThickness, //折线宽度
            borderWidth: lineOuterThickness, //边线宽度
            borderColor: lineOuterColor, //边线颜色
            lineCap: "round", //线端头方式
            showArrow: true,
            ArrowOptions: {
              space: 5,
            },
          }),
        },
        geometries: [
             // 这个数据可以写死  也可以调用方法 动态添加
	        // 此处为点数据 同上面一样
	     ],
      });
	    // 或者使用该方法  添加数据
	    // this.polyline.setGeometries([]);
     

       // 标记点文本
       this.labelMarker = new TMap.MultiLabel({
        id: "label-layer",
        map: this.mapObj,
        zIndex: 7000,
        styles: {
          label: new TMap.LabelStyle({
            alignment: "center", //文字水平对齐属性
            verticalAlignment: "middle", //文字垂直对齐属性
            color: "#fff",
            size: 18,
            offset: { x: 0, y: 20 },
            backgroundColor: "rgba(86, 76, 84, 0.80)",
            // strokeWidth: 2,
            borderRadius: 25,
            padding: "4px 20px",
          }),
          labelN: new TMap.LabelStyle({
            alignment: "center", //文字水平对齐属性
            verticalAlignment: "middle", //文字垂直对齐属性
            color: "#fff",
            size: 12,
            offset: { x: 0, y: 15 },
            backgroundColor: "rgba(86, 76, 84, 0.80)",
            // strokeWidth: 2,
            // width :140,
            // height: 20,
            padding: "2px 12px",
            borderRadius: 25,
          }),
          labelEn: new TMap.LabelStyle({
            alignment: "center", //文字水平对齐属性
            verticalAlignment: "middle", //文字垂直对齐属性
            color: "#333",
            size: 12,
            offset: { x: 0, y: 15 },
            backgroundColor: "rgba(254,250,245,0.85)",
            // strokeWidth: 2,
            width: 180,
            height: 20,
            borderRadius: 25,
          }),
        },
        enableCollision: false,
        geometries: [
             // 这个数据可以写死  也可以调用方法 动态添加
	        // 此处为点数据 同上面一样
	     ],
      });


       // 标记点 标记点点击事件
       this.mapMarker = new TMap.MultiMarker({
        map: this.mapObj, // 显示Marker图层的底图
        zIndex: 6000,
        styles: {
          small_1: new TMap.MarkerStyle({
            // 点标注的相关样式
            width: 32, // 宽度
            height: 36, // 高度
            anchor: { x: 16, y: 36 }, // 标注点图片的锚点位置
            src: "./images/smartMap/spot.png", // 标注点图片url或base64地址
          }),
          big_1: new TMap.MarkerStyle({
            width: 40,
            height: 48,
            anchor: { x: 20, y: 48 },
            src: "./images/smartMap/spot.png",
          }),
          user: new TMap.MarkerStyle({
            width: 36,
            height: 44,
            anchor: { x: 18, y: 44 },
            src: "https://eshopfile.xxxxx.com/2023031609350436976.png",
          }),
        },
        enableCollision: false, // 开启碰撞
        geometries: [
             // 这个数据可以写死  也可以调用方法 动态添加
	        // 此处为点数据 同上面一样
	     ],
      });
      
	    // 标记点点击事件
	    this.mapMarker.on("click", this.markerClick);

	    // 点击事件
		this.mapObj.on("click", this.mapClick);
     },
      mapClick(val) {
       // 点击事件返回经纬度 等各种信息
      console.log(val)
    },
    markerClick(res){
     console.log(res)
    }
 }
  1. 效果图
    在这里插入图片描述

  2. 项目中的图片 请更换为您自己的图片。

  3. 该博客 包含 地图的初始化 折线 瓦片图 标记点 标记点文本 等实现信息。 希望可以帮助您!

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

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

相关文章

Ambari Hive 创建函数无权限

作者&#xff1a;櫰木 1、创建udf函数 参考文档&#xff1a;https://blog.csdn.net/helloxiaozhe/article/details/102498567 如果已经编写好&#xff0c;请使用自己的。如果没有请参考以上链接进行udf函数编写。 2、创建函数遇到的问题 由于集群开启了kerberos&#xff0…

UART编程

Q:为什么使用串口前要先在电脑上安装CH340驱动&#xff1f; 三种编程方式简介 也可以通过DMA方式减小CPU资源的消耗 直接把数据在SRAM内存和UART模块进行传输 &#xff0c;流程&#xff1a; 把数据在DMA中配置好数据传输产生中断&#xff0c;CPU介入 编程方式改进 1、查询…

求职学习笔记day1

自己一直算是一个内耗拖延的人&#xff0c;内耗着考了研&#xff0c;内耗着拖着不找工作&#xff0c;一直拖到了毕业。研究生没考上&#xff0c;工作没有&#xff0c;也羡慕着别人成功的生活&#xff0c;最后毕业的也不太开心。 一、最近总结 游戏 高考结束以来和大学期间作息…

Proteus + Keil单片机仿真教程(六)多位LED数码管的动态显示

上一节我们通过锁存器和八个八位数码管实现了多个数码管的静态显示,这节主要讲解多位数码管的动态显示,所谓的动态显示就是对两个锁存器的控制。考虑一个问题,现在给WS位锁存器增加一个循环,让它从1111 1110到0111 1111会发生什么事情?话不多说,先上代码: #include<…

护(H)网(W)行动正当时:你对HW知多少,一文带你全面了解护网行动

引言&#xff1a;2016年我国发布了《网络安全法》&#xff08;于2017年6月1日正式生效&#xff09;&#xff0c;明确规定了关键信息基础设施的运营者必须制定网络安全事件应急预案&#xff0c;并定期进行演练&#xff0c;为HW行动的开展提供了法律依据&#xff0c;通过红蓝对抗…

加入鲲鹏原生开发训练营,共驭技术创新巨浪

随着生态的不断成熟&#xff0c;鲲鹏逐渐从迁移为主发展到原生开发阶段&#xff0c;与此同时&#xff0c;鲲鹏也面临着让开发者能够在变道后提档加速的新任务&#xff0c;从应用迁移走向原生开发。 开发者是计算技术创新的关键力量。为了让开发者全面了解鲲鹏原生开发理论知识…

html——常用标签

HTML标签 1. 结构说明 标签由<、>、/、英文单词或字母组成 标签<>中包裹起来的英文单词或字母称为标签名 2. 标签种类 常见标签由两部分组成&#xff0c;称之为双标签&#xff0c;前部分称为开始标签&#xff0c;后部分称为为 结束标签&#xff0c;两部分之间包…

全国排名第一的起名大师颜廷利:唯有量力而行,才能。。。

在探索成功与个人成长的旅程中&#xff0c;中国传统哲学提供了一个独特的视角&#xff1a;量力而行&#xff0c;以展现最靓丽的自我。这一理念不仅深植于中国丰富的文化传统之中&#xff0c;而且与现代社会的实用主义不谋而合。 中国最受欢迎的起名大师颜廷利教授&#xff0c;一…

Java小白入门到实战应用教程-开发环境搭建-JDK安装详细教程

Java小白入门到实战应用教程-JDK安装详细教程 writer:eleven 开发环境搭建 上节内容补充 在带领大家搭建开发环境前&#xff0c;先来了解一些java领域的名词。 Java根据应用领域区别可分为三个版本&#xff1a; JavaSE&#xff1a;是Java的标准版&#xff0c;提供了Java的…

Open3D Ransac算法分割点云平面

目录 一、概述 1.1算法原理 1.2应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2分割后点云 前期试读&#xff0c;后续会将博客加入该专栏&#xff0c;欢迎订阅 Open3D与点云深度学习的应用_白葵新的博客-CSDN博客 一、概述 1.1算法原…

VSCode 远程反复输入密码不能链接问题解决

通过 vscode 远程连接服务器时出现了连接不上&#xff0c;而且一直要循环输入密码的问题&#xff0c;可能是因为上次异常退出导致。 主要解决思路是删除当前 vscode 远端服务后&#xff0c;重新建立连接。 解决方法一 在 vscode 端接口删除 vscode 服务。 View->Commond…

基于Java的校园交友网站系统

你好&#xff0c;我是专注于计算机技术研究的学姐码农小野。如果你对校园交友网站系统的构建或者相关技术感兴趣&#xff0c;欢迎私信交流。 开发语言 Java 数据库 MySQL 技术 Java语言、SpringBoot框架、B/S结构 工具 MyEclipse、Navicat、Maven 系统展示 首页 个人…

如何理解跨界营销?详解跨界营销的主要类型和方法!

跨界营销是一种创新的营销策略&#xff0c;它巧妙地捕捉不同行业、产品和消费者偏好之间的共通点和潜在联系。这种策略将看似不相关的元素相互融合&#xff0c;相互影响&#xff0c;创造出一种全新的生活方式和审美观念&#xff0c;以此吸引目标消费者群体的注意和青睐。 通过…

Efficient Estimation of Word Representations in Vector Space论文笔记解读

基本信息 作者TomasMikolovdoi10.48550发表时间2013期刊ICLR网址http://arxiv.org/abs/1301.3781 研究背景 1. What’s known 既往研究已证实 前馈神经网络语言模型(NNLM) 循环神经网络语言模型(RNNLM) 2. What’s new 创新点 Word2vec有两种模型&#xff1a;CBOW和Skip-gr…

怎么用【指令工程】调优大模型?

如今&#xff0c;大模型有很多&#xff0c;对于大模型的调优方式也有很多&#xff0c;你是否也在纠结&#xff1f;那么该怎么用【指令工程】调优大模型&#xff1f;本文总结了相关内容&#xff0c;一起来看看吧。 你是否曾在大模型的调优选择感到非常纠结&#xff0c;不知如何做…

Python实战Elasticsearch的核心技巧详解

概要 Elasticsearch 是一个分布式的搜索引擎,可以用于全文搜索、结构化搜索、分析等多种场景。它基于Lucene构建,提供了强大的搜索功能和数据分析能力。本文将详细介绍如何使用Python实现与Elasticsearch的交互,包括安装、配置、基本操作和实际应用示例。 安装和配置 安装…

【MybatisPlus】QueryWapper和LambdaQueryWrapper的区别

【MybatisPlus】QueryWapper和LambdaQueryWrapper的区别 &#xff08;一&#xff09;MyBatisPlus的条件查询构造器QueryWrapperLambdaQueryWrapper优缺点使用场景 &#xff08;二&#xff09;Lambda的概念&#xff08;三&#xff09;QueryWrapper如何进化成LambdaQueryWrapper的…

【排序算法】计数排序

目录 一.基本思想 二.缺陷及优化 三.代码实现 四.特性总结 1.可以排序负数 2.适合范围集中的整数 3.时间复杂度&#xff1a;O(Nrange) 4.空间复杂度&#xff1a;O(range) 5.稳定性&#xff1a;稳定 一.基本思想 根据待排序数组a创建一个新的数组count&#xff0c;该数组…

这个软件可无限制免费领取金币,领取后即可自由实现AI文生图,AI Chat及其AI文生PPT等AI功能

目前AI文生图工具浩如烟海&#xff0c;不过基本上都是限制使用&#xff0c;每天只能使用几次到十几次&#xff0c;如果还想继续使用&#xff0c;那么只能花钱购买&#xff0c;这对于绝大多数人来说确实是一个痛点&#xff0c;那么有没有一款软件可以实现使用自由呢&#xff1f;…

【在线词典】项目实现

15_Dictionary 在线词典 搭建客户端-服务器架构 准备必要的资源 整理原始数据 整理英汉双语对照表&#xff0c;将XLSX格式转换成CSV格式&#xff0c;准备好vocabulary_list.csv文件备用 注意&#xff1a;CSV格式的文件必须使用UTF-8的字符集&#xff1b; 建立mydatabase.…