Каков хороший способ создать пользовательский компонент GeoJSON? - PullRequest
0 голосов
/ 25 июня 2019

Мне нужна помощь в создании пользовательского компонента GeoJSON из React-Leaflet

Пишите с помощью React и React-Leaflet (обе последние версии) Код работает при записи в компоненте Map, но я хочу импортировать / экспортировать его для разделения кода

import React from 'react';
import { withLeaflet, GeoJSON } from 'react-leaflet'
import L from 'leaflet'


class CustomGesJSON extends GeoJSON {

    getStyle(feature) {
        // some code
    }

    pointToLayer(feature, latlng) {
        // some code
    }

    onEachFeature(feature, layer) {
        // some code
    }

    createLeafletElement(opts) {
        const CustomGesJSON = L.geoJSON.extend({

            onAdd: (map) => {
                this.getStyle = this.getStyle.bind(this);
                this.pointToLayer = this.pointToLayer.bind(this);
                this.onEachFeature = this.onEachFeature.bind(this);

                return this ;
            }
        });
        return new CustomGesJSON({ data: this.props.data });
    }


} 

function testlog(txt) {
    // some code
}

export default withLeaflet(CustomGesJSON);

У меня сообщение об ошибке "GeoJSON не конструктор"

Функция и метод (здесь не показаны) работают, мне просто нужна помощь для правильного наследования Другие решения приветствуются на

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 26 июня 2019

Вероятно, объект "GeoJSON", экспортируемый с помощью "act-leaflet ", является не классом ES6, а классом Leaflet L.GeoJSON.

Вы можете использовать собственное наследование класса до ES6 от Leafletсхема, описанная в учебнике по теории классов Leaflet :

const MyCustomClass = GeoJSON.extend({
  options: {
    onEachFeature: myCustomDefaultFunction
    // etc.
  }
});
export default MyCustomClass;
...