angular - LeafletJS multipolyline i Typescript
Jag försöker använda demon från http://leafletjs.com/reference-1.2.0.html#polyline
// create a red polyline from an array of LatLng points
var latlngs = [
[45.51, -122.68],
[37.77, -122.43],
[34.04, -118.2]
];
var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);
// zoom the map to the polyline
map.fitBounds(polyline.getBounds());
Men det ger mig ett felmeddelande:
[ts]
Argument of type 'number[][]' is not assignable to parameter of type 'LatLngExpression[]'.
Type 'number[]' is not assignable to type 'LatLngExpression'.
Type 'number[]' is not assignable to type '[number, number]'.
Property '0' is missing in type 'number[]'.
behövs något annat när man använder Leaflet med Angular/TypeScript?
Svar #1
Det verkar som att din kod är okej, men typerna är lite kinkiga. Som kompilatorn noterar, number[] kan inte tilldelas till [number, number], vilket är helt logiskt (eftersom en tom array [] bör kunna tilldelas till number[] men inte [number, number]).
Hur som helst, allt du behöver göra är att ge TypeScript en ledtråd om att du faktiskt skickar rätt typ. Jag skulle rekommendera att du deklarerar det på din variabel, t.ex.:
var latlngs: [number, number][] = [
[45.51, -122.68],
[37.77, -122.43],
[34.04, -118.2]
];
Eller, om det i ditt faktiska användningsfall värdet kommer någon annanstans ifrån, kan du bara göra en typomvandling:
var polyline = L.polyline(latlngs as [number, number][], {color: 'red'}).addTo(map);
