dist marks

This commit is contained in:
muerwre 2019-03-07 17:34:52 +07:00
parent e532a43f2e
commit b037bc00d9
5 changed files with 28 additions and 8 deletions

View file

@ -5,8 +5,6 @@
## FEATURES ## FEATURES
todo arrows on screenshot
todo refactor reducer to use is_ prefix for editing and etc (mb move them to status object) todo refactor reducer to use is_ prefix for editing and etc (mb move them to status object)
todo tower sticker todo tower sticker
todo route description todo route description
@ -24,6 +22,7 @@
## DONE ## DONE
done arrows on screenshot
done public maps done public maps
done editing map on map list done editing map on map list
done setting map public on map list done setting map public on map list

View file

@ -77,7 +77,7 @@ class Component extends LayerGroup {
createMiddleMarker = (latlng: LatLngLiteral, angle: number, distance: number): Marker => marker(latlng, { createMiddleMarker = (latlng: LatLngLiteral, angle: number, distance: number): Marker => marker(latlng, {
draggable: false, draggable: false,
interactive: true, interactive: false,
icon: divIcon({ icon: divIcon({
html: ` html: `
<div class="leaflet-km-dist" style="transform: translate(-50%, -50%) rotate(${allwaysPositiveAngleDeg(angle)}deg);"> <div class="leaflet-km-dist" style="transform: translate(-50%, -50%) rotate(${allwaysPositiveAngleDeg(angle)}deg);">
@ -92,7 +92,7 @@ class Component extends LayerGroup {
createEndMarker = (latlng: LatLngLiteral, angle: number, distance: number): Marker => marker(latlng, { createEndMarker = (latlng: LatLngLiteral, angle: number, distance: number): Marker => marker(latlng, {
draggable: false, draggable: false,
interactive: true, interactive: false,
icon: divIcon({ icon: divIcon({
html: ` html: `
<div class="leaflet-km-dist"> <div class="leaflet-km-dist">

View file

@ -364,9 +364,9 @@ function* getRenderData() {
yield put(setRenderer({ info: 'Отрисовка', progress: 0.5 })); yield put(setRenderer({ info: 'Отрисовка', progress: 0.5 }));
yield composeImages({ geometry, images, ctx }); yield composeImages({ geometry, images, ctx });
yield composeDistMark({ ctx, points, distance });
yield composePoly({ points, ctx }); yield composePoly({ points, ctx });
yield composeArrows({ points, ctx }); yield composeArrows({ points, ctx });
yield composeDistMark({ ctx, points, distance });
yield composeStickers({ stickers, ctx }); yield composeStickers({ stickers, ctx });
yield put(setRenderer({ info: 'Готово', progress: 1 })); yield put(setRenderer({ info: 'Готово', progress: 1 }));

View file

@ -141,6 +141,17 @@
position: absolute; position: absolute;
z-index: -10; z-index: -10;
padding: 2px 16px 2px 4px; padding: 2px 16px 2px 4px;
&::after {
content: ' ';
width: 8px;
height: 8px;
border-radius: 4px;
background: white;
position: absolute;
right: 5px;
top: 5px;
}
} }
&.right { &.right {
@ -148,6 +159,11 @@
padding: 2px 4px 2px 16px; padding: 2px 4px 2px 16px;
left: -3px; left: -3px;
right: auto; right: auto;
&::after {
left: 5px;
right: auto;
}
} }
} }
} }

View file

@ -283,8 +283,8 @@ const measureDistRect = (
reversed: boolean, reversed: boolean,
) => ({ ) => ({
rectX: reversed ? (x - width - 12) : x - 8, rectX: reversed ? (x - width - 12) : x - 8,
rectY: (y - 4 - (height / 2)), rectY: (y - 2 - (height / 2)),
rectW: width + 16, rectW: reversed ? (width + 22) : (width + 20),
rectH: height + 4, rectH: height + 4,
textX: reversed ? (x - width - 8) : x + 8 textX: reversed ? (x - width - 8) : x + 8
}); });
@ -375,7 +375,7 @@ export const composeDistMark = (
ctx.font = 'bold 12px "Helvetica Neue", Arial'; ctx.font = 'bold 12px "Helvetica Neue", Arial';
const angle = angleBetweenPoints(points[points.length - 2], points[points.length - 1]); const angle = angleBetweenPoints(points[points.length - 2], points[points.length - 1]);
const dist = parseFloat(distance.toFixed(2)); const dist = parseFloat(distance.toFixed(1));
const { x, y } = points[points.length - 1]; const { x, y } = points[points.length - 1];
const { width, height } = measureDistText(ctx, String(dist), 16); const { width, height } = measureDistText(ctx, String(dist), 16);
const { const {
@ -385,6 +385,11 @@ export const composeDistMark = (
roundedRect(ctx, rectX, rectY, rectW, rectH, '#ff3344', 2); roundedRect(ctx, rectX, rectY, rectW, rectH, '#ff3344', 2);
ctx.fillStyle = 'white'; ctx.fillStyle = 'white';
ctx.beginPath();
ctx.arc(x, y, 5, 0, 360);
ctx.closePath();
ctx.fill();
ctx.fillText( ctx.fillText(
String(dist), String(dist),
textX, textX,