20250330期:在前端网页上开发超图二维地图(vue+html)

06-01 381阅读

目录

1 获取脚手架

2 运行环境

3 新建page页

4 vue环境下加载二维地图

4.1 定义空间

4.2 空间样式优化

4.3 安装依赖库

4.4 创建存储地图的函数

4.5 地图初始化

4.6 界面展示

5 html环境下加载二维地图

5.1 引入 SuperMap JS API

5.2 创建地图容器

5.3 初始化地图

6 常见问题排查


1 获取脚手架

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

20250330期:在前端网页上开发超图二维地图(vue+html)

2 运行环境

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

20250330期:在前端网页上开发超图二维地图(vue+html)

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

npm run dev

报错啦,原因,未安装相关依赖

在运行之前需要先安装依赖(如果在安装node时已经全局安装了就不会报错)

20250330期:在前端网页上开发超图二维地图(vue+html)

把相关依赖配置上。

npm install --legacy-peer-deps

20250330期:在前端网页上开发超图二维地图(vue+html)

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

20250330期:在前端网页上开发超图二维地图(vue+html)

20250330期:在前端网页上开发超图二维地图(vue+html)

3 新建page页

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

20250330期:在前端网页上开发超图二维地图(vue+html)

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

20250330期:在前端网页上开发超图二维地图(vue+html)

20250330期:在前端网页上开发超图二维地图(vue+html)

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

20250330期:在前端网页上开发超图二维地图(vue+html)

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

20250330期:在前端网页上开发超图二维地图(vue+html)

20250330期:在前端网页上开发超图二维地图(vue+html)

4 vue环境下加载二维地图

4.1 定义空间

    
        
            
                
            
        
    

4.2 空间样式优化

.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%;
            }
        }
    }
}

4.3 安装依赖库

在script中导入一些必备的模块。

导入 'leaflet'库

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

4.4 创建存储地图的函数

const createMap = () => {
}

4.5 地图初始化

定义一个开源的在线地图

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()
        })
    })

    二维地图完整版代码:

        
            
                
                    
                
            
        
    
    
    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()
        })
    })
    
    
    
    .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%;
                }
            }
        }
    }
    

    4.6 界面展示

    在前端页面显示为:

    20250330期:在前端网页上开发超图二维地图(vue+html)


    5 html环境下加载二维地图

    如果时使用html来构造二维地图,首先需要在supermap官网注册开发者账号,进入控制台创建新应用,获取 appKey(用于身份验证)。

    5.1 引入 SuperMap JS API

    在 HTML 文件中通过 CDN 或本地文件引入 API:

    
    

    5.2 创建地图容器

    在 HTML 头部中添加一个用于承载地图的 :

     
    

    5.3 初始化地图

    在正文部分,使用 JavaScript 初始化地图实例,并加载底图:

    // 初始化地图对象
    const map = new supermap.Map({
      controls: [
        new supermap.NavigationControl(), // 添加缩放控件
        new supermap.ScaleLineControl()   // 添加比例尺
      ]
    });
    // 创建图层
    const layer = new supermap.TileLayer({
      url: "https://iserver.supermap.io/iserver/services/map-china400/rest/maps/China",
      serverType: "iServer"
    });
    // 将图层添加到地图
    map.addLayers([layer]);
    // 将地图绑定到容器
    map.setTarget("map");
    // 设置初始视口(中心点坐标和缩放级别)
    map.setView(new supermap.View({
      center: [116.4, 39.9], // 中心点坐标
      zoom: 4               // 缩放级别
    }));

    完整代码如下:

    
    
      aaanimals_SuperMap_二维地图
      
      
        #map { width: 100%; height: 600px; }
      
    
    
      
      
        // 初始化地图
        const map = new supermap.Map({
          controls: [
            new supermap.NavigationControl(),
            new supermap.ScaleLineControl()
          ]
        });
        // 添加底图图层
        const layer = new supermap.TileLayer({
          url: "https://iserver.supermap.io/iserver/services/map-china400/rest/maps/China",
          serverType: "iServer"
        });
        map.addLayers([layer]);
        // 绑定到容器并设置视口
        map.setTarget("map");
        map.setView(new supermap.View({
          center: [116.4, 39.9],
          zoom: 4
        }));
      
    
    

    6 常见问题排查

    • 地图不显示:检查容器尺寸是否明确(如设置 width/height),确保 API 加载成功。
    • 图层加载失败:确认图层 URL 和 serverType 正确,或替换为自有服务地址。
    • 坐标偏移:若使用非官方地图,需确认坐标系(如 WGS84 或 GCJ02)。

      喜欢本篇文章请多多关注,您的鼓励是我最大的动力。欢迎大家互相分享交流。(aaanimals)


      20250330期:在前端网页上开发超图二维地图(vue+html)

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码