【发布时间】:2018-06-04 22:58:39
【问题描述】:
我有一些 JSON 数据,应该在地图上显示。
var shapesCoordinates = '[{"shapeId": 1,"coordinates": [-1500,500],"text": "bla bla", "rotation": 20},{"shapeId": 2,"coordinates": [-1800,800],"text": "idemooooo", "rotation": 60}]';
var shapess = JSON.parse(shapesCoordinates);
var markers = [];
for (var i = 0; i < shapess.length; i++) {
var marker = L.marker(shapess[i]['coordinates'], {
opacity: 0.01
}).bindTooltip(shapess[i]['text'],
{
permanent: true,
className: "shapesText",
offset: [0, 0],
direction: "center"
}
).openTooltip().addTo(mymap);
markers[shapess[i]['shapeId']] = marker;
}
我尝试使用 CSS 旋转文本,但出现了一些问题。
.leaflet-tooltip {
box-shadow: none;
/**
This rotates text but break marker position
set all markers on same (default) position
*/
transform: rotate(45deg) !important;
}
.shapesText {
position: absolute;
/**
This has no impact on text
*/
transform: rotate(45deg) !important;
font-size:14px;
background: none;
border: none
}
我知道为什么会出现这个问题。
生成的 HTML 代码具有 transform: translate3d(),当我使用 transform: rotate()` 时,它会覆盖元素重新定位。如何同时使用两个属性值?换句话说,如何在不覆盖 translate3d 的情况下添加旋转
如果需要,是否有一些 Leaflet 的方法可以为每个标记设置不同的旋转?
我只是使用 Leaflet 来显示自定义的非地理地图,有时需要显示会遵循某些形状边界的文本。
这是生成的 HTML 代码
<div class="leaflet-tooltip shapesText leaflet-zoom-animated leaflet-tooltip-center" style="opacity: 0.9; transform: translate3d(385px, -32px, 0px);">bla bla</div>
【问题讨论】:
-
我们可以看到其中一个工具提示的 HTML 吗?
-
没有HTML!标记工具提示是使用 bindTooltip() 方法动态生成的。
-
任何
bindTooltip()都不会为 DOM 生成任何 HTML,不是吗? -
我更新了问题,生成了 HTML 内容。
-
所以,我猜,那个变换:rotate(...),覆盖变换:translate3d(...)
标签: javascript css rotation leaflet