Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.84 KB | None | 0 0
  1. <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
  2. <style type="text/css">
  3. .popup--map .js-russia-map, .popup--map .js-regions-map {
  4. position: relative;
  5. height: 360px;
  6. width: calc(100% + 79px);
  7. margin-left: -48px;
  8. margin-top: 34px;
  9. }
  10. </style>
  11. <script>
  12. let map_script_loaded = false;
  13. var region_map_array=[{'coord':['55.0302','82.9204'],'city':'Новосибирск'},{'coord':['56.4847','84.9482'],'city':'Томск'},{'coord':['53.3481','83.7799'],'city':'Барнаул'},{'coord':['51.8345','107.5846'],'city':'Улан-Удэ'},{'coord':['52.034','113.4994'],'city':'Чита'},{'coord':['52.2864','104.2807'],'city':'Иркутск'},{'coord':['56.0106','92.8525'],'city':'Красноярск'},{'coord':['55.355','86.0873'],'city':'Кемерово'},{'coord':['55.4416','65.3443'],'city':'Курган'},{'coord':['56.087','63.6297'],'city':'Шадринск'},{'coord':['54.9893','73.3682'],'city':'Омск'},{'coord':['43.1151','131.8853'],'city':'Владивосток'},{'coord':['46.9592','142.738'],'city':'Южно-Сахалинск'},{'coord':['56.8386','60.6055'],'city':'Екатеринбург'},{'coord':['56.4149','61.9187'],'city':'Каменск-Уральский'},{'coord':['57.9076','59.9722'],'city':'Нижний Тагил'},{'coord':['60.7329','77.604'],'city':'Стрежевой'},{'coord':['56.1106','69.4796'],'city':'Ишим'},{'coord':['58.2017','68.2538'],'city':'Тобольск'},{'coord':['57.153','65.5343'],'city':'Тюмень'},{'coord':['48.4802','135.0719'],'city':'Хабаровск'},{'coord':['62.2639','74.4829'],'city':'Когалым'},{'coord':['61.2537','75.1807'],'city':'Лангепас'},{'coord':['61.0318','76.1025'],'city':'Мегион'},{'coord':['61.0882','72.6163'],'city':'Нефтеюганск'},{'coord':['60.9397','76.5696'],'city':'Нижневартовск'},{'coord':['60.7586','72.8365'],'city':'Пыть-Ях'},{'coord':['62.1343','77.4584'],'city':'Радужный'},{'coord':['61.3707','63.5668'],'city':'Советский'},{'coord':['61.2541','73.3962'],'city':'Сургут'},{'coord':['61.0032','69.0189'],'city':'Ханты-Мансийск'},{'coord':['61.3149','63.332'],'city':'Югорск'},{'coord':['55.16','61.4026'],'city':'Челябинск'},{'coord':['62.0281','129.7326'],'city':'Якутск'},{'coord':['64.4326','76.5005'],'city':'Губкинский'},{'coord':['63.7953','74.4944'],'city':'Муравленко'},{'coord':['65.5359','72.5313'],'city':'Надым'},{'coord':['66.084','76.681'],'city':'Новый Уренгой'},{'coord':['63.2018','75.451'],'city':'Ноябрьск'},{'coord':['64.912449487632','77.761239661377'],'city':'Тарко-Сале'},{'coord':['65.851890203093','74.497178232565'],'city':'Пангоды'},{'coord':['61.609039336446','73.719444664062'],'city':'Федоровский'},{'coord':['61.619952857428','72.158766871597'],'city':'Лянтор'},{'coord':['60.12957660075','64.803009455322'],'city':'Урай'},{'coord':['62.143322732205','65.429367619141'],'city':'Нягань '},{'coord':['62.535042001514','65.621736177246'],'city':'Приобье'},{'coord':['61.197619268275','62.856633550293'],'city':'Пионерский'},{'coord':['59.139852010658','68.893393481445'],'city':'Уват'},{'coord':['59.603549182927','60.582555936523'],'city':'Серов'},{'coord':['59.760149351174','60.19667369043'],'city':'Краснотурьинск'},{'coord':['60.155647135912','59.951941198242'],'city':'Североуральск'},{'coord':['56.897896249665','59.960649481445'],'city':'Первоуральск'},{'coord':['58.707091815616','59.498396227539'],'city':'Качканар'}]
  14. function ymaps_regions() {
  15. if(!map_script_loaded) {
  16. map_script_loaded = true;
  17. ymaps.ready(init);
  18. var regions_map,
  19. placemark;
  20. function init() {
  21. var MyHintContentLayout = ymaps.templateLayoutFactory.createClass('<div class="ym-hint" style="background:#f4f4f4;font-size:14px;">$[properties.hintContent]</div>');
  22.  
  23. var getPointData = function (city,i) {
  24. return {
  25. "city": city,
  26. balloonContentHeader: city,
  27. placemarkId: i,
  28. hintContent: city,
  29. }
  30. };
  31.  
  32. // Создаем собственный макет с информацией о выбранном геообъекте.
  33. var customBalloonContentLayout = ymaps.templateLayoutFactory.createClass([
  34. '<ul class=list style="max-height:200px;overflow-y: scroll;">',
  35. // Выводим в цикле список всех геообъектов.
  36. '{% for geoObject in properties.geoObjects %}',
  37. '<li><span class="list_item">{{ geoObject.properties.balloonContentHeader|raw }}</span></li>',
  38. '{% endfor %}',
  39. '</ul>'
  40. ].join('')),
  41. default_mark_icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAfUlEQVQoU4WP0Q2CQBBE3ywFYAmWAIWgfqllnJVAGXxiJVwJ2AEW4K25SEiMRvdv8iaZfQI4nMP2kWglqpzdiYVxGfpuUoYpMSI2Ga7nzGbUak5hEOzf4BIcrtodw4wovxWA6WfB4fZ/Ynkyfsw4dzMqrZpOBy9NIBYiZM0nEOMs6e7Awa8AAAAASUVORK5CYII=',
  42. hovered_mark_icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAhElEQVQoU4WPwQ2CQBRE3+xy1xIsARtQOzB2Agl9SCeKFdiBWwJ2gHd2vwHkYDTh3ybvJfNHAIfisjHvz2D5kEFBMZb3+tRqgu6BtJ7g58w6xbTVrrpdBccvODvQaF81HWj1T8CsXRB4LleMT2Yu/NbYS33KNc9Mma9ljDNNBNfHYpj5Br6VNrWDAiurAAAAAElFTkSuQmCC'
  43.  
  44. var regions_map = new ymaps.Map("js-regions-map", {
  45. center: [61.9191,98.9391],
  46. zoom: 2.8,
  47. controls: ["zoomControl", "fullscreenControl"]
  48. }),
  49. clusterer = new ymaps.Clusterer({
  50. preset: 'islands#darkBlueClusterIcons',
  51. groupByCoordinates: false,
  52. clusterHideIconOnBalloonOpen: false,
  53. geoObjectHideIconOnBalloonOpen: false,
  54. clusterBalloonContentLayout: customBalloonContentLayout
  55. });
  56.  
  57. var geo_objects = [];
  58.  
  59. for(var i=0, len = region_map_array.length; i < len; i++) {
  60. var coord = region_map_array[i]["coord"];
  61.  
  62. geo_objects[i] = new ymaps.Placemark(coord, getPointData(region_map_array[i]["city"],i), {
  63. iconLayout: 'default#image',
  64. iconImageHref: default_mark_icon,
  65. iconImageSize: [10, 10],
  66. iconImageOffset: [0, 0],
  67. iconContentOffset: [0, 0],
  68. hintContentLayout: MyHintContentLayout
  69. });
  70.  
  71. geo_objects[i].events.add('mouseenter', function (e) {
  72. e.get('target').options.set('iconImageHref', hovered_mark_icon);
  73. });
  74.  
  75. geo_objects[i].events.add('mouseleave', function (e) {
  76. e.get('target').options.set('iconImageHref', default_mark_icon);
  77. });
  78. }
  79.  
  80. clusterer.options.set({
  81. gridSize: 80,
  82. clusterDisableClickZoom: true
  83. });
  84.  
  85. clusterer.add(geo_objects);
  86. regions_map.geoObjects.add(clusterer);
  87.  
  88. // regions_map.events.add('mouseup', function (e) {
  89. // regions_map.hint.open(e.get('coordPosition'), 'Щелк!');
  90. // });
  91.  
  92. if(!0) {
  93. var previous_region;
  94. ymaps.regions.load('RU', {
  95. lang: 'ru',
  96. quality: 3
  97. }).then(function (result) {
  98. var regions = result.geoObjects; // ссылка на коллекцию GeoObjectCollection
  99. regions_map.geoObjects.add(regions);
  100. // Задание стиля для коллекции регионов
  101. regions.options.set('fillColor', '#e4e4e4');
  102. regions.options.set('strokeColor', '#ffffff');
  103. // Обрабока события входа курсора в регион
  104. result.geoObjects.events.add('mouseenter', function (e) {
  105. var region = e.get('target');
  106. console.log(region.properties.get('name'))
  107. if(previous_region !== region) {
  108. if(typeof previous_region !== 'undefined') {
  109. previous_region.options.set('fillColor', '#e4e4e4');
  110. }
  111. previous_region = e.get('target');
  112. region.properties.set("hintContent","<div class='ym-hint'><b>"+region.properties.get('name')+"</b></div>");
  113. region.options.set('fillColor', '#7CA3D0');
  114. }
  115. });
  116.  
  117. result.geoObjects.events.add('click', function (e) {
  118. var region = e.get('target');
  119. previous_region.hint.close(true)
  120. region.hint.open()
  121. })
  122. });
  123. }
  124. }
  125. }
  126. }
  127. ymaps_regions();
  128.  
  129.  
  130.  
  131. </script>
  132. <div id="popup-map" class="popup popup--advantages popup--map mfp-hide">
  133. <div class="js-regions-map" id="js-regions-map" style=""></div>
  134. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement