Map_theme_label.vue 4.64 KB
<!--
 * @Author: jiangbotao
 * @Date: 2019-12-10 14:16:04
 * @LastEditors: jiangbotao
 * @LastEditTime: 2019-12-10 15:43:09
 * @FilePath: \mymapbox\src\components\Map_filter_sql.vue
 -->
<template>
    <div >
        <div id="map"></div>
    </div>
</template>

<script>
import mapboxgl from 'mapbox-gl';
import { Logo, FeatureService, QueryService, ThemeService } from '@supermap/iclient-mapboxgl';
export default {
    name: 'HelloWorld',
    data () {
        return {
        
        }
    },
    mounted(){ 
        var map, host = "http://support.supermap.com.cn:8090";
        var url = host + "/iserver/services/map-world/rest/maps/World";
        var dataUrl = host + "/iserver/services/map-china400/rest/maps/China";

        var map = new mapboxgl.Map({
            container: 'map',
            style: {
                "version": 8,
                "sources": {
                    "raster-tiles": {
                        "attribution": 'attribution',
                        "type": "raster",
                        "tiles": [host + '/iserver/services/map-china400/rest/maps/China/zxyTileImage.png?prjCoordSys={"epsgCode":3857}&z={z}&x={x}&y={y}'],
                        "tileSize": 256,
                    },
                },
                "layers": [{
                    "id": "simple-tiles",
                    "type": "raster",
                    "source": "raster-tiles",
                    "minzoom": 0,
                    "maxzoom": 22
                }],
            },
            center: [108.94, 34.34],
            maxZoom: 18,
            zoom: 2
        });
        map.addControl(new Logo(), 'bottom-right');
        map.addControl(new mapboxgl.NavigationControl(), 'top-left');

        map.on('load', function () {
            createTheme();
        });

        function createTheme() {
            var style1, style2, style3;
            style1 = new SuperMap.ServerTextStyle({
                fontHeight: 4,
                foreColor: new SuperMap.ServerColor(0, 0, 0),

            });
            style2 = new SuperMap.ServerTextStyle({
                fontHeight: 4,
                foreColor: new SuperMap.ServerColor(155, 30, 45),
            });
            style3 = new SuperMap.ServerTextStyle({
                fontHeight: 4,
                foreColor: new SuperMap.ServerColor(30, 45, 155),
            });
            var themeLabelItem1, themeLabelItem2, themeLabelItem3;
            themeLabelItem1 = new SuperMap.ThemeLabelItem({
                start: 300,//110000,
                end: 3508,//350000,
                style: style1
            });
            themeLabelItem2 = new SuperMap.ThemeLabelItem({
                start: 3508,//350000,
                end: 5508,//550000,
                style: style2
            });
            themeLabelItem3 = new SuperMap.ThemeLabelItem({
                start: 5508,//550000,
                end: 10724,//820000,
                style: style3
            });

            var themeLabel = new SuperMap.ThemeLabel({
                labelExpression: "NAME",
                rangeExpression: "pop_2014",
                numericPrecision: 0,
                items: [themeLabelItem1, themeLabelItem2, themeLabelItem3],
                background: new SuperMap.ThemeLabelBackground({
                    backStyle: new SuperMap.ServerStyle({
                        fillForeColor: new SuperMap.ServerColor(179, 209, 193),
                        fillOpaqueRate: 60,
                        lineWidth: 0.1
                    }),
                    labelBackShape: "RECT"
                })
            });
            var themeParameters = new SuperMap.ThemeParameters({
                themes: [themeLabel],
                datasetNames: ["China_Province_pg"],
                dataSourceNames: ["China"]
            });

            new ThemeService(dataUrl).getThemeInfo(themeParameters, function (serviceResult) {
                var result = serviceResult.result;
                if (result && result.newResourceID) {
                    map.addSource("theme", {
                        "type": 'raster',
                        "tiles": [host + '/iserver/services/map-china400/rest/maps/China/zxyTileImage.png?z={z}&x={x}&y={y}&transparent=true&cacheEnabled=false&layersID=' + result.newResourceID],
                        "tileSize": 256,
                    });

                    map.addLayer({
                        "id": "themeLayer",
                        "type": "raster",
                        "source": "theme",
                    });
                }
            })
        }
    }
}
</script>

<style scoped>
#map {
    position: absolute;
    height: 100%;
    width: 100%;
    background-color: white
}
</style>