API MAP Yandex 3: Отрисовка районов на карте области

Пока на работе выдалась небольшая творческая пауза, решил потыкать API версии 3, который приходит на смену версии 2.1 И рано или поздно как я понимаю версия 2.1 будет отключена. А проекты на «старой» версии есть.

Так вот, что не понравилось: все примеры в «песочнице», на typescript, а не на чистом javascript. Ну и полностью всё конечно поломано, т.е. не получится просто взять старый код, и чуть адаптировать — нужно всё переписывать. Вплоть до того что, они даже координаты «перевернули» местами, пришлось для того чтобы наложить полигоны районов со старой карты на новую, их «переворачивать».

Ну собственно, вот код,

<script crossorigin src="https://cdn.jsdelivr.net/npm/@babel/standalone@7/babel.min.js"></script>
<script src="https://api-maps.yandex.ru/v3/?apikey=уууу&lang=ru_RU" type="text/javascript"></script>
<div id="app"></div> 

<script data-plugins="transform-modules-umd" data-presets="typescript" type="text/babel" src="ts/variables.ts"></script>
<script data-plugins="transform-modules-umd" data-presets="typescript" type="text/babel" src="ts/common.ts"></script>
<script data-plugins="transform-modules-umd" data-presets="typescript" type="text/babel" src="ts/receipts.ts"></script>
        
<script data-plugins="transform-modules-umd" data-presets="typescript" type="text/babel">
       
import * as common from '../common';    

async function main() {
    await ymaps3.ready;
    const {YMap, YMapDefaultSchemeLayer,YMapFeature,YMapDefaultFeaturesLayer} = ymaps3;
    map = new YMap(
        document.getElementById('app'),
        {location: 
            {
                center: [39.8491648, 59.2084992], 
                zoom: 9 
            },
            showScaleInCopyrights: true
        },
        [
            new YMapDefaultSchemeLayer({}),
            new YMapDefaultFeaturesLayer({})
        ],

        
    );
       

    //получаем список районов
    common.AjaxPost("index.php?r=site2/get-areas","").then(async areas_list=>{
        console.log("-прочитал список районов ",areas_list);
        if (areas_list.error==false){
            for (var i = 0; i < areas_list.result.length; i++) {                        
                await common.AjaxPost("areas/"+areas_list.result[i].poly_filename,"aa").then(res2=>{
                    console.log(areas_list.result[i].name);                    
                    res2=common.ReverseCoors(res2);
                    console.log(areas_list.result[i].poly_fill_color);
                    const polygon = new YMapFeature({
                        geometry: {
                            type: 'Polygon',
                            coordinates: res2
                        },
                        properties:{
                            hintContent: areas_list.result[i].name   
                        },                                                
                        // Описание тут: https://yandex.ru/maps-api/docs/js-api/ref/index.html#interface-drawingstyle
                        style: {
                                stroke: [
                                    {
                                        color: '#196DFF99',
                                        dash: [5, 10],
                                        width: 3
                                        
                                    }
                                ],
                                fillOpacity: 0.2,
                                fill: "#"+areas_list.result[i].poly_fill_color
                            }
                    });
                    console.log(polygon);
                    map.addChild(polygon);                    
                    
                });                 
            };        
        };
    });
    
    
};    

window.map = null;            
main();
</script>     

common.ts:

/**
Получаем информацию об очертаниях районов (округов)
*/
export async function AjaxPost(url : string,payload: any): any {
  try {
    const response = await fetch(url, {
      method: 'POST', 
      headers: {'Content-Type': 'application/json; charset=UTF-8' },
      body: JSON.stringify(payload) 
    });
    if (!response.ok) {
      throw new Error(HTTP error! Status: ${response.status});
    }
    return response.json();
  } catch (error) {
    console.error('Error:', error);
    throw error;
  }
}

/**
Сделать паузу в милисекундах
*/
export async function sleep(ms: number): Promise<void> {
  return new Promise(resolve => setTimeout(resolve, ms));
}

/**
Перевернуть все координаты в массиве
*/
export function ReverseCoors(coors : any): any {
  
    for (var ii = 0; ii < coors.length; ii++) {                                
         for (var iii = 0; iii < coors[ii].length; iii++) {                                
            var x=0;
            var y=0;                        
            x=coors[ii][iii][0];
            y=coors[ii][iii][1];
            coors[ii][iii][1]=x;
            coors[ii][iii][0]=y;                             
         };
    };
    return coors;
}

Карта «Как начался майнкрафт»

Представляем вам самую эпичную карту на свете сделанную великим Тёмой. С большим старанием за один день. Она назывется «Как начался майнкрафт». Скачать на версию 1.12 можно тут




Sonic World в Minecraft от Тёмы

Для игры нужна версия Minecraft 1.7.10 и мод Sonic the Hedgehog (в комплекте в архиве с картой).

Эта карта для фанатов Sega и Sonic которые хотят чего-то новенького.

Скачать карту и мод можно здесь




Карта Minecraft домик бабушки Гренни (grenny)

Теперь вы можете скачать альфу версию карты для Minecraft, которая называется «домик бабушки Гренни». Пишите комментарии кому понравилось.

Скачивать по этой ссылке. Карту делал Артемий Грибов




Карта Minecraft пицерия Фредди Фасбер 1


Скачать карту можно здесь: Ссылка на карту
Скачать текстур пак можно здесь: Ссылка на текстур пак