首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >到ol & proj4js的角度和迁移层

到ol & proj4js的角度和迁移层
EN

Stack Overflow用户
提问于 2018-09-06 08:20:21
回答 2查看 2K关注 0票数 4

尝试使用openlayers将基于角度的项目从不推荐的第一层-npm-包装迁移到推荐的。通过调试,我意识到以前还在工作的proj4集成遇到了问题。

经过两天的不同处理,尝试了这个和那个,意识到在这种特殊的库组合中,问题似乎是由于缺少新的ol包的类型所造成的。

我现在可以确认的是,对proj4的支持还没有在@type/ol:‘4.6.2’中存在,而是在@类型/开始层:‘^4.6.12’中存在,我希望它能帮助其他人(我还不能向@类型/开始层:‘^4.6.12’发表评论)。

因此,利用proj4来使用依赖项向开层提供不同的投影。

代码语言:javascript
复制
"ol": "5.2.0",
"@types/openlayers": "4.6.12",

将适用于以下代码片段,但ol@types/ol结合使用不会:

进口

代码语言:javascript
复制
import * as ol from 'openlayers';
import * as proj4x from 'proj4';
const proj4 = (proj4x as any).default;
proj4.defs([
  [ 'EPSG:25832', '+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs' ],
    ...
]);

构造函数

代码语言:javascript
复制
ol.proj.setProj4(proj4);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-13 07:37:03

为了完全避免@type/openlayers,并使用@type/ol,我最终得到了以下结果:

package.json

代码语言:javascript
复制
"dependencies": {
    ...
    "proj4": "2.4.4",
    ...

app/.../@types/ol/proj/proj4.d.ts (在app文件夹下手动创建另一个类型文件)

代码语言:javascript
复制
export namespace ol {
    namespace proj {
        function setProj4(proj4: any): void;
    }
}

导入和定义在例如。组件

代码语言:javascript
复制
import proj from 'ol/proj';
import * as proj4x from 'proj4';
const proj4 = (proj4x as any).default;
// Two example-projections (2nd is included anyway)
proj4.defs([
    [ 'EPSG:25832', '+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs' ],
    [ 'EPSG:4326',  '+proj=longlat +datum=WGS84 +no_defs' ]
]);

构造函数中的--最终向ol注册proj4

代码语言:javascript
复制
proj.setProj4(proj4);
票数 3
EN

Stack Overflow用户

发布于 2018-09-23 11:55:30

OpenLayers 5不再有setProj4方法,而是ol/proj/proj 4模块中的寄存器方法。因此,我遵循了@ with 10324080的解决方案,并讨论了这里,并使用了角6得到了以下解决方案:

  1. 将以下行添加到CompilerOptions文件中的tsconfig.js文件的末尾: "allowSyntheticDefaultImports": true, "esModuleInterop":true
  2. 我创建了文件@types/ol/proj/proj4.d.ts并将其添加到其中: export function register(proj4: any): void;
  3. 在创建映射的.ts文件中,我添加了以下内容: import { fromLonLat } from 'ol/proj.js' import {register as proj4register } from 'ol/proj/proj4' import proj4 from 'proj4'; proj4.defs([[ 'EPSG:3067', '+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs']]); // Constuctor: proj4register(proj4); // ngOnInit: var view = new View({ projection: 'EPSG:3067', center: fromLonLat([27.47, 64.88], 'EPSG:3067'), zoom: 5 });

我安装了以下版本的库和类型定义:

代码语言:javascript
复制
"ol": "^5.2.0",
"proj4": "^2.5.0",
"@types/ol": "^4.6.2",
"@types/proj4": "^2.3.4"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52199601

复制
相关文章

相似问题

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