Map_spatial_buffer.vue 4.75 KB
<!--
 * 缓冲区分析
 * @Author: jiangbotao
 * @Date: 2019-12-10 14:16:04
 * @LastEditors: jiangbotao
 * @LastEditTime: 2019-12-10 19:58:51
 * @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, SpatialAnalystService } from '@supermap/iclient-mapboxgl';
export default {
    name: 'HelloWorld',
    data () {
        return {
        
        }
    },
    mounted(){ 
        var map, host = "http://support.supermap.com.cn:8090";
        var baseUrl = host + "/iserver/services/map-jingjin/rest/maps/京津地区地图/zxyTileImage.png?z={z}&x={x}&y={y}";
        var serviceUrl = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
        var serviceUrl2 = 'http://support.supermap.com.cn:8090/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst/datasets/Road_L@Jingjin/buffer.json?returnContent=true';

        var map = new mapboxgl.Map({
            container: 'map',
            style: {
                "version": 8,
                "sources": {
                    "raster-tiles": {
                        "attribution": 'attribution',
                        "type": "raster",
                        "tiles": [baseUrl],
                        "tileSize": 256,
                    },
                },
                "layers": [{
                    "id": "simple-tiles",
                    "type": "raster",
                    "source": "raster-tiles",
                    "minzoom": 0,
                    "maxzoom": 22
                }],
            },
            center: [116.28094998209556, 39.897168019388474],
            maxZoom: 18,
            zoom: 12
        });
        map.addControl(new Logo(), 'bottom-right');
        map.addControl(new mapboxgl.NavigationControl(), 'top-left');

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

        function bufferAnalystProcess() {
            map.addLayer({
                "id": "route",
                "type": "line",
                "source": {
                    "type": "geojson",
                    "data": {
                        "type": "Feature",
                        "geometry": {
                            "type": "LineString",
                            "coordinates": [
                                [116.2143386597, 39.8959419733],
                                [116.2156351162, 39.8963250173],
                                [116.2182280292, 39.8968111885],
                                [116.2740019864, 39.8970124079],
                                [116.3103285499, 39.8970574832],
                                [116.3321510064, 39.8970392162],
                                [116.3377051439, 39.8973437531],
                                [116.3463089006, 39.8978391816],
                            ]
                        }
                    }
                },
                "layout": {
                    "line-join": "round",
                    "line-cap": "round"
                },
                "paint": {
                    "line-color": "#888",
                    "line-width": 8
                }
            });
            //缓冲区分析参数
            var dsBufferAnalystParameters = new SuperMap.DatasetBufferAnalystParameters({
                dataset: "Road_L@Jingjin",
                filterQueryParameter: new SuperMap.FilterParameter({
                    attributeFilter: "NAME='莲花池东路'"
                }),
                bufferSetting: new SuperMap.BufferSetting({
                    endType: SuperMap.BufferEndType.ROUND,
                    leftDistance: {value: 300},
                    rightDistance: {value: 300},
                    semicircleLineSegment: 10,
                    radiusUnit: 'METER'
                })
            });
            //缓冲区分析服务
            new SpatialAnalystService(serviceUrl).bufferAnalysis(dsBufferAnalystParameters, function (serviceResult) {
                console.log(serviceResult.result);
                map.addLayer({
                    "id": "queryDatas",
                    "type": "fill", /* fill类型一般用来表示一个面,一般较大 */
                    "source": {
                        "type": "geojson",
                        "data": serviceResult.result.recordset.features
                    },
                    "paint": {
                        "fill-color": "red", /* 填充的颜色 */
                        "fill-opacity": 0.4  /* 透明度 */
                    },
                });
            })
        }
    }
}
</script>

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