daily pastebin goal
7%
SHARE
TWEET

Untitled

a guest Dec 6th, 2018 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function newCreatePublicObjectButton(map) {
  2.     var button = new ymaps.control.Button({
  3.         data: {
  4.             // Текст на кнопке.
  5.             content: 'Создать объект'
  6.         },
  7.         options: {
  8.             // Зададим опции кнопки.
  9.             selectOnClick: false,
  10.             // У кнопки будет три состояния: иконка, текст и текст + иконка.
  11.             // Зададим три значения ширины кнопки для всех состояний.
  12.             maxWidth: [30, 100, 150]
  13.         }
  14.     });
  15.  
  16.  
  17.     button.events.add('click', function (e) {
  18.         if (button._creating) {
  19.             button.savePublicObject();
  20.         } else {
  21.             button.createPublicObject();
  22.         }
  23.     });
  24.  
  25.  
  26.     button._map = map;
  27.     button._creating = false;
  28.     button._cancelButton = null;
  29.     button._placemark = null;
  30.  
  31.  
  32.     button.createPublicObject = function () {
  33.         button._creating = true;
  34.  
  35.         button._cancelButton = newCancelCreatingPublicObjectButton(button);
  36.         button._map.controls.add(button._cancelButton,
  37.             { position: {right: '5px', bottom: '60px'}});
  38.  
  39.         button._placemark = newDraggablePlacemark();
  40.         button._map.geoObjects.add(button._placemark);
  41.  
  42.         button.data.set('content', 'Сохранить');
  43.     };
  44.  
  45.  
  46.     button.cancelCreatingPublicObject = function() {
  47.         button._creating = false;
  48.  
  49.         button._map.controls.remove(button._cancelButton);
  50.         button._cancelButton = null;
  51.  
  52.         button._map.geoObjects.remove(button._placemark);
  53.         button._placemark = null;
  54.  
  55.         button.data.set('content', 'Создать объект');
  56.     };
  57.  
  58.  
  59.     button.savePublicObject = function() {
  60.         alert(button._placemark.getCoordinates());
  61.         button.cancelCreatingPublicObject();
  62.     };
  63.  
  64.     return button;
  65. }
  66.  
  67.  
  68. function newCancelCreatingPublicObjectButton(createButton) {
  69.     var button = new ymaps.control.Button({
  70.         data: {
  71.             // Текст на кнопке.
  72.             content: 'Отменить'
  73.         },
  74.         options: {
  75.             // Зададим опции кнопки.
  76.             selectOnClick: false,
  77.             // У кнопки будет три состояния: иконка, текст и текст + иконка.
  78.             // Зададим три значения ширины кнопки для всех состояний.
  79.             maxWidth: [30, 100, 150]
  80.         }});
  81.  
  82.  
  83.     button.events.add('click', function (e) {
  84.         button._createButton.cancelCreatingPublicObject();
  85.     });
  86.  
  87.  
  88.     button._createButton = createButton;
  89.  
  90.  
  91.     return button;
  92. }
  93.  
  94.  
  95. function newDraggablePlacemark() {
  96.     // Метка, содержимое балуна которой загружается с помощью AJAX.
  97.     var placemark = new ymaps.Placemark([55.8, 37.72], {
  98.         iconContent: "Новый объект"
  99.     }, {
  100.         draggable: "true",
  101.         preset: "islands#blueStretchyIcon",
  102.         // Заставляем балун открываться даже если в нем нет содержимого.
  103.         openEmptyBalloon: true
  104.     });
  105.  
  106.  
  107.     placemark.getCoordinates = function() {
  108.         return placemark.geometry.getCoordinates();
  109.     };
  110.  
  111.  
  112.     return placemark;
  113. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top