/**
 * 初始化地图
 */

// eslint-disable-next-line no-redeclare
/* global BMapGL */
/* global darkStyle */

function initMap(options, com) {
    options = Object.assign(
        {
            tilt: 60,
            heading: 0,
        },
        options
    );
    var map = new BMapGL.Map(com || 'map_container', {
        restrictCenter: false,
        style: { styleJson: options.style || darkStyle },
    });
    map.enableKeyboard();
    map.enableScrollWheelZoom();
    map.enableInertialDragging();
    map.enableContinuousZoom();

    map.setDisplayOptions(
        options.displayOptions || {
            indoor: false,
            poi: true,
            skyColors: options.skyColors || ['rgba(5, 5, 30, 0.01)', 'rgba(5, 5, 30, 1.0)'],
        }
    );
    if (options.center && options.zoom) {
        map.centerAndZoom(new BMapGL.Point(options.center[0], options.center[1]), options.zoom);
    }

    map.setTilt(options.tilt);
    map.setHeading(options.heading);
    return map;
}

var snowStyle = [
    {
        featureType: 'background',
        elementType: 'geometry',
        stylers: {
            color: '#fefefeff',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'road',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'road',
        elementType: 'geometry.fill',
        stylers: {
            color: '#f0f1f7ff',
        },
    },
    {
        featureType: 'road',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#e8eaf5ff',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#e8eaf5ff',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#e8eaf5ff',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'railway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'nationalwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'nationalwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'provincialwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'provincialwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'tertiarywaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'tertiarywaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'subwaylabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'subwaylabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#80868dff',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'districtlabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#7d82b0ff',
        },
    },
    {
        featureType: 'districtlabel',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#80868dff',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'geometry',
        stylers: {
            color: '#eef1fbff',
        },
    },
    {
        featureType: 'water',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'water',
        elementType: 'geometry',
        stylers: {
            // "color": "#a7c9ffff"
            color: '#a7c9ffff',
        },
    },
    {
        featureType: 'green',
        elementType: 'geometry',
        stylers: {
            color: '#eef1fbff',
            visibility: 'off',
        },
    },
    {
        featureType: 'subway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#7d82b0ff',
        },
    },
    {
        featureType: 'town',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'village',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry',
        stylers: {
            weight: 3,
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#e8eaf5ff',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'geometry.fill',
        stylers: {
            color: '#e8eaf5ff',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
];

var darkStyle = [
    {
        featureType: 'background',
        elementType: 'geometry',
        stylers: {
            color: '#070c17ff',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'road',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'road',
        elementType: 'geometry.fill',
        stylers: {
            color: '#151e25ff',
        },
    },
    {
        featureType: 'road',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#27303bff',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#27303bff',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#27303bff',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'railway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'nationalwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'nationalwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'provincialwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'provincialwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'tertiarywaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'tertiarywaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'subwaylabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'subwaylabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#80868dff',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'districtlabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#71767aff',
        },
    },
    {
        featureType: 'districtlabel',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#80868dff',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'geometry',
        stylers: {
            color: '#070c17ff',
        },
    },
    {
        featureType: 'water',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'water',
        elementType: 'geometry',
        stylers: {
            color: '#141d27ff',
        },
    },
    {
        featureType: 'green',
        elementType: 'geometry',
        stylers: {
            color: '#122228ff',
            visibility: 'off',
        },
    },
    {
        featureType: 'subway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#5f6468ff',
        },
    },
    {
        featureType: 'town',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'village',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry',
        stylers: {
            weight: 3,
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#27303bff',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'geometry.fill',
        stylers: {
            color: '#27303bff',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff00',
        },
    },
];

var purpleStyle = [
    {
        featureType: 'water',
        elementType: 'all',
        stylers: {
            color: '#021019ff',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#000000ff',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#147a92ff',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'geometry.fill',
        stylers: {
            color: '#000000ff',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#0b3d51ff',
        },
    },
    {
        featureType: 'local',
        elementType: 'geometry',
        stylers: {
            color: '#000000ff',
        },
    },
    {
        featureType: 'railway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#000000ff',
        },
    },
    {
        featureType: 'railway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#08304bff',
        },
    },
    {
        featureType: 'subway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'all',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#857f7fff',
        },
    },
    {
        featureType: 'all',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#000000ff',
        },
    },
    {
        featureType: 'green',
        elementType: 'geometry',
        stylers: {
            color: '#062032ff',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'geometry',
        stylers: {
            color: '#022338ff',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'all',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'all',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'water',
        elementType: 'all',
        stylers: {
            visibility: 'on',
            color: '#505565ff',
        },
    },
    {
        featureType: 'green',
        elementType: 'all',
        stylers: {
            color: '#353b4dff',
        },
    },
    {
        featureType: 'road',
        elementType: 'geometry.fill',
        stylers: {
            visibility: 'on',
            color: '#2a2e3bff',
        },
    },
    {
        featureType: 'road',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#4b5163ff',
        },
    },
    {
        featureType: 'administrative',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#8e99bdff',
        },
    },
    {
        featureType: 'administrative',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#2f3547ff',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#727c9aff',
        },
    },
    {
        featureType: 'road',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#293045ff',
        },
    },
    {
        featureType: 'road',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#777e93ff',
        },
    },
    {
        featureType: 'town',
        elementType: 'all',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'subway',
        elementType: 'labels.text.fill',
        stylers: {
            visibility: 'off',
            color: '#787f95ff',
        },
    },
    {
        featureType: 'subway',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#40475eff',
        },
    },
    {
        featureType: 'building',
        elementType: 'geometry.fill',
        stylers: {
            color: '#485161ff',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'geometry.fill',
        stylers: {
            color: '#374053ff',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#8792adff',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#292f48ff',
        },
    },
    {
        featureType: 'scenicspotslabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'railway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'scenicspotslabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'nationalwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'nationalwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'provincialwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'provincialwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'tertiarywaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'tertiarywaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'subwaylabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'subwaylabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'village',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'town',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'land',
        elementType: 'geometry',
        stylers: {
            color: '#40495aff',
            visibility: 'on',
        },
    },
];

var whiteStyle = [
    {
        featureType: 'water',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
            color: '#ccd6d7ff',
        },
    },
    {
        featureType: 'green',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
            color: '#dee5e5ff',
        },
    },
    {
        featureType: 'building',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'building',
        elementType: 'geometry.fill',
        stylers: {
            color: '#d1dbdbff',
        },
    },
    {
        featureType: 'building',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#aab6b6ff',
        },
    },
    {
        featureType: 'subwaystation',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            color: '#888fa0ff',
        },
    },
    {
        featureType: 'education',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
            color: '#e1e7e7ff',
        },
    },
    {
        featureType: 'medical',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
            color: '#d1dbdbff',
        },
    },
    {
        featureType: 'scenicspots',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
            color: '#d1dbdbff',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
            weight: '4',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#cacfcfff',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
            weight: '2',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'geometry.fill',
        stylers: {
            color: '#fbfffeff',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#cacfcfff',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'arterial',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'local',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
            weight: '1',
        },
    },
    {
        featureType: 'local',
        elementType: 'geometry.fill',
        stylers: {
            color: '#fbfffeff',
        },
    },
    {
        featureType: 'local',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#cacfcfff',
        },
    },
    {
        featureType: 'local',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'local',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'local',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'railway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            weight: '1',
        },
    },
    {
        featureType: 'railway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#9494941a',
        },
    },
    {
        featureType: 'railway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff1a',
        },
    },
    {
        featureType: 'subway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            weight: '1',
        },
    },
    {
        featureType: 'subway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#c3bed433',
        },
    },
    {
        featureType: 'subway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#ffffff33',
        },
    },
    {
        featureType: 'subway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'subway',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#979c9aff',
        },
    },
    {
        featureType: 'subway',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'continent',
        elementType: 'labels',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'continent',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'continent',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#333333ff',
        },
    },
    {
        featureType: 'continent',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'city',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'city',
        elementType: 'labels',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'city',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#454d50ff',
        },
    },
    {
        featureType: 'city',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'town',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'town',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'town',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#454d50ff',
        },
    },
    {
        featureType: 'town',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'road',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'road',
        elementType: 'geometry.fill',
        stylers: {
            color: '#fbfffeff',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'districtlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'districtlabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#888fa0ff',
        },
    },
    {
        featureType: 'transportation',
        elementType: 'geometry',
        stylers: {
            color: '#d1dbdbff',
        },
    },
    {
        featureType: 'companylabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'restaurantlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'lifeservicelabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'carservicelabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'financelabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'otherlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'village',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'district',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'land',
        elementType: 'geometry',
        stylers: {
            color: '#edf3f3ff',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#cacfcfff',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#cacfcfff',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#cacfcfff',
        },
    },
    {
        featureType: 'road',
        elementType: 'geometry.stroke',
        stylers: {
            color: '#cacfcfff',
        },
    },
    {
        featureType: 'subwaylabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'subwaylabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'tertiarywaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'tertiarywaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'provincialwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'provincialwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'nationalwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'nationalwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highwaysign',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'highwaysign',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#fbfffeff',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'highway',
        stylers: {
            level: '6',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'highway',
        stylers: {
            level: '7',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'highway',
        stylers: {
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '6',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '7',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'highway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '6',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '7',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'highway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'nationalway',
        stylers: {
            level: '6',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'nationalway',
        stylers: {
            level: '7',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'nationalway',
        stylers: {
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '6',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '7',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '6',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '7',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'provincialway',
        stylers: {
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '8-8',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '8-8',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '8-8',
        },
    },
    {
        featureType: 'cityhighway',
        stylers: {
            level: '6',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'cityhighway',
        stylers: {
            level: '7',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'cityhighway',
        stylers: {
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '6',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '7',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'geometry',
        stylers: {
            visibility: 'off',
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '6',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '7',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
            level: '8',
            curZoomRegionId: '0',
            curZoomRegion: '6-8',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#fbfffeff',
        },
    },
    {
        featureType: 'water',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#8f5a33ff',
        },
    },
    {
        featureType: 'water',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'country',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#8f5a33ff',
        },
    },
    {
        featureType: 'country',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'country',
        elementType: 'labels.text',
        stylers: {
            fontsize: '28',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'geometry',
        stylers: {
            color: '#dfe7e7ff',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#fbfffeff',
        },
    },
    {
        featureType: 'tertiaryway',
        elementType: 'geometry.fill',
        stylers: {
            color: '#fbfffeff',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'scenicspots',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'scenicspots',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'scenicspotslabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'scenicspotslabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'educationlabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'educationlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'medicallabel',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'medicallabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'companylabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'restaurantlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'hotellabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'hotellabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'shoppinglabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'shoppinglabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'lifeservicelabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'carservicelabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'transportationlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'transportationlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'financelabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'entertainment',
        elementType: 'geometry',
        stylers: {
            color: '#d1dbdbff',
        },
    },
    {
        featureType: 'estate',
        elementType: 'geometry',
        stylers: {
            color: '#d1dbdbff',
        },
    },
    {
        featureType: 'shopping',
        elementType: 'geometry',
        stylers: {
            color: '#d1dbdbff',
        },
    },
    {
        featureType: 'education',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'education',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'medical',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'medical',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'transportation',
        elementType: 'labels.text.fill',
        stylers: {
            color: '#999999ff',
        },
    },
    {
        featureType: 'transportation',
        elementType: 'labels.text.stroke',
        stylers: {
            color: '#ffffffff',
        },
    },
    {
        featureType: 'road',
        elementType: 'geometry',
        stylers: {
            visibility: 'on',
        },
    },
    {
        featureType: 'nationalway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'provincialway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'cityhighway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'tertiaryway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'fourlevelway',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'water',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'manmade',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'education',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'medical',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'scenicspots',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'transportation',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'entertainmentlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'estatelabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'businesstowerlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'governmentlabel',
        elementType: 'labels.icon',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'governmentlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'businesstowerlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'estatelabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'entertainmentlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'medicallabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'educationlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'scenicspotslabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'airportlabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
    {
        featureType: 'poilabel',
        elementType: 'labels',
        stylers: {
            visibility: 'off',
        },
    },
];

export { initMap, snowStyle, darkStyle, purpleStyle, whiteStyle };
