Fix dancing split interval
This commit is contained in:
parent
dd40c4dce6
commit
0f89e927e0
1 changed files with 30 additions and 27 deletions
|
@ -374,15 +374,14 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM
|
|||
int r = (int) (12 * tileBox.getDensity());
|
||||
paintTextIcon.setTextSize(r);
|
||||
int dr = r * 3 / 2;
|
||||
int px = -1;
|
||||
int py = -1;
|
||||
float px = -1;
|
||||
float py = -1;
|
||||
for (int k = 0; k < items.size(); k++) {
|
||||
GpxDisplayItem i = items.get(k);
|
||||
WptPt o = i.locationEnd;
|
||||
if (o != null && o.lat >= latLonBounds.bottom && o.lat <= latLonBounds.top && o.lon >= latLonBounds.left
|
||||
&& o.lon <= latLonBounds.right) {
|
||||
int x = (int) tileBox.getPixXFromLatLon(o.lat, o.lon);
|
||||
int y = (int) tileBox.getPixYFromLatLon(o.lat, o.lon);
|
||||
WptPt point = i.locationEnd;
|
||||
if (point != null) {
|
||||
float x = tileBox.getPixXFromLatLon(point.lat, point.lon);
|
||||
float y = tileBox.getPixYFromLatLon(point.lat, point.lon);
|
||||
if (px != -1 || py != -1) {
|
||||
if (Math.abs(x - px) <= dr && Math.abs(y - py) <= dr) {
|
||||
continue;
|
||||
|
@ -390,25 +389,29 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM
|
|||
}
|
||||
px = x;
|
||||
py = y;
|
||||
String nm = i.splitName;
|
||||
if (nm != null) {
|
||||
int ind = nm.indexOf(' ');
|
||||
if (point.lat >= latLonBounds.bottom && point.lat <= latLonBounds.top
|
||||
&& point.lon >= latLonBounds.left && point.lon <= latLonBounds.right) {
|
||||
String name = i.splitName;
|
||||
if (name != null) {
|
||||
int ind = name.indexOf(' ');
|
||||
if (ind > 0) {
|
||||
nm = nm.substring(0, ind);
|
||||
name = name.substring(0, ind);
|
||||
}
|
||||
Rect bounds = new Rect();
|
||||
paintTextIcon.getTextBounds(nm, 0, nm.length(), bounds);
|
||||
int nmWidth = bounds.width();
|
||||
int nmHeight = bounds.height();
|
||||
RectF rect = new RectF(x - nmWidth / 2 - 2 * (float) Math.ceil(tileBox.getDensity()),
|
||||
y + nmHeight / 2 + 3 * (float) Math.ceil(tileBox.getDensity()),
|
||||
x + nmWidth / 2 + 3 * (float) Math.ceil(tileBox.getDensity()),
|
||||
y - nmHeight / 2 - 2 * (float) Math.ceil(tileBox.getDensity()));
|
||||
paintTextIcon.getTextBounds(name, 0, name.length(), bounds);
|
||||
|
||||
float nameHalfWidth = bounds.width() / 2f;
|
||||
float nameHalfHeight = bounds.height() / 2f;
|
||||
float density = (float) Math.ceil(tileBox.getDensity());
|
||||
RectF rect = new RectF(x - nameHalfWidth - 2 * density,
|
||||
y + nameHalfHeight + 3 * density,
|
||||
x + nameHalfWidth + 3 * density,
|
||||
y - nameHalfHeight - 2 * density);
|
||||
|
||||
canvas.drawRoundRect(rect, 0, 0, paintInnerRect);
|
||||
canvas.drawRoundRect(rect, 0, 0, paintOuterRect);
|
||||
// canvas.drawRect(rect, paintInnerRect);
|
||||
// canvas.drawRect(rect, paintOuterRect);
|
||||
canvas.drawText(nm, x, y + nmHeight / 2, paintTextIcon);
|
||||
canvas.drawText(name, x, y + nameHalfHeight, paintTextIcon);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue