Не знаю для чего вы это делаете, и в чём причина такого решения.
ymaps.ready(() => {
const LAYER_NAME = 'user#layer';
const MAP_TYPE_NAME = 'user#customMap';
// Директория с тайлами.
const TILES_PATH = './tiles';
const MAX_ZOOM = 10;
const PIC_WIDTH = 5164;
const PIC_HEIGHT = 5164;
function Layer() {
const layer = new ymaps.Layer(`${TILES_PATH}/%z/tile-%x-%y.jpg`);
// Указываем доступный диапазон масштабов для данного слоя.
layer.getZoomRange = () => ymaps.vow.resolve([8, 10]);
// Добавляем свои копирайты.
layer.getCopyrights = () => ymaps.vow.resolve('©');
return layer;
}
ymaps.layer.storage.add(LAYER_NAME, Layer);
const mapType = new ymaps.MapType(MAP_TYPE_NAME, [LAYER_NAME]);
ymaps.mapType.storage.add(MAP_TYPE_NAME, mapType);
const worldSize = 2 ** MAX_ZOOM * 256;
const map = new ymaps.Map('YMapsID', {
center: [PIC_WIDTH / 2, PIC_HEIGHT / 2],
zoom: 8,
controls: ['zoomControl'],
type: MAP_TYPE_NAME,
}, {
projection: new ymaps.projection.Cartesian([
[PIC_HEIGHT - worldSize, 0],
[PIC_HEIGHT, worldSize]],
[false, false]),
restrictMapArea: [[0, 0], [PIC_HEIGHT, PIC_WIDTH]],
});
// Тестовая генерация
const objects = [];
const objectManager = new ymaps.ObjectManager();
const createPoly = (x, y, w, h, id) => {
objects.push({
type: 'Feature',
id,
geometry: {
type: 'Polygon',
coordinates: [
[[y, x], [y, x + w], [y + h, x + w], [y + h, x], [y, x]],
],
},
options: {
opacity: 0.7,
strokeWidth: 1,
fillColor: '#f40',
},
});
objectManager.add(objects);
};
let id = 0;
for (let i = 10; i < 38; i += 1) {
for (let j = 10; j < 38; j += 1) {
id += 1;
createPoly(i * 81, j * 81, 80, 80, id);
}
}
map.geoObjects.add(objectManager);
});
hWnd = FindWindow(0, WINDOWNAME);
hDC = GetDC(hWnd);
TextOutA(hDC, x, y, buf, strlen(buf));
ctx.isPointInPath(x, y)