Map_wz.vue 3.63 KB
<!--
 * @Author: jiangbotao
 * @Date: 2019-12-10 22:15:53
 * @LastEditors: jiangbotao
 * @LastEditTime: 2019-12-12 21:07:20
 * @FilePath: \supermapvue\src\components\vt\Map_wz.vue
 -->
<template>
    <div >
        <div id="map"></div>
    </div>
</template>

<script>
import mapboxgl from 'mapbox-gl';
import { Logo } from '@supermap/iclient-mapboxgl';

export default {
    name: 'MVT',
    data () {
        return {
        
        }
    },
    mounted(){ 
        mapboxgl.accessToken = 'pk.eyJ1IjoiY2hpYW5nYnQyIiwiYSI6ImNqemYzODJuejA4ZG0zbW53azE3eWljemsifQ.zCGZHTRuZV2uqovnXYtsew';
        var map = new mapboxgl.Map({
            container: 'map', // container id
            style: 
                'http://127.0.0.1:8090/iserver/services/map-mvt-China_Dark/rest/maps/China_Dark/tileFeature/vectorstyles.json?type=MapBox_GL&styleonly=true',
            center: [116.4, 39.9],
            minZoom: 0,
            zoom: 3,
            pitch: 45,
            bearing: -10
        });
        map.addControl(new mapboxgl.NavigationControl(), 'top-left');

        map.on('load', function () {
            console.log(map.getStyle().sources);
            console.log(map.getStyle().layers);
            map.setPaintProperty('WorldElements_R@China', 'fill-color', '#a1dab4');
            map.setPaintProperty('Country_R@China', 'fill-color', '#FFFFFF');
            map.setPaintProperty('Province_R@China', 'fill-color', '#fd8d3c');
            map.setPaintProperty('River_R@China', 'fill-color', '#fcfcfc');
            map.addLayer({
                'id': 'population',
                'type': 'circle',
                'source': {
                    type: 'vector',
                    url: 'mapbox://examples.8fgz4egr'
                },
                'source-layer': 'sf2010',
                'paint': {
                    // make circles larger as the user zooms from z12 to z22
                    'circle-radius': {
                        'base': 1.75,
                        'stops': [
                            [12, 2],
                            [22, 180]
                        ]
                    },
                // color circles by ethnicity, using a match expression
                // https://docs.mapbox.com/mapbox-gl-js/style-spec/#expressions-match
                    'circle-color': [
                        'match',
                        ['get', 'ethnicity'],
                        'White',
                        '#fbb03b',
                        'Black',
                        '#223b53',
                        'Hispanic',
                        '#e55e5e',
                        'Asian',
                        '#3bb2d0',
                    /* other */ '#ccc'
                    ]
                }
            });

            var popup = new mapboxgl.Popup({
                closeButton: false
            });
            map.on('mousemove', 'population', function(e) {
                // Change the cursor style as a UI indicator.
                map.getCanvas().style.cursor = 'pointer';
                // Single out the first found feature.
                var feature = e.features[0];
                console.log(feature.properties);
                // Display a popup with the name of the county
                popup.setLngLat(e.lngLat)
                    .setText(feature.properties.ethnicity)
                    .addTo(map);
            });

            map.on('mouseleave', 'population', function() {
                map.getCanvas().style.cursor = '';
                popup.remove();
            });
        });
    }
}
</script>

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