GIS之Supermap系列03:二维地图页面开发

本文详细描述了如何使用Vue.js和SuperMap库在Web页面中开发包含Leaflet和TiledMapLayer的地图功能,包括图层设置、控制面板和地图事件处理。开发者可以创建交互式地图,如标记、多边形等,并处理鼠标悬停和双击事件。
摘要由CSDN通过智能技术生成

supermap地图页面开发,二维地图部分。

<template>
    <div class="plane-layout">
        <div class="plane-layout-bottom">
            <div class="plane-layout-bottom-left">
            </div>
            <div class="plane-layout-bottom-right">
                <div id="map" style="width: 100%; height: 750px;">
                </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 { reactive,nextTick } from 'vue'


const state = reactive({
    options: [
        { label: '全部' }
    ],
    value1: '全部',
    value2: '',
    value3: '全部',
    value4: '全部',
    tableData: [
    ]
})
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
    });
    // 天地图底图
    var tdtmap = new L.supermap.TiandituTileLayer({
        layerType: 'img',
        key: '1d109683f4d84198e37a38c442d68311'
    }).addTo(map);
    // 图层设置
    var world = new L.supermap.TiledMapLayer(url4326,{noWrap:true});
    var 县域城市 = new L.supermap.TiledMapLayer('http://localhost:8090/iserver/services/map/rest/maps/县域城市0529', {noWrap:true});
    var baseMaps = { "天地图WMTS": tdtmap, "world": world };
    var overlayMaps = { "Cities": 县域城市};
      // 添加控件
    L.control.layers(baseMaps, overlayMaps).addTo(map);
    L.control.scale().addTo(map);
    L.control.minimap().addTo(map);
    L.control.sideBySide().addTo(map);
    
    // L.control.sideBySide(China, ChinaDark).addTo(map);
    new L.supermap.TiledMapLayer(url4326).addTo(map);
    var editableLayers = new L.FeatureGroup();
    map.addLayer(editableLayers);
    var options = {
        position: 'topleft',
        draw: {
            polyline: {},
            polygon: {},
            circle: {},
            rectangle: {},
            marker: {},
            remove: {}
        },
        edit: {
            featureGroup: editableLayers,
            remove: true
        }
    };
    var drawControl = new L.Control.Draw(options);
    map.addControl(drawControl);
    handleMapEvent(drawControl._container, map);
    map.on(L.Draw.Event.CREATED, function (e) {
        var type = e.layerType,
            layer = e.layer;
        if (type === 'marker') {
            layer.bindPopup('A popup!');
        }
        editableLayers.addLayer(layer);
    });

    function handleMapEvent(div, map) {
        if (!div || !map) {
            return;
        }
        div.addEventListener('mouseover', function () {
            map.scrollWheelZoom.disable();
            map.doubleClickZoom.disable();
        });
        div.addEventListener('mouseout', function () {
            map.scrollWheelZoom.enable();
            map.doubleClickZoom.enable();
        });
    }
}
nextTick(() => {
    createMap();
    });
</script>
<style lang="less">

</style>
<style lang="less" scoped>
.plane-layout {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    padding: 0px;
    &-bottom {
        &-right {
            flex: 1;
            background: url(@/images/border.png) no-repeat;
            background-size: 100% 150%;
            padding: 1px;
        }
    }
    &-table {
        flex: 1;
        overflow: hidden;
    }
}
</style>

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GIS萬事通

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

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

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

打赏作者

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

抵扣说明:

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

余额充值