openlayer注册4490坐标系,添加4490超图服务

1.注册4490坐标系

先贴代码

import proj4 from "proj4";
import { register } from "ol/proj/proj4";
proj4.defs("EPSG:4490", "+proj=longlat +ellps=GRS80 +no_defs");
register(proj4);

再来解释

proj4是一个开源的投影定义库,作用就是可以定义投影体系,proj4.defs()没有返回值,接收两个参数。

第一个是EPSG编码,国际上都是按这个格式去写(“EPSG”:XXXX)

第二个参数是投影参数,这个也不用去记,在这里可以获取:EPSG.io: Coordinate Systems Worldwide

投影参数获取步骤,如下图

点进去

往下拉

这样4490就算是定义好了,定义好了还没用,还需要挂接到ol体系里面去才能使用,ol专门针对proj4开发对接方法import { register } from "ol/proj/proj4";register就可以将定义的坐标系注册到ol中

2.添加4490超图服务

import { TileSuperMapRest } from "@supermap/iclient-ol";

需要安装超图挂接ol的库@supermap/iclient-ol,这个自行安装,安装使用还有点坑,遇到问题的可以翻我之前的文章,很稳。

这里着重说一个坑吧,TileSuperMapRest 是将超图服务地址包裹成ol tilesource的函数,加载超图时,如果是非4326、3857的坐标系,一定要加上extent,不然会报错。

这个extent去服务里可以获取到

3.完整样例代码

<template>
  <div id="map"></div>
</template>

<script>
import Map from "ol/Map";
import View from "ol/View";
import TileLayer from "ol/layer/Tile";
import { TileSuperMapRest } from "@supermap/iclient-ol";
import proj4 from "proj4";
import { register } from "ol/proj/proj4";

export default {
  mounted() {
    proj4.defs("EPSG:4490", "+proj=longlat +ellps=GRS80 +no_defs");
    register(proj4);
    const url =
      "XXXXXXX/iserver/services/map-blservice/rest/maps/xxxxx";
    const extent = [105.17, 28.74, 105.64, 28.95];
    const map = new Map({
      target: "map",
      view: new View({
        center: [0, 0],
        zoom: 2,
        projection: 'EPSG:4490',
      }),
    });
    const source = new TileSuperMapRest({
      url: url,
      wrapX: false,
      extent
    })
    console.log(source);
    const layer = new TileLayer({
      source
    });
    map.getView().fit(extent, map.getSize());
    map.addLayer(layer);

  },
};
</script>

<style>
#map {
  height: 100%;
}
</style>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
添加发布的 EPSG 4545 层到 OpenLayers 地上,您可以按照以下步骤进行操作: 1. 首先,确保您已经引入了 OpenLayers 库。您可以从官方网站(https://openlayers.org/)下载最新版本的 OpenLayers,并将其引入到您的页面中。 2. 创建一个地容器 div 元素,以便在其中显示地。例如: ```html <div id="map" style="width: 100%; height: 400px;"></div> ``` 3. 在 JavaScript 中,使用 OpenLayers 创建地并设置视。例如: ```javascript var map = new ol.Map({ target: 'map', view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), // 设置地中心点 zoom: 10 // 设置初始缩放级别 }) }); ``` 4. 添加 EPSG 4545 投影定义和转换函数。您可以使用 Proj4js 库来处理投影转换。请确保您已经在页面中引入了 Proj4js 库。例如: ```javascript proj4.defs('EPSG:4545', '+proj=...'); // 替换 ... 为 EPSG 4545 的 proj4 定义 ol.proj.proj4.register(proj4); ol.proj.get('EPSG:4545').setExtent([...]); // 设置投影的范围 ``` 请注意,上述代码中的 "+proj=..." 部分应该替换为 EPSG 4545 投影的 proj4 定义。您可以从发布的文档或其他来源获取正确的定义。 5. 创建一个层并将其添加到地上。例如: ```javascript var layer = new ol.layer.Tile({ source: new ol.source.TileSuperMapRest({ url: 'http://example.com/iserver/services/map-name/rest/maps/map', // 替换为您发布服务的 URL wrapX: false, projection: 'EPSG:4545' // 设置投影坐标系为 EPSG 4545 }) }); map.addLayer(layer); // 将添加到地上 ``` 请将代码中的示例 URL 和层名称替换为您实际使用的值。 通过以上步骤,您应该能够成功将发布的 EPSG 4545 添加OpenLayers 地中。请根据您的具体需求进行适当的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值