如何将leaflet-routing-machine包含在angular 2 typescript webp
我使用这个种子开始使用Angular 2 Typescript和Webpack:
https://github.com/haoliangyu/angular2-leaflet-starter.
我是大多数使用过的工具和技术的新手(Angular 2,Typescript,Webpack).虽然我越来越了解这些,但似乎我还没有掌握如何包含第三方非类型的JS库: 我想将leaflet-routing-machine.js包含在我的项目中.据我所知,虽然确实存在传单的类型,但是传单路由机并不存在. 我通过npm install安装了软件包,并添加了所需的quick-start code snipped以显示路由. map.service.ts /// <reference path="../../typings/leaflet/leaflet.d.ts"/> import {Injectable} from 'angular2/core'; import {Map} from 'leaflet'; Injectable() export class MapService { map: Map; // holds reference to the normal leaflet map object showRoute(){ L.Routing.control({ waypoints: [ L.latLng(47.569198,7.5874886),L.latLng(47.5685418,7.5886755) ] }).addTo(this.map); } } 我在npm start上遇到的错误是: ERROR in ./app/services/map.service.ts (56,11): error TS2339: Property 'Routing' does not exist on type 'typeof L'. 据我了解,我不应该在index.html中包含JS文件,因为这应该由webpack自动完成.接下来我通常不确定如何在没有打字的情况下包含第三方库(像this这样的答案没有帮助),似乎我的情况有点不同,因为L对象是标准的传单,并且不知道路由属性.我以某种方式理解,因为我没有看到路由机器库如何扩展传单库. 有什么建议? 解决方法
我没有使用Angular 2和TypeScript,但我怀疑TypeScript不喜欢LRM将自身附加到L对象/命名空间.
请注意,LRM还将自身导出为普通的CommonJS模块,因此您可以执行类似这样的操作,而不是使用L.Routing.Control: var L = require('leaflet'); var Routing = require('leaflet-routing-machine'); var map = L.map(...); var routingControl = Routing.control({ ... }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |