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

react中使用腾讯地图

腾讯文档

申请好对应key

配置限额

https://lbs.qq.com/service/webService/webServiceGuide/webServiceQuota

代码

用到的服务端接口
1.逆地址解析
2.关键词输入提示

import React, { Component } from 'react';
import styles from './map.less'
import { Form, Row, Col, Input, Select, Spin, message } from 'antd';
import PropTypes from 'prop-types';
import { connect } from 'dva';
import axios from 'axios'
import debounce from 'lodash/debounce';
import createItem from '@/components/form/ItemList/createItem';
let key = 'your tengxun key';@createItem()
@connect((merchantsFile) => ({...merchantsFile,
}))export default class mapControl extends Component {componentDidMount() {// this.props.onRef && this.props.onRef(this);this.initMap();this.fetchUser = debounce(this.fetchUser, 800);}static propTypes = {editable: PropTypes.bool,optionKey: PropTypes.string,options: PropTypes.array,addBlankOption: PropTypes.bool,type: PropTypes.oneOf(['dropdown', 'radio', 'group', 'searchQuery', 'menu']),value: PropTypes.any,valueType: PropTypes.oneOf(['object', 'array']),onChange: PropTypes.func,menuData: PropTypes.array,term: PropTypes.string,}static defaultProps = {dispatch: PropTypes.dispatch,}constructor(props) {super(props);// this.qqMap = {};this.state = {inputValue: undefined,// 展示中心经纬度和默认Marker经纬度(没啥用)center: '',fetching: false,loading: false,lnglatObj: {lat: '',lng: ''},data: []};}// 创建TMap方法  核心代码TMap = key => {return new Promise(function (resolve, reject) {window.init = function () {resolve(qq);};var script = document.createElement('script');script.type = 'text/javascript';script.src = 'http://map.qq.com/api/js?v=2.exp&callback=init&key=' + key;script.onerror = reject;document.head.appendChild(script);});}initMap = () => {//设置中心坐标this.TMap(key).then(qq => {//设置地图属性let myOptions = {zoom: 16,mapTypeId: qq.maps.MapTypeId.ROADMAP,viewMode: '2D',disableDefaultUI: true};//创建地图,绑定domthis.map = new qq.maps.Map(document.getElementById('myMap'), myOptions);// 获取当前位置if (navigator.geolocation) {navigator.geolocation.getCurrentPosition(position => {const { latitude, longitude } = position.coords;const currentLocation = new qq.maps.LatLng(latitude, longitude);this.setMapMarker(currentLocation)});}});}// 设置地图点位以及将该点位移入中心位置setMapMarker = (myLatlng) => {// let latObj = { lat: 30, lng: 80 }this.map.setCenter(myLatlng);//现实已经存在的点 qq已挂载在window下面let markerlast = new qq.maps.Marker({position: myLatlng,map: this.map,draggable: true});qq.maps.event.addListener(markerlast, 'dragend', this.changeAddress);}// 拖曳点位并且获取地址 逆地址编码changeAddress = (location) => {this.setState({ loading: true })// 根据拖曳的坐标调取接口获取位置const { dispatch } = this.propsdispatch({type: "后端接口",payload: {path: 'ws/geocoder/v1/',method: 'GET',param: {location: location.latLng.lat + ',' + location.latLng.lng,}}}).then(res => {this.setState({ loading: false })if (res.code !== 20000) {message.error(res.data.message);return} else {this.setState({ lnglatObj: res.data.result.location })this.setInputValue(res.data.result.address)}});}handleChange = (chageValue, twoValue) => {const { form } = this.propsconst { children, data } = twoValue.propsthis.setState({inputValue: children,lnglatObj: data.location}, () => {// console.log(this.state.lnglatObj, 'lnglatObj')const { lat, lng } = data.locationconst locationObj = new qq.maps.LatLng(lat, lng)this.setValueFather()// 地图点位联动this.setMapMarker(locationObj)})}// 触发父组件赋值setValueFather = () => {const { inputValue, lnglatObj } = this.statethis.props.onChange((!inputValue && !lnglatObj)? undefined: [inputValue && inputValue.valueOf(), lnglatObj && lnglatObj.valueOf()]);}setInputValue = (e) => {// 当输入框值为空清空经纬度和默认地址if (!e) {this.setState({lnglatObj: { lng: null, lat: null },})}this.setState({inputValue: e,}, () => {this.setValueFather()})}// 获取模糊查询fetchUser = value => {const { dispatch } = this.propsthis.setState({ loading: true })dispatch({type: "后端接口",payload: {enableCache: true,path: 'ws/place/v1/suggestion',method: 'GET',param: {keyword: value}}}).then(res => {this.setState({ loading: false })if (res.code === 20000) {message.success(res.message);this.setState({ data: res.data.data });} else {message.error(res.message);}});};render() {const { inputValue, fetching, data, loading } = this.stateconst { valueMap } = this.propsconst options = this.state.data.map(d => <Option key={d.id} data={d}>{d.address}</Option>);return (<><SelectshowSearch{...this.props}value={inputValue ? inputValue : valueMap}placeholder='请输入详细地址'filterOption={false}onSearch={this.fetchUser}onChange={this.handleChange}notFoundContent={fetching ? <Spin size="small" /> : null}style={{ marginBottom: 16, width: '100%' }}loading={loading}>{options}</Select><div id="myMap" className={styles.myMap}></div></>);}
}

map.less

.myMap {/*地图(容器)显示大小*/width: 100%;height: 215px;
}.rowmap {margin-bottom: 24px;
}.mapcon {height: 215px;
}

相关文章:

react中使用腾讯地图

腾讯文档 申请好对应key 配置限额 https://lbs.qq.com/service/webService/webServiceGuide/webServiceQuota 代码 用到的服务端接口 1.逆地址解析 2.关键词输入提示 import React, { Component } from react; import styles from ./map.less import { Form, Row, Col, I…...

deepin23beta中SQLite3数据库安装与使用

SQLite 是一个嵌入式 SQL 数据库引擎&#xff0c;它实现了一个自包含、无服务器、零配置、事务性 SQL 数据库引擎。 SQLite 的代码属于公共领域&#xff0c;因此可以免费用于任何商业或私人目的。 SQLite 是世界上部署最广泛的数据库&#xff0c;其应用程序数量之多&#xff0c…...

前后端分离项目环境搭建

1. 使用到的技术和工具 springboot vue项目的搭建 工具 idea&#xff0c;mavennodejs 2. 后端框架搭建 利用maven创建springboot项目 3. 前端项目搭建 1. 安装相关工具 nodejs&#xff1a; 一个开源、跨平台的 JavaScript 运行时环境&#xff0c;可以理解成java当中需要…...

HTML静态网页成品作业(HTML+CSS)——家乡漳州介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…...

世界第二对海信到底有多重要?

作者 | 辰纹 来源 | 洞见新研社 不久前&#xff0c;全球权威市场研究机构Omdia公布了2023年全球电视销量排名&#xff0c;数据显示TCL电视全球销量达到了2526万台&#xff0c;位居全球第二&#xff0c;中国第一。 可是&#xff0c;同样是根据Omdia的数据&#xff0c;海信的官…...

多站合一的音乐搜索下载助手PHP源码l亲测

源码获取方式 回复&#xff1a;031601 搭建教程&#xff1a; 将源码下载上传至宝塔面板&#xff0c;直接运行即可~ 说明&#xff1a; 该源码进行测试&#xff0c;测试成功源码无加密优化相关其他采集问题。...

webserver烂大街?还有必要做么?

目录 什么是 Web Server&#xff1f; 如何提供 HTTP 服务&#xff1f; HTTP协议 简介 工作原理 工作步骤 HTTP请求报文格式 HTTP响应报文格式 HTTP请求方法 HTTP状态码 ​总结 都说webserver是C选手人手必备的烂大街项目&#xff0c;那么webserver 还有必要做么&…...

3.Redis命令

Redis命令 Redis 根据命令所操作对象的不同&#xff0c; 可以分为三大类&#xff1a; 对 Redis 进行基础性操作的命令&#xff0c;对 Key 的操作命令&#xff0c;对 Value 的操作命令。 1.1 Redis 首先通过 redis-cli 命令进入到 Redis 命令行客户端&#xff0c;然后再运行下…...

xray问题排查,curl: (35) Encountered end of file(已解决)

经过了好几次排查&#xff0c;都没找到问题&#xff0c;先说问题的排查过程&#xff0c;多次确认了user信息&#xff0c;包括用户id和alterid&#xff0c;都没问题&#xff0c;头大的一逼 问题排查过程 确保本地的xray服务是正常的 [rootk8s-master01 xray]# systemctl stat…...

【数据库】Oracle内存结构与参数调优

Oracle内存结构与参数调优 Oracle 内存结构概览oracle参数配置概览重要参数&#xff08;系统运行前配置&#xff09;:次要参数&#xff08;可在系统运行后再优化调整&#xff09;: Oracle数据库服务器参数如何调整OLTP内存分配操作系统核心参数配置Disabling ASMM&#xff08;禁…...

PS学习-抠图-蒙版-冰块酒杯等透明物体

选中图&#xff0c;ctrlA 全选 ctrlC复制 创建一个蒙版图层 选中蒙版Alt 点击进入 ctrlv 复制 ctrli 反转 原图层 ctrldelete填充为白色 添加一个背景&#xff0c;这个方法通用 首选创建一个 拖到最底部 给它填充颜色 这个可能是我图片的原因。视频是这样做的...

绝赞春招拯救计划 -- 操作系统,组成原理,计网

进程和线程 进程 一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间&#xff0c;一个进程可以有多个线程 线程 进程中的一个执行任务&#xff08;控制单元&#xff09;&#xff0c;负责当前进程中程序的执行。一个进程至少有一个线程&#xff0c;一个进程可以…...

c语言:于龙加

于龙加 任务描述 于龙同学设计了一个特别的加法规则&#xff0c;加法被重新定义了&#xff0c;我们称为于龙加。 两个非负整数的于龙加的意义是将两个整数按前后顺序连接合并形成一个新整数。 于龙想编程解决于龙加问题&#xff0c;可是对下面的程序他没有思路&#xff01; …...

AcWing 790:数的三次方根 ← 浮点数二分

【题目来源】https://www.acwing.com/problem/content/792/【题目描述】 给定一个浮点数 n&#xff0c;求它的三次方根。【输入格式】 共一行&#xff0c;包含一个浮点数 n。【输出格式】 共一行&#xff0c;包含一个浮点数&#xff0c;表示问题的解。 注意&#xff0c;结果保留…...

【LLM】LLama2模型(RMSNorm、SwiGLU、RoPE位置编码)

note 预训练语言模型除了自回归&#xff08;Autoregressive&#xff09;模型GPT&#xff0c;还有自编码模型&#xff08;Autoencoding&#xff09;BERT[1]、编-解码&#xff08;Encoder-Decoder&#xff09;模型BART[67]&#xff0c;以及融合上述三种方法的自回归填空&#xf…...

【力扣白嫖日记】1934.确认率

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1934.确认率 表&#xff1a;Signups 列名类型user_idinttime_stampdatetime User_id是该表的主键。每一行都…...

TinTin Web3 动态精选:以太坊坎昆升级利好 Layer2,比特币减半进入倒计时

TinTin 快讯由 TinTinLand 开发者技术社区打造&#xff0c;旨在为开发者提供最新的 Web3 新闻、市场时讯和技术更新。TinTin 快讯将以周为单位&#xff0c; 汇集当周内的行业热点并以快讯的形式排列成文。掌握一手的技术资讯和市场动态&#xff0c;将有助于 TinTinLand 社区的开…...

PCL 高斯投影反算:高斯投影坐标转大地坐标(C++详细过程版)

目录 一、算法原理二、代码实现三、结果展示四、测试数据PCL 高斯投影反算:高斯投影坐标转大地坐标(C++详细过程版)由CSDN点云侠原创。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理...

解决:IDEA编译Java程序时报编译失败

1、问题展示&#xff1a; 2、解决方法&#xff1a;...

vue+vite根据版本号清空用户浏览器缓存

项目生产环境发布新版本之后&#xff0c;用户可能会因为一些本地缓存的数据不一样而导致页面报错。这时候可以根据版本号去清空用户缓存。 1、在package.json文件中有一个管理版本号属性&#xff1a;version&#xff0c;在每次打包部署之前修改当前版本号。 2、在main.js文件中…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...

CMS内容管理系统的设计与实现:多站点模式的实现

在一套内容管理系统中&#xff0c;其实有很多站点&#xff0c;比如企业门户网站&#xff0c;产品手册&#xff0c;知识帮助手册等&#xff0c;因此会需要多个站点&#xff0c;甚至PC、mobile、ipad各有一个站点。 每个站点关联的有站点所在目录及所属的域名。 一、站点表设计…...

mcts蒙特卡洛模拟树思想

您这个观察非常敏锐&#xff0c;而且在很大程度上是正确的&#xff01;您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些&#xff0c;您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”&#xff0c;这个观察非…...