angular - Openlayers 3 seçim etkileşimine olay koşulu eklenemiyor
Yani haritalarıma bir seçme etkileşimi eklemeye çalışıyorum; herhangi bir özelliğin üzerine geldiğimde açıkça vurgulanıyor.
import Select from 'ol/interaction/select';
import pointerMove from 'ol/events/condition.js'
this.selectPointerMove = new Select({
condition: pointerMove
});
this.coreMapComponent.map.addInteraction(this.selectPointerMove);
Durum alanı - hatası veriyor
Type 'typeof events' is not assignable to type 'EventsConditionType'.
Type 'typeof events' provides no match for the signature '(event: MapBrowserEvent): boolean'.
Bir koşul olmadan, bir fare tıklamasında sorunsuz çalışır.
Bunun Angular 6 projesinde "@types/ol": "^4.6.2" kullanılarak belirtilmesi gerekir, eğer bunun herhangi bir önemi varsa.
Cevap #1
Mevcut Openlayers sürümü 5.x.x bazı yazım güncellemelerine ihtiyaç duyuyor. Hatta siz Openlayers 5.x.x kullanıyor olsanız bile kurulu tipler 4.x.x sürümünden.
Bu, kodunuzda bazı geçici çözümlere ihtiyacınız olduğu anlamına gelir.
4.x.x sürümündeki tüm tipler DefaultExports yöntemini kullandığı için, NamedExports gibi kullanamazsınız:
import {pointerMove} from 'ol/events/condition';
Çözüm:
Yapabileceğiniz bir seçenek, her şeyi bir değişken olarak import etmektir. Bununla, TS hatasından kaçınabilirsiniz:
import Select from 'ol/interaction/select';
import * as condition from 'ol/events/condition';
this.selectPointerMove = new Select({
condition: (condition as any).pointerMove
});
this.coreMapComponent.map.addInteraction(this.selectPointerMove);
Bunun bir yan etkisi, ağaç sığınak yapma seçeneğini kaldıracak olmanız, ama neyse ki, onsuz da hayatta kalabilirsiniz.
Umarım bu yardımcı olur!
