SuperMap超图使用简单笔记

1 需求:

项目使用的是openlayer和Cesium,现在需要使用超图的图层,和引入实景公路功能。

2 使用过程中出现一下疑问点记录如下 :

超图: 北京超图软件股份有限公司是全球第三大、亚洲最大的地理信息系统(GIS)软件厂商,是一家国内的地图服务商。超图有自己的全生态产品,部分产品为在其他技术基础上修改优化而来。

3 Cesium加载超图的图层

思路是,使用Cesium自己的依赖包,正常加载。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <!-- Include the CesiumJS JavaScript and CSS files -->
  <script src="https://cesium.com/downloads/cesiumjs/releases/1.102/Build/Cesium/Cesium.js"></script>
  <link href="https://cesium.com/downloads/cesiumjs/releases/1.102/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
</head>

<body>
  <div id="cesiumContainer"></div>
  <script>

    Cesium.Ion.defaultAccessToken =
      "eyJhbGciOiJIU*****5cCI6IkpXVCJ9.eyJqdGkiOiI4ZjNhMDU4NC0wNWMxLTRhNmEtYWI4Yy01M2EzMzY2NTY0ZTYiLCJpZCI6MTkzMTksInNjb3BlcyI6WyJhc3IiLCJnYyJdLCJpYXQiOjE1NzUzNTUxMzJ9.zO0b6MjVkjfRDD9bHG1ffvTVbTA0WQ1JU16X9cndyv0";

    const viewer = new Cesium.Viewer('cesiumContainer', {
      terrainProvider: Cesium.createWorldTerrain()
    });
    viewer.camera.setView({
      destination: Cesium.Cartesian3.fromDegrees(
        119.90,
        31.02,
        60000.0
      ),
    });

    // 超图的图层
    viewer.imageryLayers.addImageryProvider(
      new Cesium.WebMapServiceImageryProvider({
        url: "http://****.***:8090/iserver/services/map-changxingxiandao/wms22",
        layers: "xiandao@changxingxd",

      }),
      8
    );



  </script>
  </div>
</body>

</html>

4 Openlayer加载超图图层

思路: 使用openlayer依赖,正常加载。


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title data-i18n="resources.title_tiledMapLayer4326"></title>
<link href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.9.0/css/ol.css" rel="stylesheet" />
<link href='https://iclient.supermap.io/dist/ol/iclient-ol.min.css' rel='stylesheet' />
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.9.0/build/ol.js"></script>
<script type="text/javascript" src="https://iclient.supermap.io/dist/ol/iclient-ol.min.js"></script>
<style>
    body,html{
        height: 100%;
    }
</style>
</head>
<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%">
<div id="map" style="width: 100%;height:100%"></div>
<script type="text/javascript">
    var map, url = (window.isLocal ? window.server : "https://iserver.supermap.io")+"/iserver/services/map-world/rest/maps/World";
                                       var url = "http://**.**.**.***:8090/iserver/map-chang***/rest/maps/xiandao@changxingxd";
    map = new ol.Map({
        target: 'map',
        controls: ol.control.defaults({attributionOptions: {collapsed: false}})
            .extend([new ol.supermap.control.Logo()]),
        view: new ol.View({
            center:[121.2,30],
            zoom: 9,
            projection: 'EPSG:4326'
        })
    });

    var layer = new ol.layer.Tile({
        source: new ol.source.TileSuperMapRest({
            url: url,
            wrapX: true
        }),
        projection: 'EPSG:4326'
    });

    map.addLayer(layer);
    map.addControl(new ol.supermap.control.ScaleLine());

</script>
</body>

</html>

5 项目引入道路实景(虚拟漫游 supermap )

1.相关资料

国内漫游产品

https://www.5uvr.com/

虚拟开发平台 国外的

krpano

www.krpano.com

国外网站,可能打不开

购买基础包(可以使用所有api):1246 元

458欧元(所有api+ 去除右键产品信息和logo) 折合人民币 3352 元

什么是虚拟漫游?

简单来说,虚拟漫游就是由多个VR全景和多媒体技术组成的一个整合体。

krpano就是一种将VR全景图制作成虚拟漫游的技术。

实现思路:

从数据采集到数据处理到前端展示一整套流程,需要一定的人员参与。

全景车+全景相机采集图像信息,全景测量,使用krpano,对全景图片进行细碎化,再根据空间的上下左右前后6个面进行逻辑上的缝合,形成虚拟全景。

2 使用

登录官网https://krpano.com/download/,根据系统下载相应的软件,安装到电脑,根据流程导入采集的全景图片,稍等片刻,图片多的话处理时间会相应增加,形成一个工程,相关参考demo.

3注意点

demo的主html文件不能直接打开,需要启动本地服务,或使用Hbuilder - 运行到浏览器。

实现思路:

  1. 下载超图的三维资源包 http://support.supermap.com.cn/product/iClient.aspx
    本案例使用的是, SuperMap iClient3D 11i (2022) SP1 for Cesium(2022-11-01) ,这个版本是超图在
    Cesium的基础上优化而来, 实际就是在这个基础上加了自己的js,图片,所以和Cesium官网上的资源包
    是不一样的。
  2. 查看demo ,运行时,同样需要启动服务,或使用Hbuilder 运行到浏览器。否则跨域。
OpenLayers 是一个开源的 JavaScript 库,用于在 web 页面上显示地图。它可以与多种地图服务提供商的 API 进行集成,包括超图SuperMap)。 如果你想在 web 页面上显示超图地图,可以使用 OpenLayers 的功能来加载和显示超图地图数据。首先,确保你已经引入了 OpenLayers 库的 JavaScript 文件。然后,可以按照以下步骤来使用 OpenLayers 加载超图地图数据: 1. 创建一个 HTML 元素,用于容纳地图,例如一个 `<div>` 元素。 2. 在 JavaScript 中,使用 OpenLayers 的 `Map` 类来创建一个地图实例,并指定地图的容器元素的 ID。 3. 创建一个超图的图层实例,使用 OpenLayers 的 `Layer.SuperMapREST` 类,并指定超图的 URL、图层名称等参数。 4. 将超图图层添加到地图实例中,使用 `addLayer` 方法。 5. 设置地图的视图范围和缩放级别,使用 `setView` 方法。 6. 最后,使用 `render` 方法将地图渲染到指定的容器元素中。 以下是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <title>OpenLayers + 超图示例</title> <style> #map { width: 100%; height: 400px; } </style> </head> <body> <div id="map"></div> <script src="https://openlayers.org/en/v6.5.0/build/ol.js"></script> <script> var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() // 使用 OpenStreetMap 作为底图 }), new ol.layer.SuperMapREST({ url: 'http://your-supermap-server.com/iserver/services/map-地图名/rest/maps/地图名称', layersID: '图层名称' }) ], view: new ol.View({ center: ol.proj.fromLonLat([经度, 纬度]), zoom: 缩放级别 }) }); </script> </body> </html> ``` 请将代码中的 `http://your-super
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值