【问题标题】:React Leaflet marker rotation反应传单标记旋转
【发布时间】:2020-10-04 17:33:47
【问题描述】:

我已经按照this 构建了一个旋转标记,但不幸的是,它在这里不起作用是我创建的组件

class RotatedMarker extends MapLayer {

static defaultProps = {
    rotationOrigin: 'center',
};

createLeafletElement(props) {
    const el = new LeafletMarker(props.position, this.getOptions(props));
    this.contextValue = {...props.leaflet, popupContainer: el};
    return el;
}

updateLeafletElement(fromProps, toProps) {
    if (toProps.position !== fromProps.position) {
        this.leafletElement.setLatLng(toProps.position);
    }
    if (toProps.icon !== fromProps.icon) {
        this.leafletElement.setIcon(toProps.icon);
    }
    if (toProps.zIndexOffset !== fromProps.zIndexOffset) {
        this.leafletElement.setZIndexOffset(toProps.zIndexOffset);
    }
    if (toProps.opacity !== fromProps.opacity) {
        this.leafletElement.setOpacity(toProps.opacity);
    }
    if (toProps.draggable !== fromProps.draggable) {
        if (toProps.draggable === true) {
            this.leafletElement.dragging.enable();
        } else {
            this.leafletElement.dragging.disable();
        }
    }
    if (toProps.rotationAngle !== fromProps.rotationAngle) {
        this.leafletElement.setRotationAngle(toProps.rotationAngle);
    }
    if (toProps.rotationOrigin !== fromProps.rotationOrigin) {
        this.leafletElement.setRotationOrigin(toProps.rotationOrigin);
    }
}

render() {
    const {children} = this.props;
    return children == null || this.contextValue == null ? null : (
        <LeafletProvider value={this.contextValue}>{children}</LeafletProvider>
    );
}
}

这就是我使用该组件的方式:

<RotatedMarker
    rotationAngle={120}
    rotationOrigin="center"
    position={[violation.latitude,violation.longitude,]}
    icon={getMarkerIcon().icon}>
</RotatedMarker>

我曾尝试直接调用此函数this.leafletElement.setRotationAngle(toProps.rotationAngle);,但出现以下错误:

TypeError: this.leafletElement.setRotationAngle 不是函数

我正在使用 react-leaflet V2

【问题讨论】:

    标签: javascript reactjs leaflet react-leaflet


    【解决方案1】:

    它对我有用。不确定您的设置是什么,但您需要安装 leaflet-rotatedmarker 插件并将其导入您的自定义组件中,以免收到该错误。

    你应该有这个

    import React from "react";
    import { Marker as LeafletMarker } from "leaflet";
    import { LeafletProvider, withLeaflet, MapLayer } from "react-leaflet";
    import "leaflet-rotatedmarker"; //here import the plugin
    
    class RotatedMarker extends MapLayer {
      static defaultProps = {
        rotationOrigin: "center"
      };
    ...
    

    这是一个有效的demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      • 2018-09-09
      • 2018-06-04
      • 1970-01-01
      • 2023-03-28
      • 2022-08-18
      • 2018-05-23
      相关资源
      最近更新 更多