ФRuŠKać

init

method
fruskac.init()

Initialize the map

fruskac.init = function () {

    event = new fruskac.Event();

    fruskac.isCrossDomain = window.self !== window.top && document.referrer && !(new RegExp('//' + document.domain)).test(document.referrer);
    fruskac.isMobile = document.getElementById('map_container').getBoundingClientRect().width < 1024;
    fruskac.allowfullscreen = window.frameElement && window.frameElement.hasAttribute('allowFullScreen');
    fruskac.allowBrand = !window.frameElement || !window.frameElement.hasAttribute('allowBrand') || !window.frameElement.getAttribute('allowBrand');

    if (fruskac.isCrossDomain || fruskac.allowBrand) {
        // remove logo "hidden" class
        util.removeClass(document.getElementById('map_logo'), 'hidden');
    }

    i18n = new fruskac.I18n(fruskac.config.lang);

    storage = new fruskac.Storage();

    var mapConfig = {
        center: new google.maps.LatLng(fruskac.config.map.center.latitude, fruskac.config.map.center.longitude),
        zoom: fruskac.config.map.zoom,
        mapTypeId: google.maps.MapTypeId.TERRAIN,
        zoomControlOptions: {
            position: google.maps.ControlPosition.LEFT_CENTER
        },
        mapTypeControl: false,
        streetViewControl: false,
        fullscreenControl: false,
        clickableIcons: false,
        gestureHandling: 'greedy',
        controlSize: 30,
    };

    var latLngZoom = request.get(PARAMETER_COORDINATES);
    if (latLngZoom) {
        var latLngZoomParts = request.getParts(PARAMETER_COORDINATES);
        if (latLngZoomParts && latLngZoomParts.length) {
            if (latLngZoomParts[0] && latLngZoomParts[1]) {
                mapConfig.center = new google.maps.LatLng(latLngZoomParts[0], latLngZoomParts[1]);
            }
            if (latLngZoomParts[2]) {
                mapConfig.zoom = parseFloat(latLngZoomParts[2]);
            }
            if (fruskac.config.map.bounds) {
                delete fruskac.config.map.bounds;
            }
        }
    }

    gmap = new google.maps.Map(document.getElementById('map'), mapConfig);

    var track = request.get(PARAMETER_TRACK);
    var focus = request.get(PARAMETER_FOCUS);

    if (fruskac.config.map.bounds && !(track || focus)) {
        gmap.fitBounds(new google.maps.LatLngBounds(
            new google.maps.LatLng(fruskac.config.map.bounds.sw.latitude, fruskac.config.map.bounds.sw.longitude),
            new google.maps.LatLng(fruskac.config.map.bounds.ne.latitude, fruskac.config.map.bounds.ne.longitude)
        ));
    }

    var overlayImageBounds = {
        north: 45.166508,
        south: 45.136001,
        east: 19.767672,
        west: 19.681498
    };
    var overlayOptions = {
        opacity: 0.8,
        clickable: false
    };
    var groundOverlay = new google.maps.GroundOverlay(
        IMAGE_OVERLAY,
        overlayImageBounds,
        overlayOptions
    );
    groundOverlay.setMap(gmap);

    gmap.getDiv().setAttribute('zoom', gmap.getZoom());

    gmap.addListener('zoom_changed', function () {
        gmap.getDiv().setAttribute('zoom', gmap.getZoom());
    });

    map = new fruskac.Map();
    dialog = new fruskac.Dialog();
    geolocation = new fruskac.Geolocation();

clusterer = new MarkerClusterer(gmap, [], {
maxZoom: 12,
gridSize: 50,
styles: [
{
textColor: 'white',
height: 24,
width: 24
},
{
textColor: 'white',
height: 32,
width: 32
},
{
textColor: 'white',
height: 48,
width: 48
}
]
});

clusterer.setEnabled = function (value) {
    clusterer.enabled = value;
    if (value) {
        clusterer.setMaxZoom(12);
        clusterer.setGridSize(50);
    } else {
        clusterer.setMaxZoom(1);
        clusterer.setGridSize(1);
    }
    clusterer.resetViewport();
    clusterer.redraw();
};

clusterer.setEnabled(fruskac.config.clustering);
chart = new fruskac.Chart(document.getElementById('chart_container'));

var loader = new fruskac.Loader();

loader.load(fruskac.config.data).then(function () {

    if (track) {
        // load external track
        loader.append(track, TYPE_TRACK).then(function (object) {
            map.focus(object); // focus on appended object
        })
    }

    if (focus) {
        // focus on selector
        storage.focus(focus, true); // focus on selected object
    }

    if (!(track || focus) && latLngZoom && latLngZoomParts && latLngZoomParts.length) {
        // add circle marker if track/location not set
        map.placeMarker(new google.maps.LatLng(latLngZoomParts[0], latLngZoomParts[1]), null, true); // create pulsating marker
    }

    event.publish('ready');

});
};