地图缩放移动后获取点击点新位置 - JavaScript & 百度地图API
要实现地图缩放或移动后获取之前点击的点的位置所在的新位置,可以使用以下方法:\n\n1. 在点击地图上某一点时,获取该点的经纬度坐标,并记录下来。\n\n2. 监听地图的缩放和移动事件,当地图缩放或移动时,触发相应的事件处理函数。\n\n3. 在事件处理函数中,通过之前记录的点击点的经纬度坐标,结合当前地图的缩放级别和中心点位置,计算出点击点在当前地图上的新位置。\n\n以下是使用JavaScript和百度地图API示例代码:\n\njavascript\n// 记录点击点的经纬度坐标\nvar clickedPoint = null;\n\n// 点击地图时获取经纬度\nmap.addEventListener("click", function(e) {\n clickedPoint = e.point;\n // 打开自定义弹窗\n openCustomPopup(clickedPoint);\n});\n\n// 监听地图的缩放和移动事件\nmap.addEventListener("zoomend", function() {\n // 根据当前地图状态更新自定义弹窗位置\n updateCustomPopup(clickedPoint);\n});\n\nmap.addEventListener("moveend", function() {\n // 根据当前地图状态更新自定义弹窗位置\n updateCustomPopup(clickedPoint);\n});\n\n// 打开自定义弹窗\nfunction openCustomPopup(point) {\n // TODO: 打开自定义弹窗的逻辑\n}\n\n// 更新自定义弹窗位置\nfunction updateCustomPopup(point) {\n // 获取当前地图的缩放级别和中心点位置\n var zoom = map.getZoom();\n var center = map.getCenter();\n\n // 计算点击点在当前地图上的新位置\n var newPoint = new BMap.Point(\n point.lng + (center.lng - clickedPoint.lng),\n point.lat + (center.lat - clickedPoint.lat)\n );\n\n // TODO: 更新自定义弹窗位置的逻辑\n}\n\n\n在上述示例代码中,首先通过map.addEventListener函数监听了地图的click、zoomend和moveend事件。\n\n在点击地图时,会触发click事件处理函数,其中获取了点击点的经纬度坐标,并调用openCustomPopup函数打开自定义弹窗。\n\n而在地图缩放或移动结束后,会分别触发zoomend和moveend事件处理函数,在这两个函数中会调用updateCustomPopup函数来更新自定义弹窗的位置。\n\n在updateCustomPopup函数中,首先获取了当前地图的缩放级别和中心点位置,然后根据这些信息和之前记录的点击点的坐标,计算出点击点在当前地图上的新位置,并根据实际需求来更新自定义弹窗的位置。\n\n这样,无论地图缩放或移动了多少次,都可以始终获取到之前点击的点所在的新位置。
原文地址: https://www.cveoy.top/t/topic/p4hh 著作权归作者所有。请勿转载和采集!