《前端开发 实践之 腾讯地图API 学习》

目录

  • 腾讯地图
    • 基础入门
      • 方式一
      • 方式二
    • 事件监听
      • 监听地图瓦片加载完成事件
    • 移除缩放控件 & 旋转控件 & 比例尺控件
    • 初始化marker图层
    • 创建信息窗
    • 点击地图拾取坐标
    • 打点标记
    • 反解析成详细地址
    • 根据输入详细地址 反解析成经纬度


腾讯地图

腾讯地图API学习-官方地址:https://lbs.qq.com/webDemoCenter/glAPI/glServiceLib/geocoderGetLocation

在这里插入图片描述

在这里插入图片描述

个人博客地址:

图片


基础入门

1. 初始化地图:

方式一

this.latLng = new qq.maps.LatLng( lat, lng );// 初始化默认坐标(入参:经纬度)// this.mapDetail = new qq.maps.Map( 目标DOM节点 ), {// 默认地图模式zoom: 13,// 设置地图缩放级别center: this.latLng,// 设置地图中心点坐标});

方式二

this.latLng = new TMap.LatLng( lat, lng );// 初始化默认坐标(入参:经纬度)this.mapDetail = new TMap.Map( 目标DOM节点 ), {// 默认地图模式zoom: 13,// 设置地图缩放级别center: this.latLng,// 设置地图中心点坐标});

事件监听

1. 监听地图瓦片加载完成事件

监听地图瓦片加载完成事件

let that = this// 监听地图瓦片加载完成事件this.mapDetail.on("tilesloaded", function () {console.log(`腾讯地图加载完成`);})

移除缩放控件 & 旋转控件 & 比例尺控件

console.log(`移除缩放控件 & 旋转控件 & 比例尺控件`);let toDeleteArr = ['ZOOM', 'ROTATION', 'SCALE']toDeleteArr.map(i => {if (this.mapDetail.getControl(TMap.constants.DEFAULT_CONTROL_ID[i])) this.mapDetail.removeControl(TMap.constants.DEFAULT_CONTROL_ID[i]);})

初始化marker图层

console.log(`初始化marker图层`);this.markerLayer = new TMap.MultiMarker({id: `marker-layer`,map: this.mapDetail,styles: {// 点标记样式:markermarker: new TMap.MarkerStyle({width: 25, // 样式宽height: 40, // 样式高anchor: { x: 10, y: 30 }, // 描点位置// src: 'https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/markerDefault.png',// 引入自定义大头针图标}),},});

创建信息窗

console.log(`创建信息窗`);this.info = new TMap.InfoWindow({map: this.mapDetail,position: this.mapDetail.getCenter(),offset: { x: -3, y: -35 } //设置信息窗相对position偏移像素}).close();console.dir(this.info.dom);

点击地图拾取坐标

let that = this//绑定点击事件this.mapDetail.on("click", function( evt ) {var lat = evt.latLng.getLat().toFixed(7);var lng = evt.latLng.getLng().toFixed(7);console.log(`当前点击的坐标为:${ lat }, ${ lng }`);that.inglatXY = [ lng, lat ]that.getDetailAddress( lat, lng );that.toMarker( lat, lng );that.mapDetail.panTo(new qq.maps.LatLng(lat, lng))})

打点标记

去进行打点标记
if (this.markerLayer) {this.removeMarker();this.toCreateMarkerLayer();}this.markerLayer.add({position: new TMap.LatLng( lat, lng ),styleId: 'marker',// 应用自定义样式});console.log(this.markerLayer.geometries[0].position, `markerLayer`);

反解析成详细地址

let geocoder = new qq.maps.Geocoder();// 初始化geocoderlet latLng = new qq.maps.LatLng( lng, lat );geocoder.getAddress( latLng );geocoder.setComplete(result => {this.detailAddress = result.detail.address;console.log(`地址:`, this.detailAddress);this.toShowPOI( { poi: { name: this.detailAddress, latLng } } );});geocoder.setError( err => {this.$message.warning(`解析地址出错`);});

根据输入详细地址 反解析成经纬度

let _this = thisif (val) {let geocoder = new qq.maps.Geocoder();// 初始化geocodergeocoder.getLocation(val)geocoder.setComplete(result => {const { lat, lng } = result.detail.location;let latLng = new qq.maps.LatLng(lat, lng);this.latitude = lat;this.longitude = lng;this.toMarker( lat, lng )this.toShowPOI( { poi: { name: result.detail.address, latLng } } );this.mapDetail.panTo(new qq.maps.LatLng(lat, lng))console.log(result.detail, 'getXYByDetailAddress');})geocoder.setError(err => {console.log(`解析错误,请输入正确地址`);// this.$message.warning(`解析错误,请输入正确地址`);});

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ系列(14)--Topics交换机的简介与实现

1、Topics交换机的介绍 Topics交换机能让消息只发送往绑定了指定routingkey的队列中去,不同于Direct交换机的是,Topics能把一个消息往多个不同的队列发送;Topics交换机的routingkey不能随意写,必须是一个单词列表,并以…

23款奔驰GLE450动感型升级柏林之声音响系统,体验不一样的感觉

奔驰GLE450动感型升级柏林之声的音响效果自然非同凡响,在人声、交响乐音乐厅感受方面都有非常逼真的现场感受,结合柏林之声的界面调整,可以在不同方位体验的高保真的音乐之享! 小柏林音响总共13个喇叭1台功放由4个高音、4个中音、…

13 个最佳免费 PDF 编辑器清单

您正在寻找一款真正免费的 PDF 编辑器,不仅可以编辑和添加文本,还可以更改图像、添加您自己的图形、签署您的名字、填写表格等等?您来对地方了:我研究了这些类型的应用程序,以得出您正在寻找的内容的列表。 其中一些是…

Linux·图解Linux网络包接收过程

因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话&…

hadoop -- Hbase

HBase是一个分布式、可扩展、面向列的数据存储(百万级别列)、可伸缩、高可靠性、实时读写的NoSQL 数据库。 HBase利用 Hadoop的 HDFS作为其文件存储系统, 利用MapReduce 来处理HBase中的海量数据, 利用Zookeeper作为分布式协同服…

《Redis 核心技术与实战》课程学习笔记(七)

切片集群:数据增多了,是该加内存还是加实例? 切片集群,也叫分片集群,就是指启动多个 Redis 实例组成一个集群,然后按照一定的规则,把收到的数据划分成多份,每一份用一个实例来保存。…

手机屏幕点胶区域定位机器视觉系统软硬件方案

【检测目的】 点胶之前定位产品,找寻效果较明显的边缘位置 【样品一】 两张图片为一个产品点胶部位的左边和右边。通过边缘A和边缘B这两条线可以找出交点位置做为定位点(产品不平会造成图像模糊的情况) 【样品二】 两张图片为一个产品点胶部位…

【Zabbix 监控 Windows 系统,Java应用,SNMP】

目录 一、Zabbix 监控 Windows 系统1、下载 Windows 客户端 Zabbix agent 22、安装客户端,配置3、在服务端 Web 页面添加主机,关联模板 二、Zabbix 监控 java 应用1、客户端开启 java jmxremote 远程监控功能1、配置 java jmxremote 远程监控功能2、启动…

Python算法笔记(1)-时间复杂度、空间复杂度

Python算法笔记(1)-时间复杂度 1.时间复杂度 时间复杂度是一个描述算法的运行时间的一个函数,它描述了算法的运行时间和输入数据的规模之间的关系,时间复杂度的表示方法用O表示,时间复杂度也用来考察输入值无限趋近无…

【NLP】基础工程:词嵌入

一、说明 词嵌入是高维向量空间中单词或短语的数字表示,其中向量之间的几何关系捕获相应单词之间的语义和句法相似性。这些表示使机器学习模型能够以更有意义的方式理解和处理自然语言。 在传统的 NLP 方法中,单词是使用稀疏的 one-hot 编码向量来表示的,其中每个单词在大词…

专治疑难系列 - 解决“npm ERR!”报错问题

‍‍🏡博客主页: Passerby_Wang的博客_CSDN博客-系统运维,云计算,Linux基础领域博主 🌐所属专栏:『专治疑难系列』 🌌上期文章: 专治疑难系列 - 解决打印机凭证冲突问题 📰如觉得博主文章写的…

插入排序法解析

插入排序法解析 什么是插入排序法 插入排序法是一种简单但有效的排序算法,其基本思想是将一个待排序的元素逐个插入到已经排好序的元素序列中,直至所有元素都被插入完成,从而得到一个有序序列。 具体步骤如下: 假设初始时&…