реагирующий маркер листовки с багом вызывает петлю

Я использую react-Leaflet, и мне нужно несколько маркеров со значком, но всякий раз, когда я использую onMoveEnd на своей карте и setState что-то, это вызывает зацикливание и ошибки.

Кроме того, когда я использую onDragEnd вместо onMoveEnd, проблема с петлей исчезает, но я больше не могу drag туда, куда хочу.

const onMapMoveEnd = (e) => {
    setCenter(e.target.getCenter())
}


<Map ref={mapRef} onMoveend={(e) => onMapMoveEnd(e)}>

    markers.map( (mark, index) => <MarkerWithBadge markerIcon={myIcon}  position={position}>
    {index}
    </MarkerWithBadge>
    )

const MarkerWithBadge = props => {
  const initMarker = ref => {
    if (ref) {
      const popup = L.popup().setContent(props.children);
      ref.leafletElement
        .addTo(ref.contextValue.map)
        .bindPopup(popup, {
          className: "badge",
          // closeOnClick: false,
          autoClose: false
        })
        .openPopup()
        // prevent badge from dissapearing onClick
        .off("click");
    }
  };
  return <Marker ref={initMarker} {...props} />;
    };

    export default MarkerWithBadge;

person aidaaa    schedule 15.06.2020    source источник


Ответы (1)


Попробуйте установить для параметра autoPan параметра L.popup() значение false. Это предотвращает панорамирование карты, чтобы соответствовать открытому всплывающему окну. Это то, что решило это для меня, по крайней мере.

Ссылка на документ: https://leafletjs.com/reference-1.6.0.html#popup .

person Marc    schedule 30.09.2020