0

编辑:我不在乎如何修复我的代码/为什么它会这样,我只想在 angular-leaflet-directive 中围绕其中心旋转一个标记。

我知道这里的问题,但我不知道如何获取每个标记的 DOM 元素。我创建标记的方式是

$rootScope.markers.push(
            {
                lng : 23.8404236,
                lat : 38.04595,
                icon: {
                    iconUrl : url,
                    iconSize: [30, 30]
                }
            }
        );

我还想围绕它们对应的坐标旋转它们,而不是它们的尖端(Leaflet 术语中的最左上角)。

我目前正在使用Marker.Rotate.js但它们围绕某个任意点旋转,如您在此处看到的: 在此处输入图像描述在此处输入图像描述

他们的代码是:

$rootScope.markers.push(
            {
                lng      : 23.8404236,
                lat      : 38.04595,
                icon     : {
                    iconUrl : 'misc/images/debug3.png',
                    iconSize: [30, 30]
                },
                iconAngle: 30
            }
        );
        $rootScope.markers.push(
            {
                lng : 23.8404236,
                lat : 38.04595,
                icon: {
                    iconUrl : url,
                    iconSize: [30, 30]
                }
            }
        );
        $rootScope.markers.push(
            {
                lng      : 23.8404236,
                lat      : 38.04595,
            }
        );

原始图片的大小为 120x120,因此可以缩小到 30x30。另外我没有设置锚点,因为给定大小,它会自动设置为中间(我猜是[15,15]) - 即使我设置了锚点,结果也是一样的。

我希望标记围绕它们的 [15,15] 旋转,而不是它们的左下角或任何其他点。

4

1 回答 1

1

我破解了这样的答案:

$rootScope.markers.push(
{
    icon   : {
        type      : 'div',
        className : 'marker-default',
        html      : '<img style="transform-origin: center 20px; transform: rotate('+rotation+'deg)" src="'+url+'">',
        iconAnchor: [12, 20]
    },
    lat      : parseFloat(DeviceData[i].Position.Y),
    lng      : parseFloat(DeviceData[i].Position.X),
    message  : "<div ng-include src=\"'templates/markerTemplate.html'\" ng-controller=\"markerBaseController\" data-deviceiterator=" + i.toString() + "></div>",
});

它不漂亮,但它有效。

于 2015-10-30T11:59:29.270 回答