var greenIcon = L.icon({
iconUrl: 'leaf-green.png',
shadowUrl: 'leaf-shadow.png',
iconSize: [38, 95], // size of the icon
shadowSize: [50, 64], // size of the shadow
iconAnchor: [22, 94], // point of the icon which will correspond to marker's location
shadowAnchor: [4, 62], // the same for the shadow
popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
});
//Use Canvas by default for all paths in the map:
var map = L.map('map', {
renderer: L.canvas()
})
//Use a Canvas renderer with extra padding for specific vector //geometries:
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 } );
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 } );
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);
Как добавить слой (ту самую желтую картинку) на карту leaflet не через img, а через canvas, при этом иметь доступ к canvas для проверки прозрачных пикселей. При этом карту можно тащить. Соответственно изменять положение должны все слои.
Идея основная в том, что бы рисовать по контуру картинки новый полигон и через, например point in polygon for Leaflet, выбросить из массива точки, которые внутри картинки. и снова пересобрать массив, и отправлять следующий запрос. И так до тех пор, пока не кончатся точки.
О WebGL часто думают, как о API для 3D. Люди думают "Я буду использовать WebGL и магия получится классное 3D". На самом деле WebGL - это просто средство растеризации. Он отображает точки, линии и треугольники на основе написанного кода.
И так до тех пор, пока не кончатся точки.
Но вот в чем проблема, картинка то квадратная! Соответственно я удалю точки, которые не нужно удалять. Примерно так.
а вот что касается этого
И так до тех пор, пока не кончатся точки.
Но вот в чем проблема, картинка то квадратная! Соответственно я удалю точки, которые не нужно удалять. Примерно так.
то или я просто глупая мартышка, или вы плохо объясняете
Мне же надо получить все участки, а точек в массиве может быть и 5000 и 10000 ... это не правильно, стоит вопрос как оптимизировать кол-во запросов.
На каждую точку у меня будет будет отправлен запрос на сервер