首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离子2中的leaflet.freedraw

离子2中的leaflet.freedraw
EN

Stack Overflow用户
提问于 2016-12-15 18:18:59
回答 2查看 758关注 0票数 1

我想在我的Ionic 2项目中使用Leaflet.freedraw插件。传单自我工作没有问题。但是,当将let freeDraw = new FreeDraw();添加到我的MapPage组件时,我会得到错误消息:

未明错误:无法在webpackMissingModule中找到模块"L“

README of FreeDraw中,它说我必须在我的webpack.config中添加以下一行:

代码语言:javascript
复制
resolve: {
 alias: {
     L: 'leaflet'
 }
};

我在node_modules/@ionic/app-scripts/config/webpack.config.js上做了这个,但这没有帮助。

我在我的declarations.d.ts文件中添加了传单和declarations.d.ts,就像第三方库的离子2文件中说的那样。

代码语言:javascript
复制
declare module '*';
declare module 'leaflet';
declare  module 'leaflet.freedraw';

我试图像这样把它添加到我的app.module.ts中:

代码语言:javascript
复制
import { NgModule, ErrorHandler } from '@angular/core';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { TabsPage } from '../pages/tabs/tabs';
import { Storage } from '@ionic/storage';
import { DbService } from '../providers/db-service';
import { MapPage } from '../pages/map/map';
import { JourneysPage } from '../pages/journeys/journeys';
import * as L from 'leaflet';
import { FreeDraw } from 'leaflet.freedraw';

@NgModule({
  declarations: [
    MyApp,
    TabsPage,
    MapPage,
    JourneysPage
  ],
  imports: [
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    TabsPage,
    MapPage,
    JourneysPage
  ],
  providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}, Storage, DbService, L, FreeDraw]
})
export class AppModule {}

我添加了像这样的传单:

代码语言:javascript
复制
import * as L from 'leaflet'; 

因为当我尝试这个:

代码语言:javascript
复制
import { L } from 'leaflet';

我发现一个错误,那就是传单上没有这样的出口组件。

这是我的Map组件:

代码语言:javascript
复制
import { Component, OnInit} from '@angular/core';
import { NavController } from 'ionic-angular';
//import * as fd from 'leaflet.freedraw';
import * as L from 'leaflet';
import { FreeDraw } from 'leaflet.freedraw';

@Component({
  selector: 'page-map',
  templateUrl: 'map.html'
})
export class MapPage implements OnInit{

  constructor(public navCtrl: NavController, ) {}

  ionViewDidLoad() {
    console.log('Hello MapPage Page');
  }

  ngOnInit() {

    let map = L.map('map').setView([51.505, -0.09], 13);
    let freeDraw = new FreeDraw();


    L.tileLayer('https://api.mapbox.com/styles/v1/mapbox/streets-v10/tiles/256/{z}/{x}/{y}?access_token={accessToken}', {
      attribution: 'Map data &copy; <a href="http://openstreetmap.org">OSM</a> contributors, ' +
      '<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery© <a href="http://mapbox.com">Mapbox</a>',
      maxZoom: 18,
      accessToken: "place holder for actual token"
    }).addTo(map);



  }

}

我错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-18 16:54:18

您应该使用名为定义类型/tsd的工具,如下所示:

代码语言:javascript
复制
tsd install --save leaflet

这将向文件夹typings/leaflet下的项目中添加一个类型记录定义文件,以便您能够使用传单库。只需添加以下行即可使用该库:

代码语言:javascript
复制
import 'leaflet';

至于leaflet.freedraw传单插件,我认为类型记录中的js插件是一个令人头疼的问题,除非它们有一个TS定义文件。一段时间以来,我一直试图找到一个解决办法。

票数 1
EN

Stack Overflow用户

发布于 2016-12-15 18:25:23

不要修改node_modules中的任何代码,它们是第三方库。该指令意味着在您自己的本地Webpack配置中设置该配置。您使用配置文件运行webpack,其语法如下:

代码语言:javascript
复制
webpack --config some.config.file.js
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41170835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档