Udało mi się uzyskać ulotkę współpracującą z Angular 2 i Webpack, wykonując ten projekt.Mapbox Typescript
widzę typowania skonfigurowane "browser.d.ts":
/// <reference path="browser\ambient\leaflet\leaflet.d.ts" />
webpack.config.js określa punkt wyjścia:
...
entry: {
'polyfills': './src/polyfills.ts',
'libs': './src/libs.ts',
'main': './src/main.ts'
},
...
The " libs.ts "zawiera import modułu ulotki:
import 'leaflet';
Używam Atom jako edytora kodu. Teraz rozpoznaje wszystkie klasy i metody Leaflet. Teraz mogę robić takie rzeczy w Angular 2:
import {Map, TileLayer} from 'leaflet';
...
this.baseMaps = {
StreetMap: new TileLayer('mapbox.streets')
};
Tutaj zaczynają się moje problemy. Próbuję użyć mapbox.js. To, co zrobiłem, to zainstalowałem bibliotekę mapbox.js i wpisy:
npm install mapbox.js --save
typings install mapbox --save
To tutaj utknąłem. Dla mojego życia nie wiem, jak zrobić to, co udało się zrobić w Leaflet.
import 'mapbox';
Nie działa.
ERROR in ./src/libs.ts
Module not found: Error: Cannot resolve module 'mapbox' in C:\Develop\angular2-webpack-starter\src
@ ./src/libs.ts 3:0-17
widzę "browser.d.ts" ma następujące elementy:
/// <reference path="browser\ambient\leaflet\leaflet.d.ts" />
/// <reference path="browser\ambient\mapbox\mapbox.d.ts" />
Myślałem, że może Mapbox będzie po prostu pracować, ponieważ rozszerza bibliotekę ulotka?
Wydaje się, że mogę po prostu zrobić coś takiego, co jest standardowym sposobem javascript:
this.baseMaps = {
StreetMap: L.mapbox.tileLayer('mapbox.streets')
};
Ale nie to:
this.baseMaps = {
StreetMap: new TileLayer('mapbox.streets')
};
To oczywiście nie działa albo:
import {Map, TileLayer} from 'mapbox';
Co robię źle?
Mam zamiar oznaczyć to rozwiązanie jako zaakceptowane, ponieważ działa. Mogę jednak dodać, że nie w pełni odpowiada na część mojego pytania dotyczącego pliku definicji (mapbox.d.ts) i dlatego nie zapewnia silnych typów. –
Proszę pana, nie działa po mojej stronie. Proszę zasugerować dowolny inny. Używamy wersji beta Angulara tj. 1.5.7 –