腾讯地图点位点击后展示信息窗口

效果展示:

点击点位后:

点击下一个清除上一个信息窗体:

代码实现:

监听点位点击:

如何清除上一个信息窗体:

清除:

代码:

let currentInfoWindow = null; // 用于保存当前显示的信息窗体对象

const fetchData = async (page = 1) => {
	try {
		const response = await axios.get(`http://localhost:8071/api/poi/poi_list?page=${page}`);
		poiList.value = response.data.data.data; // 获取数据列表
		currentPage.value = response.data.data.current_page; // 当前页
		pageSize.value = response.data.data.per_page; // 每页条数
		total.value = response.data.data.total; // 总条目数
		
		updateMarkers(); // 将获取到的数据更新地图点位
	} catch (error) {
		showToast('Error fetching data');
		console.error('Error fetching data:', error);
	}
};

const updateMarkers = () => {
	const markerGeometries = poiList.value.map((poi, index) => ({
		id: `${index + 1}`, // Generate a unique ID for each marker
		position: new TMap.LatLng(poi.lat, poi.lng),
		properties: {
			"title": poi.title
		}
	}));

	// Update TMap.MultiMarker
	marker.setGeometries(markerGeometries);

	// 添加点击事件监听器
	marker.on('click', (event) => {
		if (event.geometry && event.geometry.properties && event.geometry.properties.title) {
			// 清除之前的信息窗体
			if (currentInfoWindow) {
				currentInfoWindow.close();
			}
			
			// 显示当前点击的信息窗体
			showInfoWindow(event.geometry);
		}
	});
};

const showInfoWindow = (geometry) => {
	const infoWindow = new TMap.InfoWindow({
		map: map,
		position: geometry.position,
		content: `<div style="padding: 5px;">${geometry.properties.title}</div>`,
		offset: { x: 0, y: -30 } // 偏移以使信息窗体显示在标记上方
	});

	// 更新当前显示的信息窗体对象
	currentInfoWindow = infoWindow;
};

const initMap = () => {
	const center = new TMap.LatLng(31.187358368937858, 121.46002628131794);

	// Initialize the map with initial zoom level
	map = new TMap.Map("container", {
		rotation: 20,
		pitch: 30,
		zoom: zoomLevel.value, // Use zoomLevel from ref()
		center: center,
	});
	
	marker = new TMap.MultiMarker({
		map: map,
		styles: {
			// 点标记样式
			marker: new TMap.MarkerStyle({
				width: 20, // 样式宽
				height: 30, // 样式高
				anchor: {
					x: 10,
					y: 30
				}, // 描点位置
			}),
		},
		geometries: [],
	});

	// 点击屏幕查看经纬度
	map.addListener('click', function(event) {
		console.log(event);
		// console.log('Clicked LatLng:', event.latLng.lat(), event.latLng.lng());
	});
};

腾讯地图marker是腾讯地图API中的一个功能,用于在地图标记特定的位置。根据引用,在使用腾讯地图的marker之前,需要先引入腾讯地图的JavaScript API,并初始化地图对象。可以通过调用TMap.Map()方法创建地图对象,并设置中心坐标、缩放级别和视图模式。 根据引用,可以异步引入腾讯地图SDK,需要封装一个初始化方法,该方法会判断是否已经加载了SDK,如果已加载,则直接返回;如果未加载,则通过动态创建script标签来异步加载SDK,并在地图加载完成后触发回调函数。 在使用腾讯地图marker之前,可能需要获取地的经纬度信息。根据引用,可以通过调用腾讯地图的地和经纬度API来实现。例如,在获取地的接口中,可以使用GET请求,将关键词和申请的key作为参数,通过发送请求获取地信息;在获取经纬度的接口中,也可以使用GET请求,将经纬度和申请的key作为参数,通过发送请求获取经纬度信息。 综上所述,腾讯地图marker的使用需要先引入腾讯地图的JavaScript API,并初始化地图对象。然后可以使用腾讯地图的地和经纬度API来获取地信息和经纬度信息。最后,可以通过调用地图对象的marker相关方法来在地图标记特定的位置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [记录在Vue项目里面使用腾讯地图](https://blog.csdn.net/m0_60835161/article/details/123833185)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [腾讯位置服务+element-ui 实现地址搜索&marker标记功能](https://blog.csdn.net/weixin_45628602/article/details/111661342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值