Map_query_distance.vue 3.23 KB
<template>
    <div >
        <div id="map"></div>
    </div>
</template>

<script>
import mapboxgl from 'mapbox-gl';
import { Logo, QueryByBoundsParameters, QueryService } 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 map = new mapboxgl.Map({
            container: 'map',
            style: {
                "version": 8,
                "sources": {
                    "raster-tiles": {
                        "attribution": 'attribution',
                        "type": "raster",
                        "tiles": [host + '/iserver/services/maps/rest/maps/World/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: [121, 3],
            maxZoom: 18,
            zoom: 2
        });
        map.addControl(new Logo(), 'bottom-right');
        map.addControl(new mapboxgl.NavigationControl(), 'top-left');

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

        var decodeMarkers = [];
        function query() {
            //添加查询中心点
            var img = new Image();
            img.src = './static/image/markerbig_select.png';
            var marker = new mapboxgl.Marker(img).setLngLat([121, 30]);
            decodeMarkers.push(marker);

            var point = new SuperMap.Geometry.Point(104, 30);
            var param = new SuperMap.QueryByDistanceParameters({
                queryParams: {name: "Capitals@World.1"},
                distance: 10,      // 100度的距离
                geometry: point
            });

            var queryService = new QueryService(url);
            queryService.queryByDistance(param, callback);
        }

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

        function callback(serviceResult) {
            var recordsets = serviceResult && serviceResult.result && serviceResult.result.recordsets;
            var features = recordsets && recordsets[0] && recordsets[0].features;
            console.log(features);
            decodeMarkers[0].addTo(map);
            map.addLayer({
                "id": "results",
                "type": "circle",
                "paint": {
                    "circle-radius": 6,
                    "circle-color": "#007cbf",
                    "circle-opacity": 0.1,
                    "circle-stroke-width": 2,
                    "circle-stroke-color": "#007cbf",
                    "circle-stroke-opacity": 0.5
                },
                "source": {
                    "type": "geojson",
                    "data": features
                }
            });
        }
    }
}
</script>

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