2017-02-22 7 views
0

LRMをtsファイルにインポートする方法はあまりありません。 npm install leaflet-routing-machine経由でインストールした後、私はこのようなルーティングを定義しました。ここでleaflet-routing-machineをIonic2プロジェクトにインポートするにはどうすればいいですか?

Error caused by: Routing.control is not a function 

は私のイオン性情報は、次のとおりです:ところで

Cordova CLI: 6.4.0 
Ionic Framework Version: 2.0.1 
Ionic CLI Version: 2.2.1 
Ionic App Lib Version: 2.2.0 
Ionic App Scripts Version: 1.1.0 
Node Version: v6.3.1 

、私を助け、私が得ていなかった

var Routing = require('leaflet-routing-machine'); 
var newRoute = Routing.control({Options}); 

をリーフレット自体に問題はありません。

答えて

0

Leaflet Routing Machineプラグインが直接エクスポートするかどうかわかりません。

通常、少なくともグローバルな名前空間Lに付ける副作用があります。

require('leaflet-routing-machine')を呼び出した後、L.routing.controlでコントロールをインスタンス化しようとしましたか? (開始Lに注意してください)

+0

はい、私はこのエラーが発生しました: 'Type 'L'にプロパティ 'ルーティング'が存在しません.' –

1

この問題は、コンポーネントを宣言する前に次の行を追加することで解決しました。

declare var L: any;

myclass.component.ts

import { Component, OnInit } from '@angular/core'; 
... 

// Leaflet and Leaflet Routing Machine have been installed with npm 
import 'leaflet-routing-machine'; 
import 'leaflet-easybutton'; 

// Add this line to remove typescript errors 
declare var L: any; 

@Component({ 
    ... 
}) 
export class MyClass extends OnInit { 
    ... 

    constructor(...) { 
    ... 
    } 

    ngOnInit() { 

    ... 

    // The example snippet is now working 
    L.Routing.control({ 
     waypoints: [ 
     L.latLng(57.74, 11.94), 
     L.latLng(57.6792, 11.949) 
     ] 
    }).addTo(myMap); 

    ... 

    } 

    ... 

} 

this postで述べたように、typescriptですがリーフレットのグローバルLオブジェクトにプロパティを追加するための問題を引き起こしているようだが、私たちの場合、 any型のLを宣言すると、それを動作させるのに十分でした。

関連する問題