javascript - 在此处粘贴 dom 标记以进行缩放
问题描述
我正在尝试在 HERE 地图中添加卡车标记。这个标记基本上是一个卡车图标。这是我的代码。
addDomMarker(posObj): void {
const map = this.mapComponent.getMap();
(window as any).mymap = map;
const domIcon = new H.map.DomIcon(truckIcon);
this.truckMarker = new H.map.DomMarker(posObj, {
icon: domIcon
});
map.addObject(this.truckMarker);
map.setCenter(posObj);
}
export const truckIcon = `<div class="truck-container">
<svg class="truck-marker" id="truck"
... // svg code
</svg></div>`;
问题是当我放大或缩小时,dom 标记不是粘在地图上,而是在移动(动画)。
初始位置:
缩小后:(黑点为初始位置。)
之后它回到初始位置。我希望这个标记贴在地图上而不是有动画。有什么解决办法吗?
解决方案
您快到了!您只需要将卡车图标居中即可。默认情况下,图标左上角位于地理坐标处。如果您移动图标使其中心位于地理坐标处,您提到的“移动效果”将消失。
由于它是一个DomIcon,因此在 DOM 树中,我们将使用 CSS 将其居中,将图标宽度的一半向左偏移,将高度的一半向顶部偏移。我们在图标的最外层 DOM 元素上执行此操作。
因此,假设您的卡车图标宽度为 16 像素,高度为 40 像素,这样就可以解决问题:
export const truckIcon =
`<div class="truck-container" style="left: -10px; top: -20px;">
<svg class="truck-marker" id="truck"
... // svg code
</svg>
</div>`
推荐阅读
- c++ - Rcpp:'operator='矩阵和列表的模棱两可的重载
- perl - Perl PDL:点坐标和矩阵构造
- python - 从 excel 到 mysql 的格式字符串参数不足
- javascript - 使用 sqlite 和 Expo 从 SQL 查询中获取实际的行数组
- javascript - 为什么浏览器确认框(由 beforeunload 事件处理程序触发)仅在我单击页面时出现?
- java - 使用嵌入式 Tomcat 的 Java Web 应用程序正在运行但未在浏览器中显示
- php - 使用 php pdo 在数据库表中插入空值
- javascript - 试图格式化一串名称的Javascript
- sql-server - SQL Server 中的多个连接问题 - 请提供建议
- c# - dotnet core 中的 httpwebrequest 返回 404 错误