Задать вопрос
  • Apche2 не запускается после установки, как исправить?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    полностью пустые файлы не одной записи, что в access что в error
  • Apche2 не запускается после установки, как исправить?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    Айнур Валиев, в том и дело, что партия сказала работать на apache;((((
    я бы с радостью
  • Как изменить цвет png на node js?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    AngReload, большое спасибо))) работает
  • Как изменить цвет png на node js?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    GilbertAmethyst, суть такая, картинок много, и они прилегают друг к другу и нужно их как-то разделять. поэтому самое простое при сохранении на сервер, прорабатываю идею менять цвет.

    Как-нибудь
  • Как изменить цвет png на node js?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    Спасибо, я это уже нашел изучаю. Думал может иной способ есть.
  • Как настроить nodejs (express) socket.io nginx и все это дело на localhost???

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    у меня spa одна страница. на ней включаю все js:

    <!DOCTYPE html>
    <html lang="ru">
    <head>
    	<title>#prototype.map</title>
    	<meta charset="UTF-8">
    	<link rel="shortcut icon" href="public/images/favicon.png" type="image/png">
    	<link rel='stylesheet' href="public/stylesheets/style.css" />
    	<link rel="stylesheet" href="public/stylesheets/leaflet.css" />
    </head>
    <body>
    	<main>
    		<div id="map" style="width: 100%;height: 100vh;"></div>
    	</main>
           <script src="/socket.io/socket.io.js"></script>
    	<script src="public/javascripts/libs/leaflet-src.js"></script>
    	<script src="public/javascripts/libs/path.js"></script>
    	<script src="public/javascripts/libs/Leaflet.Editable.js"></script>
    	<script src="public/javascripts/main.js" type="module"></script>
    </body>
    </html>
  • Как настроить nodejs (express) socket.io nginx и все это дело на localhost???

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    в браузере пишет ошибку!!! Типа нет файла клиентского, как я понял. Без nginx все работает. Делаю конфиг по докам socket.io все равно не работает. На всякий вот app.js:

    const path = require('path');
    const http = require('http');
    const express = require('express');
    const minify = require('express-minify-html');
    const config = require('./config.json');
    const router = require('./router');
    
    const app = express();
    
    app.use(minify({
      override:      true,
      exception_url: false,
      htmlMinifier: {
        removeComments:            true,
        collapseWhitespace:        true,
        collapseBooleanAttributes: true,
        removeAttributeQuotes:     true,
        removeEmptyAttributes:     true,
      }
    }));
    
    app.set('views', path.join(__dirname, 'templates'));
    app.set('view engine', 'ejs');
    
    app.use(router);
    
    app.use((req, res, next) => {
    
    	next(404);
    
    });
    
    app.use((err, req, res, next) => {
    
        res.status(err.status || 404);
    
        res.render('error');
    
    });
    
    const server = http.createServer(app);
    
    server.listen(config.port, config.host, () => {
     
      	console.log(`Server listen ${config.host}:${config.port}...`);
    
    });
    
    require('./controllers/sockets')(server, config);
  • Как настроить nodejs (express) socket.io nginx и все это дело на localhost???

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    shure348 а что мне это даст???? мне нужно настроить express + socket.io + nginx как на localhost это все настроить.
  • Как добавить canvas на карту? Есть ли метод из коробки?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    0ffff0, юзер в приложении должен выбрать область на которой он будет искать участки. Т.е. собирается массив. Первый запрос -> пришел объект данных + картинка желтая. Далее отсеиваем точки -> пере собираем массив с точками и рекурсивно отправляем запрос заново. имеем по факту нормальный разрыв между запросами.

    Тут момент такой, что нет смысла в скорости или еще чем-то, upd или сокеты понятно что хорошо. Все работает асинхронно, пользователь ждет в любом случае, когда поиск будет выполнен. Так что норм.

    Отсеивание точек, как раз необходимо для того, что бы сокращать массив, ну или кол-во точек. В итоге из 5000 точек, останется 100 - ну примерно. Сразу скажу что данные, которые приходят, находятся не в моем подчинении. Логика такая, что с фронта уходит запрос на мой хост, а с хоста я его рассылаю куда нужно. Как то так.
  • Как добавить canvas на карту? Есть ли метод из коробки?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    0ffff0, огонь про шейдеры)))))))))))) Но это перебор. Меня выгонят быстрее с работы.

    Все это на канвасе делается, при этом мне просто нужно проверить точки.

    В итоге я пришел к тому, что просто нужно временный canvas ставить, и в нем отсеивать точки. Это проще. Тут самая проблема в проверки пикселя на прозрачность. Как напишу тесты и проверю решение, обязательно напишу вам. Спасибо за помощь

    p.s.

    а вот что касается этого

    И так до тех пор, пока не кончатся точки.

    Но вот в чем проблема, картинка то квадратная! Соответственно я удалю точки, которые не нужно удалять. Примерно так.

    то или я просто глупая мартышка, или вы плохо объясняете


    Тут я не могу дать точный ответ))))))))))) потому что я объясняю как понимаю проект. Наверное я не правильно объяснил. Хотя с другой стороны если посмотрите выше рис.2 (желтая фигура), то увидите, что есть некая фигура, но у самой картинки форма квадратная, и рендерится в dom png не фигура, а растр размером 256 * 256)))))) Просто проект такой, пришлось разобрать много деталей. В итоге для отсева точек придумал такой костыль, как выше писал.)))) в любом случае спасибо
  • Как разделить полигон на карте на равные части или продолжение: как собрать массив из координат выделенной области через заданный шаг?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    AngReload, можно хоть на луну канвас спрятать. Как проверять точки???? Алгоритм???

    let cvs = document.getElementById('canvas');
    let button = document.getElementById('button');
    let ctx = cvs.getContext('2d');
    
    let colors = [[255,255,0],[228,60,30],[53,198,29]];
    let colorLength = colors.length;
    let flag = false;
    
    let images = [];
    let options = {
    
    	width: 400,
    	height: 400
    
    };
    let urls = [
    	'images/test/1.png',
    	'images/test/2.png',
    	'images/test/3.png'
    ];
    
    cvs.width = document.documentElement.clientWidth;
    cvs.height = document.documentElement.clientHeight;
    
    function addImage(e) {
    	
    	if (images.length === colorLength) {
    
    		console.log('больше нельзя добавлять картинок');
    		return;
    
    	}
    
    	console.log('Добавили новую картинку');
    
    	let img = new Image();
    	img.src = urls[images.length];
    
    	let color = colors.pop();
    
    	images.push(img);
    
    	img.addEventListener('load', () => {
    
    		let x = 0;
    
    		switch (images.length) {
    
    			case 2:
    				x = 400;
    				break;
    			case 3: 
    				x = 800;
    				break;
    			default:
    				x = 0;
    		}
    
    		ctx.drawImage(img, x, 0, options.width, options.height);
    
    		let imageData = ctx.getImageData(x, 0, img.width, img.height);
    		let data = imageData.data;
    
    		for (let i = 0, n = data.length; i < n; i += 4) {
    			
    			// if (data[i] !== 0 && data[i + 1] !== 0) {
    
    				data[i] = color[0];
    				data[i + 1] = color[1];
    				data[i + 2] = color[2];
    
    			// }
    
    		}
    	     
    	    ctx.putImageData(imageData, x, 0);
    
    	});
    
    }
    
    // события click
    
    button.addEventListener('click', addImage);
    
    cvs.addEventListener('click', (e) => {
    
    	if (!images.length) return;
    
    	let imageData = ctx.getImageData(e.offsetX, e.offsetY, 1, 1);
    	let data = imageData.data;
    
    	console.log(data);
    
    }, false);


    тут я рисую картинки на канвасе, и потом проверяю при клике на канвас + перекрашиваю. Но с перекрашиванием опустим момент, его вроде как на сервере можно сделать через imageMagick или подобное, в любом случае картинки сначала на сервер ко мне падают потом только клиенту.

    Как проверить пиксели? На рис.1 показан пример, точки мои и прямоугольник. Я беру одно точку, отправляю запрос, мне приходят данные и картинка. Прямоугольник больше не нужен, его можно убрать. Картинка встала на карту, как img в блоке leaflet-pane leaflet-overlay-pane. Как мне пиксели то проверить? Пиксели я могу проверить только если картинка будет отрисована на канвасе!
  • Как добавить canvas на карту? Есть ли метод из коробки?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    0ffff0, )))) большое вам спасибо за то, что пытаетесь помочь. Но, дело немного не в том, что бы сделать так:

    var map = L.map('map');
    var myRenderer = L.canvas({ padding: 0.5 });
    var line = L.polyline( coordinates, { renderer: myRenderer } );
    var circle = L.circle( center, { renderer: myRenderer } );


    То, про что вы пишите, это рисование векторов на lealfet. Они рисуются все нормально. Но мне нужно на карту добавить overlay - картинку. Суть моей проблемы:

    Я выделяю на карте область, рисую прямоугольник (вектор) и так далее.
    Теперь мне необходимо собрать точки с координатами внутри прямоугольника, код который выше делает то что нужно, вчера вы мне помогли, я получаю точки с заданным шагом. Получил массив точек.

    5c08d17610c6f023759809.jpeg

    Для проверки нарисовал маркеры. Все отлично. Есть массив с точками (с координатами вернее). Далее мне необходимо получить данные, о том какие есть участки внутри данного полигона. Если я точечно отправляю координаты то мне приходит например объект с нужными данными и (для интерфейса) вот такая вот картиночка:

    5c08cf9d59c05821690649.png

    Это типа границы участка. НО!

    Мне же надо получить все участки, а точек в массиве может быть и 5000 и 10000 ... это не правильно, стоит вопрос как оптимизировать кол-во запросов.

    Идея основная в том, что бы рисовать по контуру картинки новый полигон и через, например point in polygon for Leaflet, выбросить из массива точки, которые внутри картинки. и снова пересобрать массив, и отправлять следующий запрос. И так до тех пор, пока не кончатся точки.

    Но вот в чем проблема, картинка то квадратная! Соответственно я удалю точки, которые не нужно удалять. Примерно так.

    Пример результата точечного поиска:

    5c08d3f57df71131387552.jpeg

    Как раз на картинке желтый слой это найденный участок. Но сам слой это png 256 x 256. Он квадратный, т.е. если вставить новый контур, и удалить из него точки, то я удалю точки в том числе и за пределами желтой фигуры.

    Вектора без проблем рисуются и могу с ними делать все что хочу - двигать, изменять, получать нужный мне массив точек внутри этого прямоугольника. Но если прочитали выше, мне нужно найти все участки внутри прямоугольника. Тут стоит вопрос оптимизации. Я получаю массив с координатами, его длина может быть 200 а может быть 5000! На каждую точку у меня будет будет отправлен запрос на сервер. Точки могут попадать на один участок, соответственно что бы этого избежать, мне необходимо после каждого ответа на запрос, проверить какие точки из массива находятся над пришедшей желтой картинкой и удалить их из массива. Проверить это, я могу так (примерный алгоритм):

    let cvs = document.getElementById('canvas');
    let button = document.getElementById('button');
    let ctx = cvs.getContext('2d');
    
    let colors = [[255,255,0],[228,60,30],[53,198,29]];
    let colorLength = colors.length;
    let flag = false;
    
    let images = [];
    let options = {
    
    	width: 400,
    	height: 400
    
    };
    let urls = [
    	'images/test/1.png',
    	'images/test/2.png',
    	'images/test/3.png'
    ];
    
    cvs.width = document.documentElement.clientWidth;
    cvs.height = document.documentElement.clientHeight;
    
    function addImage(e) {
    	
    	if (images.length === colorLength) {
    
    		console.log('больше нельзя добавлять картинок');
    		return;
    
    	}
    
    	console.log('Добавили новую картинку');
    
    	let img = new Image();
    	img.src = urls[images.length];
    
    	let color = colors.pop();
    
    	images.push(img);
    
    	img.addEventListener('load', () => {
    
    		let x = 0;
    
    		switch (images.length) {
    
    			case 2:
    				x = 400;
    				break;
    			case 3: 
    				x = 800;
    				break;
    			default:
    				x = 0;
    		}
    
    		ctx.drawImage(img, x, 0, options.width, options.height);
    
    		let imageData = ctx.getImageData(x, 0, img.width, img.height);
    		let data = imageData.data;
    
    		for (let i = 0, n = data.length; i < n; i += 4) {
    			
    			// if (data[i] !== 0 && data[i + 1] !== 0) {
    
    				data[i] = color[0];
    				data[i + 1] = color[1];
    				data[i + 2] = color[2];
    
    			// }
    
    		}
    	     
    	    ctx.putImageData(imageData, x, 0);
    
    	});
    
    }
    
    // события click
    
    button.addEventListener('click', addImage);
    
    cvs.addEventListener('click', (e) => {
    
    	if (!images.length) return;
    
    	let imageData = ctx.getImageData(e.offsetX, e.offsetY, 1, 1);
    	let data = imageData.data;
    
    	console.log(data);
    
    }, false);


    Т.е. просто проверить прозрачный пиксель на canvas. И вот мы добрались к вопросу:


    Как добавить слой (ту самую желтую картинку) на карту leaflet не через img, а через canvas, при этом иметь доступ к canvas для проверки прозрачных пикселей. При этом карту можно тащить. Соответственно изменять положение должны все слои.


    Вот это и есть моя проблема. И найти решения такого пока не могу. Поэтому и прошу помощи и спрашиваю, может кто сталкивался с такой задачей на leaflet.
  • Как добавить canvas на карту? Есть ли метод из коробки?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    0ffff0, картиночка это фигура, которая показывает очертания участка земельного , с прозрачным фоном и закрашенной частью одного цвета. Вопрос в том, что сейчас картинка добавляется через тэг img а нужно что бы она рисовалась в канвасе leaflet. Преобразовывать не нужно, отдельно проекта на канвасе я делаю все что нужно, а вот именно на карте как добавить картинку на канвас, сложность пока
  • Как добавить canvas на карту? Есть ли метод из коробки?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    0ffff0, причём картинки 256 на 256, теней нет попапов то же , иконки это не то,
  • Как добавить canvas на карту? Есть ли метод из коробки?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    0ffff0, да с иконками и маркёрами ясен вопрос, но у меня картиночка!!! У неё есть координаты и углы и я ее центрирую!!!
  • Как добавить canvas на карту? Есть ли метод из коробки?

    RomanDillerNsk
    @RomanDillerNsk Автор вопроса
    0ffff0, спасибо за нос и про котенка, но я делаю не на яндекс картах, а на leaflet!

    Не понимаю если честно комментария вашего. При чем в моем случае яндекс карты