synmap-8.x-1.21/assets/js/form.js

assets/js/form.js
/**
 * @file
 * Author: Synapse-studio.
 */

(function ($) {
  var lang = drupalSettings.path.currentLanguage;
  var YAPI = 'https://api-maps.yandex.ru/2.1/?lang=ru_RU';
  $(document).ready(function () {

    loadScript();

    function loadScript() {
      var mapSet = drupalSettings.synmap.data;
      if (mapSet.apikey) {
        YAPI = 'https://api-maps.yandex.ru/2.1/?apikey=' + mapSet.apikey + '&lang=ru_RU';
      }
      let script = document.createElement('script');
      script.onload = function() {
        ymaps.ready(ymapsInit);
      };
      script.src = YAPI;
      document.getElementsByTagName('body')[0].appendChild(script);
    }

    function ymapsInit() {
      $('#edit-geo').after('<div id="map-picker" style="min-height:300px"></div>');

      // MAP create.
      var mapSet = drupalSettings.synmap.data;
      var map = new ymaps.Map('map-picker', {
        center: [mapSet.latitude, mapSet.longitude],
        zoom: mapSet.zoom,
        controls: ['zoomControl', 'fullscreenControl']
      });
      var searchControl = new ymaps.control.SearchControl({
        options: {
          provider: 'yandex#search'
        }
      });
      map.controls.add(searchControl);
      map.behaviors.disable('scrollZoom');

      // Point options.
      var defaultParams = {
        geometry: {
          type: 'Point',
          coordinates: [mapSet.latitude, mapSet.longitude]
        },
        properties: {
          iconContent: mapSet.name
        }
      };
      var defaultPreset = {
        preset: 'islands#blackStretchyIcon',
        draggable: true
      };

      // Add Placemark.
      var companyPlacemark = new ymaps.GeoObject(defaultParams, defaultPreset);
      map.geoObjects.add(companyPlacemark);
      // Drag Placemark event.
      companyPlacemark.events.add('dragend', function (e) {
        writeCoords(companyPlacemark);
      });
      // Map click event > change Placemark coords.
      map.events.add('click', function (e) {
        var coords = e.get('coords');
        companyPlacemark.geometry.setCoordinates(coords);
        writeCoords(companyPlacemark);
      });
      // Coords 2 formFields.
      function writeCoords (placemark) {
        var coords = placemark.geometry.getCoordinates();
        $(mapSet.editlatitude).attr('value', coords[0]);
        $(mapSet.editlongitude).attr('value', coords[1]);
      }
    }
  });
})(this.jQuery);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc