首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误TypeError:无法读取未定义的属性“basemapLayer”

错误TypeError:无法读取未定义的属性“basemapLayer”
EN

Stack Overflow用户
提问于 2017-09-19 15:36:04
回答 1查看 1.4K关注 0票数 1

错误TypeError:无法读取未定义的属性“basemapLayer”

我已经建立了一个非常基本的应用程序使用角CLI。当我使用ng serve -o构建和运行应用程序时,一切都成功地构建了。但是,当我在Chrome中查看应用程序时,map部分不会加载。进一步检查页面,我在控制台中看到了这个错误。

ERROR TypeError: Cannot read property 'basemapLayer' of undefined

设置

  • 角4
  • 铬61
  • 传单1.2.0
  • esri-传单2.1.1
  • 1.2的类型/传单
  • 类型/esri- 2.1的传单

重现错误的步骤:

这些步骤假设您已经安装了角CLI

步骤1-6和10是在终端/cmd提示窗口中完成的。

  1. 创建一个新的应用程序ng new esriLeafletApp
  2. 导航到新应用程序cd esriLeafletApp
  3. npm install --save leaflet
  4. npm install --save esri-leaflet
  5. npm install --save @types/esri-leaflet
  6. npm install --save @types/leaflet
  7. 更新app.component.ts文件的内容

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';

import * as L from 'leaflet';
import 'esri-leaflet';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent implements OnInit {
  title = 'app';

  constructor() { }

  ngOnInit () {
    const map = L.map('map').setView([51.505, -0.09], 13);
    L.esri.basemapLayer('Streets').addTo(map);
  }
}

  1. 更新app.component.html文件的内容

代码语言:javascript
复制
<div style="text-align:center">
    <h1>
       Welcome to {{title}}!
    </h1>
</div>
<div id="map"></div>

  1. 更新app.component.css文件的内容 #map {高度:500 100;宽度: 100%;}
  2. 构建并运行应用程序ng serve -o
  3. 查看Chrome中的应用程序
  4. 检查代码并查看检查控制台中的错误。

请帮帮忙

有谁知道为什么esri在代码块L.esri.basemapLayer('Streets').addTo(map);中是undefined,以及我如何修复它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-19 18:20:19

问题似乎在于埃斯里-传单(@types/esri-传单)的类型文件,而不是esri-传单本身。我已经在问题 github上打开了一个DefinitelyTyped。

解决办法:

  • 从package.json和node_modules中删除ESRI类型
  • 进口esri:import * as esri from 'esri-leaflet';
  • 直接使用esri (即不作为传单的延伸)。
  • 仍然可以使用传单打字,没有问题。

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';

import * as L from 'leaflet';
import * as esri from 'esri-leaflet';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent implements OnInit {
  title = 'app';

  constructor() { }

  ngOnInit () {
    const map = L.map('map', {
      maxZoom: 18,
      minZoom: 0
    }).setView([51.505, -0.09], 15);

    const esriLayer = esri.basemapLayer('Imagery');
    map.addLayer(esriLayer);
  }
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46304492

复制
相关文章

相似问题

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