腾讯地图的(地图选点|输入模糊匹配)

news2025/1/11 17:02:11

1.支持用户输入框输入进行模糊匹配获取详细地址以及经纬度·2.支持用户模糊匹配后点击选点获取详细地址以及经纬度 1.支持用户输入框输入进行模糊匹配获取详细地址以及经纬度·2.支持用户模糊匹配后点击选点获取详细地址以及经纬度

 

<template>
	<div class="tencentMap-wrap">
		<div class="tencent-container" id="tencent-container"></div>
		<p class="tencent-input">
			<span class="tencent-input-label">地址:</span>
			<input class="tencent-input-style" id="keyword" type="text" v-model="keyword" />
			<ul id="suggestionList">
				<li class="suggestion-li" v-for="(item,index) in suggestionList" :key="index" @click="selectSuggestionHandle(item)">
					<p class="suggestion-li-title">{{item.title}}</p>
					<p class="suggestion-li-content">{{item.address}}</p>
				</li>
			</ul>
		</p>
	</div>
</template>

<script>
import loadTMap from '@/utils/loadTMap.js';
const mapInit = loadTMap('PZHBZ-G6A34-QV7UJ-X4QXK-YIMRK-RAFZS');
let map =null;
let marker = null;
export default {
	data() {
		return {
			suggestionList:[],
			keyword:''
		};
	},
	watch:{
		keyword(value){
			let keyword=this.trim(value)
			if(keyword){
				this.searchSuggestionAPI(keyword)
			}
		}
	},
	created() {
		this.initMap();
	},
	mounted() {},
	methods: {
		/**
		 * 初始化地图
		 * **/
		initMap() {
			mapInit.then(TMap => {
				//定义map变量,调用TMap.Map构造函数创建地图
				map = new TMap.Map(document.getElementById('tencent-container'), {
					center: new TMap.LatLng(31.230355, 121.47371), //设置地图中心点坐标
					zoom: 17 //设置地图缩放级别
				});
				
				const geocoder = new TMap.service.Geocoder(); // 新建一个正逆地址解析类
				//绑定点击事件
				map.on('click', (evt)=> {
					if (marker) {
						marker.setMap(null);
						marker = null;
					}

					const lat = evt.latLng.getLat().toFixed(6);
					const lng = evt.latLng.getLng().toFixed(6);
					const location = new TMap.LatLng(lat, lng);
					geocoder
					.getAddress({ 
						location:location,
					}) // 将给定的坐标位置转换为地址
					.then((result) => {
						console.log(evt)
						console.log(result)
						this.$emit("tMap",{
							title:(evt.poi!=null?evt.poi.name:result.result.formatted_addresses.recommend),
							address:result.result.address,
							lat:lat,
							lng:lng
						})
					});

					if (!marker) {
						marker = new TMap.MultiMarker({
							map: map,
							geometries: [
								{
									position: new TMap.LatLng(lat, lng)
								}
							]
						});
					}
				});
				
			});
		},
		/**
		 * 搜索
		 * **/
		searchSuggestionAPI(keyword){
			mapInit.then(TMap => {
				// 新建一个关键字输入提示类
				var suggest = new TMap.service.Suggestion({
					pageSize: 10 // 返回结果每页条目数
				});
				suggest.getSuggestions({ keyword: keyword })
				.then((result) => {
						// 以当前所输入关键字获取输入提示
					this.suggestionList=result.data;
				})
				.catch((error) => {
					console.log(error);
				});
				
			})
		},
		/**
		 * 点击选中下拉数据
		 * **/
		selectSuggestionHandle(item){
			this.createMarkerAPI(item.location.lat,item.location.lng);
			this.$emit("tMap",{
				title:item.title,
				address:item.address,
				lat:item.location.lat,
				lng:item.location.lng
			})
			this.suggestionList=[]
		},
		createMarkerAPI(lat, lng){
			map.setCenter({
				lat, lng
			});
			mapInit.then(TMap => {
				if (marker) {
					marker.setMap(null);
					marker = null;
				}
								
				if (!marker) {
					marker = new TMap.MultiMarker({
						map: map,
						geometries: [
							{
								position: new TMap.LatLng(lat, lng)
							}
						]
					});
				}
				
			});
		},
		/**
		 * 去掉空隙
		 * **/
		trim(str, type) {
			str = str || ''
			type = type || 1
			switch (type) {
				case 1:
					return str.replace(/\s+/g, "");
				case 2:
					return str.replace(/(^\s*)|(\s*$)/g, "");
				case 3:
					return str.replace(/(^\s*)/g, "");
				case 4:
					return str.replace(/(\s*$)/g, "");
				default:
					return str;
			}
		}
	}
};
</script>

<style lang="scss" scoped>
.tencentMap-wrap {
	width: 100%;
	.tencent-container {
		width: 100%;
		height: 400px;
	}
	.tencent-input {
		width: 100%;
		margin-top: 10px;
		position: relative;
		.tencent-input-label {
			font-size: 16px;
			color: #333;
			padding-right: 10px;
		}
		.tencent-input-style {
			border: 1px solid #dcdcdc;
			width: 200px;
			height: 40px;
			border-radius: 8px;
			padding-left: 12px;
			padding-right: 12px;
		}
		#suggestionList{
			border-radius: 8px;
			width: 400px;
			max-height: 200px;
			overflow-y: auto;
			background-color: #fff;
			position: absolute;
			top:40px;
			left: 58px;
			z-index: 99;
			display: flex;
			flex-direction: column;
			.suggestion-li{
				width: 91.47%;
				margin: auto;
				display: flex;
				flex-direction: column;
				padding: 5px 0px;
				cursor: pointer;
				.suggestion-li-title{
					font-size: 16px;
					color: #333;
				}
				.suggestion-li-content{
					font-size: 15px;
					color: #999;
					margin-top: 5px;
				}
			}
		}
	}
}
</style>


 

 

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

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

相关文章

Web 服务器-Tomcat

文章目录 Web服务器一、Tomcat简介二、基本使用三、在IDEA中创建Maven Web项目四、在IDEA中使用Tomcat Web服务器 一、Tomcat简介 二、基本使用 三、在IDEA中创建Maven Web项目 四、在IDEA中使用Tomcat

首个ChatGPT机器人- Figure 01;李开复旗下零一万物推出Yi系列AI大模型API

&#x1f989; AI新闻 &#x1f680; 首个ChatGPT机器人- Figure 01 摘要&#xff1a;Figure 01是一个由初创公司Figure联合OpenAI开发的人形机器人。它展示了与人类和环境互动的能力&#xff0c;可以说话、看东西&#xff0c;并且可以执行各种任务&#xff0c;如递食物、捡垃…

SIP调试之SIPP测试工具

SIPP是针对SIP协议的一个性能测试的命令行工具&#xff0c;可以动态显示测试的统计信息&#xff08;如呼叫速率、延时、消息统计等&#xff09;。用户可以通过XML场景配置文件&#xff0c;自定义模拟各种UAC/UAS测试场景的信令交互流程&#xff0c;可以被用来测试IP话机、SIP代…

初识微信小程序之swiper和swiper-item的基本使用

在我还没接触到微信小程序之前&#xff0c;通常使用轮播要么手写或使用swiper插件去实现&#xff0c;当我接触到微信小程序之后&#xff0c;我看到了微信小程序的强大之处&#xff0c;让我为大家介绍一下吧&#xff01; swiper与swiper-item一起使用可以做轮播图 基本使用&…

软件无线电系列——带通信号采样定理

本节目录 一、带通信号采样定理 1、带通信号采样定理的定义 2、带通信号采样定理的证明本节内容 一、带通信号采样定理 1、带通信号采样定理的定义 Nyquist采样定理是对频谱分布在(0,fH)上的基带信号的采样分析的&#xff0c;如果信号的频谱分布在某一限定的频带(fL,fH)上&…

【unity与android的交互(一)】安卓打包相关的常见参数详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

hadoop单机ssh免密登录

1. 在hadoop目录下生成密钥对 [rootmaster centos]# cd /usr/apps/hadoop-2.7.1/ [rootmaster hadoop-2.7.1]# ssh-keygen -t rsa //在hadoop目录下生成密钥对 2.找到密钥对的位置 [rootmaster hadoop-2.7.1]# find / -name .ssh //找到密钥对的位置 cd [rootmaster hadoo…

vscode 运行 java 项目之解决“Build failed, do you want to continue”的问题

Visual Studio Code运行 java 起来似乎比 IDEA 更轻量、比 eclipse 更友好&#xff0c;是不可多得的现代编译法宝。 安装好官方推荐的 java 扩展包后&#xff0c;就可以运行 java 代码了。功能 比 code runner 强&#xff0c;支持 gradle、maven、普通java项目&#xff0c;运行…

深度学习 Day27——J7对于ResNeXt-50算法的思考

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 文章目录 前言问题分析 前言 关键问题&#xff1a;ResNeXt-50中conv_shortcutFalse时…

Windows蓝牙驱动开发之模拟HID设备(一)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)

by fanxiushu 2024-03-14 转载或引用请注明原作者 把Windows电脑模拟成蓝牙鼠标和蓝牙键盘&#xff0c;简单的说&#xff0c;就是把笨重的PC电脑当成鼠标键盘来使用。 这应该是一个挺小众的应用&#xff0c;但有时感觉也应该算比较好玩吧&#xff0c; 毕竟实现一种一般人都感觉…

中值定理j

f ( n ) ( ξ ) 0 f^{(n)}(\xi)0 f(n)(ξ)0

MATLAB编译器配置:MinGW

使用 MATLAB 2022b版本&#xff0c;查询编译器时如上&#xff0c;想安装个MinGW编译器&#xff0c;自带的附加资源管理不好使&#xff0c;只能换个别的法子&#xff0c;经过一些参考&#xff0c;总结如下。 步骤1.在这里下载一个MinGW.最新版本是10.3.0.然后默认安装&#xff…

获取源数据推送到Kafka

打开BigData-KongGuan项目 打开BigData-KongGuan项目&#xff0c;在上一个任务&#xff08;“用户登录”&#xff09;的基础上继续完成本阶段任务。初始化加载SpringBoot项目的代码所在位置src/main/java/com/qrsoft/BigDataKongGuanApplication.java &#xff0c;代码如下&am…

Flutter:构建美观应用的跨平台方案

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Redis:ClassCastException【bug】

Redis&#xff1a;ClassCastException【bug】 前言版权Redis&#xff1a;ClassCastException【bug】错误产生相关资源控制器&#xff1a;UserController("/user")配置&#xff1a;RedisConfiguration实体类&#xff1a;User数据表&#xff1a;User 解决 最后 前言 2…

ElasticSearch之通过update_by_query和_reindex重建索引

写在前面 当我们索引的mapping&#xff0c;setting发生变更时&#xff0c;我们需要重建索引来使得这些变更生效。es提供了两种方式来完成重建索引的操作&#xff1a; 1:update by query,在本索引重建 2&#xff1a;reindex&#xff0c;在新索引上重建我们通过具体实例来分别看…

SSM SpringBoot vue智能手机参数分析平台

SSM SpringBoot vue智能手机参数分析平台 系统功能 首页 图片轮播 新闻资讯 手机信息 手机百科 登录注册 个人中心 后台管理 登录注册 个人中心 手机百科管理 用户管理 手机对比管理 配置管理 新闻资讯管理 手机信息管理 对比信息管理 我的收藏管理 开发环境和技术 开发语言…

Node.js基础+原型链污染

Node.js基础 概述&#xff1a;简单来说Node.js就是运行在服务端的JavaScript&#xff0c;Node.js是一个基于Chrome JavaScript运行时建立的一个平台 大小写变换&#xff1a; toUpperCase&#xff08;&#xff09;&#xff1a;将小写字母转为大写字母&#xff0c;如果是其他字…

【iOS ARKit】PhysicsBodyComponent

在学习完 RealityKit 进行物理模拟的相关理论知识后&#xff0c;下面通过使用 PhysicsBodyComponent 组件进行物理模拟演示&#xff0c;主要代码如下所示&#xff0c;稍后对代码进行详细解析。 // // PhysicsBodyView.swift // ARKitDeamo // // Created by zhaoquan du on…

禁止ie自动跳转edge

因为微软对ie已经彻底停止维护了&#xff0c;对于没有升级系统的用户来说&#xff0c;会自动更新edge然后将ie给禁止使用。下面方法有效的解决windows10下&#xff0c;禁止ie自动跳转edge。 方法一&#xff1a;对于2023年10月份前的更新可用 打开控制面板&#xff0c;点击网络…