View file rusnet-interactive-map/assets/js/admin/admin-map-preview.js

File size: 1.98Kb
jQuery(document).ready(function($) {
    if ( typeof rusnetim_admin_preview === 'undefined' ) return;

    var data = rusnetim_admin_preview;
    $(document).on('click', '#addcontrol a', function() {
        var current = $('#controls_map_option').val();
        if (current.trim() != "") current += ';';
        current += $(this).data('control');
        $('#controls_map_option').val(current);
    });

    ymaps.ready(init);

    function init() {
        try {
            var myMap0 = new ymaps.Map("yamap", {
                center: data.center,
                zoom: data.zoom,
                type: data.type,
                controls: data.controls
            });
        } catch (e) {
            console.error('Rusnetim: failed to create map', e);
            return;
        }

        var placemark1 = new ymaps.Placemark(data.center, {
            hintContent: "Placemark",
            iconContent: ""
        }, {
            preset: data.icon_preset,
            iconColor: data.icon_color,
            draggable: true
        });
        myMap0.geoObjects.add(placemark1);
        placemark1.events.add('dragend', function (e) {
            var newCoords = placemark1.geometry.getCoordinates();
            $('#center_map_option').val(newCoords[0] + ',' + newCoords[1]);
            data.center = newCoords;
        });
        if (data.apikey) {
            var searchControl = myMap0.controls.get('searchControl');
            searchControl.events.add('resultshow', function(e) {
                var index = e.get('index');
                var results = searchControl.getResultsArray();
                if (!results || !results[index]) return;

                var coords = results[index].geometry.getCoordinates();
                searchControl.hideResult();
                myMap0.setCenter(coords);
                placemark1.geometry.setCoordinates(coords);
                $('#center_map_option').val(coords[0] + ',' + coords[1]);
                data.center = coords;
            });
        }
    }
});