マニュアルに書かれたように、私はL.Class.include()
を使用していくつかのカスタムのfunctionnalitiesを実装することができ付きL.Class.include()の等価:Lと、既存のクラスではより多くの機能を含む(リーフレット付き)JavaScriptで活字体
.Class.include() 新しいメソッドとオプションの追加 いくつかのメソッドの変更 addInitHookを使用して追加のコンストラクタコードを実行します。
これは動作します:
L.Rectangle.include({
contains: function (markers: L.Marker[]) {
const markersContained: boolean[] = [];
markers.forEach(marker => {
console.log(marker);
markersContained.push(this.getBounds().contains(marker.getLatLng()));
})
return markersContained;
}
});
今、私は活字体とAngular4アプリケーションで同じことを実現しようとしているが、include()
機能が@types/leaflet
私のコードはLeaflet.Draw
プラグイン用に調整された.ts
ファイルにあるので、この方法でファイルを初期化しなければなりませんでした:
Leaflet.Draw
プラグインは、したがって、私は、通常のリーフレットの種類をインポートすることはできません、何
@types
を持っていないという事実に代わり、正規
import * as L from 'leaflet';
の
declare const L: any;
import 'leaflet-draw/dist/leaflet.draw-src';
(そうでなければ、new L.Control.Draw()
は、コンパイルエラーになるだろう)。
これは、コンパイル時に壊れる:
map.on(L.Draw.Event.CREATED, (geometry: L.LayerEvent) => {
const layer = geometry.layer;
drawnItems.addLayer(layer);
// Set an array containing all the markers
const markers = LeafletService.prototype.jsonToArray(layerGroup.getLayers());
// ===> Property 'contains' does not exist on type 'Layer'.
const result = geometry.layer.contains(markers);
console.log('result => ', result);
});
と明らかに、これは私がany
として私のジオメトリタイプを設定した場合に動作しますが、私は可能であればL.LayerEvent
タイプを使用したい、と知ってほしいと思いますリーフレットinclude()
メソッドを正しく使用するために、TypeScript構文を使用する方法は?