1

我正在尝试使用 Leaflet 和 Leaflet Routing Machine。我使用以下命令安装传单和传单路由机,

npm i leaflet
npm i --save-dev @types/leaflet

npm i leaflet-routing-machine
npm i --save-dev @types/leaflet-routing-machine

导入传单并使用它很好,但是当我尝试使用传单路由机器时,它给了我错误。

以下是我的代码,

L.Routing.control({
    waypoints: [
      L.latLng(latitude, longitude),
      L.latLng(latitude, longitude),
    ],
    show: false,
    lineOptions: {styles: [{color: randomColor, opacity: 1, weight: 5}],},
    createMarker: function () {
      return null;
    },
    }).addTo(this.map);

我使用 webstorm 作为 IDE,我得到 2lineOptionscreateMarker. 我在纯 JavaScript 中有相同的代码,它工作正常,但对于 Angular,它给了我这个错误。

因为lineOptions它说以下,当我添加那些缺少的参数时,错误消失了,但我不想放那些参数。

TS2739:类型'{样式:{颜色:字符串;不透明度:数字;重量:数量;}[]; }' 缺少“LineOptions”类型的以下属性:extendToWaypoints、missingRouteTolerance

因为createMarker它说以下,

TS2345:类型参数'{路由器:MapBox; 航路点:LatLng[]; 显示:假;createMarker: () => null; }' 不可分配给“RoutingControlOptions”类型的参数。对象字面量只能指定已知属性,并且在“RoutingControlOptions”类型中不存在“createMarker”。

既然它在 JavaScript 中工作,为什么它不能在 Angular 中工作?

4

1 回答 1

1

createMarker上不存在RoutingControlOptions。将其从对象中移除。

但是,有一个plan: Plan成员可以传递PlanOptions给包含 的构造函数createMarker

LineOptions必须定义extendToWaypointsmissingRouteTolerance。如果您“不想要”它们,请将它们设置为有意义的值 - 例如falseforextendToWaypoints0for missingRouteTolerance

JavaScript 实现可能会忽略未知,并且对于您传递的选项对象中的未定义键值具有合理的默认值。但是,TypeScript 定义更加严格。也有可能它不是绝对正确输入的。

于 2021-06-19T00:07:43.643 回答