Я поддерживаю параллельные Flash и HTML5 / Canvas рендеры для проекта OpenHeatMap с открытым исходным кодом.Меня мучает несогласованность в рендеринге заполненных полигонов с дробными координатами между двумя версиями.Если вы визуализируете два многоугольника, которые имеют общий край, Canvas покажет видимое соединение вдоль этого края, тогда как Flash будет плавно объединять их вместе без видимой разницы, если они одного цвета.Я собрал здесь минимальную страницу, чтобы показать проблему:
http://web.mailana.com/labs/stitchingbug/
[Гак, защита от спама не дает возможности быть изображением, но посмотрите здесь для скриншота web.mailana.com / labs / stitchingbug.png]
Источник, вместе с Flash-проектом, который делает то же самое, находится здесь:
github.com / petewarden / stitchingbug
Фундаментальная проблема заключается в том, что невозможно выполнить сложную многоугольную визуализацию, если вы не можете сшивать многоугольники без швов.Я точно не знаю, каковы правила заполнения Flash, но они дают правильные результаты, как и 3D-рендеры.У кого-нибудь есть исправление на стороне клиента, чтобы обойти эту проблему?Это кросс-браузер, что делает его преднамеренным, поэтому любые ссылки на используемые правила также приветствуются.Вот код холста:
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'rgb(0,0,0)';
ctx.beginPath()
ctx.moveTo(0, 0);
ctx.lineTo(50.5, 0);
ctx.lineTo(50.5, 100);
ctx.lineTo(0, 100);
ctx.closePath();
ctx.fill();
ctx.beginPath()
ctx.moveTo(50.5, 0);
ctx.lineTo(100, 0);
ctx.lineTo(100, 100);
ctx.lineTo(50.5, 100);
ctx.closePath();
ctx.fill();