0

OpenLayers 6 にアップグレードし、以前は機能していたコードを使用しています

  import { MapBrowserPointerEvent as olMapBrowserPointerEvent } from 'ol/events/Event';

  const simpleLineInteraction: PointerInteraction = new PointerInteraction({
  handleDownEvent: handleDownEventHandler,
  handleDragEvent: handleDragEventHandler,
  handleUpEvent: handleUpEventHandler,
  stopDown: stopDownHandler
  });
  function stopDownHandler(evt: olMapBrowserPointerEvent) {
  return false;
  }

stopDownHandler の動作を停止しました

私が実装しようとしているコードは

import  MapBrowserEvent  from 'ol/MapBrowserEvent';
const simpleLineInteraction: PointerInteraction = new PointerInteraction({
handleDownEvent: handleDownEventHandler,
handleDragEvent: handleDragEventHandler,      
handleUpEvent: handleUpEventHandler,
stopDown: stopDownHandler
});
function stopDownHandler(evt: MapBrowserEvent<MouseEvent>) {
return false;
}

また、stopDownHandler でタイプ「UIEvent」を使用してみましたが、それを false に設定してみました... OpenLayers のドキュメントでは、関数が必要であり、新しいパターンは他のハンドラーに対してエラーをスローしませんが、「stopDownHandler」つまり (

function handleDownEventHandler(evt: MapBrowserEvent<MouseEvent>) {
if (evt.originalEvent.buttons !== 2) {
downClick = evt.coordinate;
return true;
} else { return false; }
}

)作品

エラーが表示される

タイプ '(evt: MapBrowserEvent) => boolean' はタイプ '(arg0: boolean) => boolean' に代入できません。パラメーター 'evt' と 'arg0' の型に互換性がありません。タイプ 'boolean' はタイプ 'MapBrowserEvent'.ts(2322) に割り当てられません

タイプUIEventとエラーを使用する場合

タイプ '(evt: MapBrowserEvent) => boolean' はタイプ '(arg0: boolean) => boolean' に代入できません。パラメーター 'evt' と 'arg0' の型に互換性がありません。タイプ 'boolean' はタイプ 'MapBrowserEvent'.ts(2322) に割り当てられません

タイプ MouseEvent を使用する場合...タイプのマウスイベントは他のハンドラーで機能しますが。

OpenLayers のドキュメントには、これを使用する方法の良い例が示されておらず、「アップグレード」ドキュメントのいずれにも、これを変更して機能するようにするための適切な説明が見つかりません。

どんな助けでも大歓迎です

4

1 に答える 1

0

evt: MapBrowserEvent を arg0: boolean に変更するとエラーは解消されましたが、これは良い解決策ではないようです...実際にはバグのようです。

于 2021-07-23T14:28:29.350 に答える