Advertisement
Guest User

Untitled

a guest
Dec 6th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement