gpt4 book ai didi

javascript - 在 typescript/angular2 中使用 openlayer3

转载 作者:数据小太阳 更新时间:2023-10-29 04:34:38 24 4
gpt4 key购买 nike

我有一个使用 openLayer3 的 Javascript 代码。我需要在 angular2 项目中使用 Typescript 实现此代码。

有人知道如何将 openlayer 与 angular2/Typescript 一起使用吗?

非常感谢,

约翰

最佳答案

<强>1。选项 A(使用 Angular CLI)

在您的 .angular-cli.json(位于您的项目根目录)中添加 Openlayers3:

...
"styles": [
"../node_modules/openlayers/dist/ol.css"
],
"scripts": [
"../node_modules/openlayers/dist/ol.js"
],
...

<强>1。选项 B(不使用 Angular CLI)

在您的 index.html 中添加 Openlayers3(“常规”方式):

<script src="node_modules/openlayers/dist/ol.js"></script>
<link rel="stylesheet" href="node_modules/openlayers/dist/ol.css">

<强>2。从您的 typescript 文件访问 ol:

import { AfterViewInit, Component, ElementRef, ViewChild } from "@angular/core";

// This is necessary to access ol3!
declare var ol: any;

@Component({
selector: 'my-app',
template: `
<h3> The map </h3>
<div #mapElement id="map" class="map"> </div>
`
// The "#" (template reference variable) matters to access the map element with the ViewChild decorator!
})

export class AppComponent implements AfterViewInit {
// This is necessary to access the html element to set the map target (after view init)!
@ViewChild("mapElement") mapElement: ElementRef;

public map: any;

constructor(){
var osm_layer: any = new ol.layer.Tile({
source: new ol.source.OSM()
});

// note that the target cannot be set here!
this.map = new ol.Map({
layers: [osm_layer],
view: new ol.View({
center: ol.proj.transform([0,0], 'EPSG:4326', 'EPSG:3857'),
zoom: 2
})
});
}

// After view init the map target can be set!
ngAfterViewInit() {
this.map.setTarget(this.mapElement.nativeElement.id);
}
}

关于javascript - 在 typescript/angular2 中使用 openlayer3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35582526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com