在vue框架内实现加载supermap二维三维底图及功能实现(待更新)

记录了如何从一个vue框架,初步设计并加载二三维底图,并实现相关功能。


目录

01.框架获取

02.运行脚手架

03.新建page页

04.配置二维地图


01.框架获取

首先在GITTE上爬取一个框架,或者自己创建一个脚手架。

02.运行脚手架

用VScode打开查看(其他环境均可)

这里输入“npm run dev”,运行

npm run dev

报错啦,原因,未安装相关依赖(说明框架内部有东西)

我们只需要把相关依赖配置上即可。

npm install --legacy-peer-deps

再次运行“npm run dev”,进入系统页面。

03.新建page页

在page页下新建两个vue文件,用于二维、三维地图的测试。

在标题图层内加两个索引页,本框架在layout路径下的“navs.vue”文件内,添加两个索引。

给这两个索引定义两个路由。

保存并刷新页面,查看效果。

04.配置二维地图

首先定义一个空间。

    <div class="plane-layout">
        <div class="plane-layout-2D">
            <div class="plane-layout-2D-middle">
                <div id="map"></div>
            </div>
        </div>
    </div>

并对空间样式进行优化

.plane-layout {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    padding: 0px;

    &-2D {
        height: 100%;

        &-middle {
            flex: 1;
            background-size: 100% 150%;
            padding: 1px;
            height: 100%;

            #map {
                width: 100%;
                height: 100%;
            }
        }
    }
}

接下来,在script中导入一些必备的模块。

导入 'leaflet'库

import * as L from 'leaflet'
import '@supermap/iclient-leaflet/dist/iclient-leaflet.css'
import 'leaflet/dist/leaflet.css'
import '@supermap/iclient-leaflet'

创建一个存储地图的函数

const createMap = () => {

}

定义一个开源的在线地图

var url4326 = "https://iserver.supermap.io/iserver/services/map-world/rest/maps/World";

对地图的属性进行定义

如地图名称、投影、中西当年、最大缩放等级、最小缩放等级、当前缩放等级等。

    var map = L.map('map', {
        crs: L.CRS.EPSG4326,
        center: [40.044716, 111.489059],
        maxZoom: 18,
        zoom: 4,
        minZoom: 4
    });

将在线地图显示在定义的地图图层中

(函数引用:support.supermap.com.cn:8090/iserver/iClient/forJavaScript/docs/leaflet/TiledMapLayer.html

new L.supermap.TiledMapLayer(url4326).addTo(map);

这里,我们需要给地图定义一个出发指令。

  • mounted: 组件初始化完成,可以访问dom,
  • $nextTick: 每次数据更新之后,渲染完毕的回调,
  • created: 可以正常访问数据。
onMounted(() => {
    nextTick(() => {
        createMap()
    })
})

二维地图完整版代码:

<template>
    <div class="plane-layout">
        <div class="plane-layout-2D">
            <div class="plane-layout-2D-middle">
                <div id="map"></div>
            </div>
        </div>
    </div>
</template>
<script setup lang="ts">
import * as L from 'leaflet'
import '@supermap/iclient-leaflet/dist/iclient-leaflet.css'
import 'leaflet/dist/leaflet.css'
import '@supermap/iclient-leaflet'
import { onMounted, nextTick } from 'vue'

const createMap = () => {
    var url4326 = "https://iserver.supermap.io/iserver/services/map-world/rest/maps/World";
    var map = L.map('map', {
        crs: L.CRS.EPSG4326,
        center: [40, 111],
        maxZoom: 18,
        zoom: 4,
        minZoom: 4
    });
    new L.supermap.TiledMapLayer(url4326).addTo(map);
}
onMounted(() => {
    nextTick(() => {
        createMap()
    })
})
</script>
<style></style>
<style lang="less" scoped>
.plane-layout {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    padding: 0px;

    &-2D {
        height: 100%;

        &-middle {
            flex: 1;
            background-size: 100% 150%;
            padding: 1px;
            height: 100%;

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

在前端页面显示为:

要在Vue实现离线三维地图,可以使用一些开源的JavaScript库来帮助实现。下面是一个基本的步骤: 1. 选择一个合适的三维地图库,比如Cesium.js或者Three.js。Cesium.js是一个功能强大的地理信息系统(GIS)库,而Three.js是一个用于创建和渲染三维图形的库。根据你的需求选择其中之一。 2. 在Vue项目中引入所选库。你可以使用npm安装库,然后在Vue组件中导入它们。比如,如果选择了Cesium.js,可以使用以下命令安装: ``` npm install cesium ``` 然后,在Vue组件中导入Cesium.js: ```javascript import * as Cesium from 'cesium' ``` 3. 创建一个地图容器。在Vue组件的模板中添加一个容器元素,用于显示地图。比如: ```html <template> <div id="mapContainer"></div> </template> ``` 4. 在Vue组件的`mounted`生命周期钩子中初始化地图。在组件加载完成后,可以使用所选库的API来初始化地图并将其绑定到容器元素上。以下是Cesium.js的示例代码: ```javascript mounted() { const viewer = new Cesium.Viewer('mapContainer'); } ``` 这将在id为`mapContainer`的元素上创建一个新的Cesium地图。 5. 根据需要添加离线地图数据。离线地图数据可以是地形数据、影像数据或矢量数据。你可以通过将这些数据下载到本地,并在初始化地图时指定路径来添加离线数据。具体的数据格式和加载方法取决于所选的库和数据源。 注意:在使用任何地图库时,请确保遵守相关的许可协议和使用条款。 这只是一个基本的示例,具体的实现方法可能因所选的库和需求而有所不同。你可以根据自己的需要进一步探索和定制地图的功能和样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS萬事通

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值