Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Display all GPX tags in Track Menu, fix broken Ski routes switch, fix minor bugs #21790

Merged
merged 32 commits into from
Jan 31, 2025
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
b374d78
Assume route_piste as a key for SKI routes (draft)
RZR-UA Jan 22, 2025
7b0004f
Merge branch 'master' into rzr-ski-piste
RZR-UA Jan 23, 2025
5b5b4c9
Consider only CLICKABLE_TAGS for activity type
RZR-UA Jan 23, 2025
8ec0da9
Improve FORBIDDEN_TAGS for relations, add way_id
RZR-UA Jan 23, 2025
46f3850
Fix networkRouteKeyTags with ":" chars in the name
RZR-UA Jan 23, 2025
5fd3c95
Use "Information" instead of "Route information"
RZR-UA Jan 23, 2025
c7629a7
Use OsmRouteType.name when no relation_id exists
RZR-UA Jan 23, 2025
1eb24f5
Display and save ClickableWay tags using RouteKey
RZR-UA Jan 23, 2025
32cc422
Improve ClickableWay.getWayName() [cherry-pick]
RZR-UA Jan 22, 2025
420fc71
Add SAVE_TAGS_AS_ROUTE_KEY flag to ClickableWay
RZR-UA Jan 24, 2025
4ebc111
Turn MetadataExtensionsCard into TrackExtensionsCard
RZR-UA Jan 24, 2025
211b5ff
Process XML_COLON at stage of reading GPX extensions
RZR-UA Jan 24, 2025
998d3b2
Get back TrackMenuFragment changes (remove soon)
RZR-UA Jan 26, 2025
a928a79
Use RouteInfoCard to show gpx/metadata extensions
RZR-UA Jan 26, 2025
b11e869
Revert "Turn MetadataExtensionsCard into TrackExtensionsCard"
RZR-UA Jan 26, 2025
d15cee5
Replace MetadataExtensionsCard with RouteInfoCard
RZR-UA Jan 26, 2025
c621088
Use new isGpxAppearanceTag to hide appearance tags
RZR-UA Jan 26, 2025
d5dab31
Comment unused TRACK_DELETED_KEY const
RZR-UA Jan 26, 2025
44767b7
Merge branch 'master' into rzr-ski-piste
RZR-UA Jan 26, 2025
3c4d001
Remove route_id from TRANSLATABLE_KEYS (rare usage)
RZR-UA Jan 27, 2025
b408c07
Simplify with getOsmIdFromPrefixedRouteId
RZR-UA Jan 27, 2025
20eae03
Use updateVisibility()
RZR-UA Jan 27, 2025
aedeefb
Get rid of SAVE_TAGS_AS_ROUTE_KEY
RZR-UA Jan 27, 2025
dd405e2
Refactor gpxAppearanceTags in GpxAppearanceInfo
RZR-UA Jan 27, 2025
bd4e595
Merge branch 'master' into rzr-ski-piste
RZR-UA Jan 27, 2025
c2c4291
Fix OOB for tags without values, avoid empty cards
RZR-UA Jan 27, 2025
33355ac
Use getFromTo() of the route if no name/ref found
RZR-UA Jan 28, 2025
fdb111b
Experiment to diminish addOsmRoutes by relation_id
RZR-UA Jan 28, 2025
45f2f05
Revert "Experiment to diminish addOsmRoutes by relation_id"
RZR-UA Jan 30, 2025
0113b74
Ignore click-to-propagaded-way (REQUIRED_TAGS_ANY)
RZR-UA Jan 30, 2025
13ec1a0
Add piste:name to REQUIRED_TAGS_ANY
RZR-UA Jan 30, 2025
2fbbd67
Merge branch 'master' into rzr-ski-piste
RZR-UA Jan 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions OsmAnd-java/src/main/java/net/osmand/binary/ObfConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,14 @@ public static String getOsmUrlForId(MapObject mapObject) {
return "";
}

public static long getOsmIdFromPrefixedRouteId(String routeId) {
long osmId = 0;
if (routeId.startsWith(Amenity.ROUTE_ID_OSM_PREFIX)) {
osmId = Algorithms.parseLongSilently(routeId.replace(Amenity.ROUTE_ID_OSM_PREFIX, ""), 0);
}
return osmId;
}

public static long getOsmObjectId(MapObject object) {
long originalId = -1;
Long id = object.getId();
Expand Down
15 changes: 10 additions & 5 deletions OsmAnd-java/src/main/java/net/osmand/osm/OsmRouteType.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,8 @@ public class OsmRouteType {
public static final OsmRouteType FERRY = createType("ferry").reg();
public static final OsmRouteType FOOT = createType("foot").reg();
public static final OsmRouteType LIGHT_RAIL = createType("light_rail").reg();
public static final OsmRouteType PISTE = createType("piste").reg();
public static final OsmRouteType RAILWAY = createType("railway").reg();
public static final OsmRouteType SKI = createType("ski").renderingPropertyAttr(PISTE_ROUTES).reg();
public static final OsmRouteType SKI = createType("piste").renderingPropertyAttr(PISTE_ROUTES).reg();
public static final OsmRouteType ALPINE = createType("alpine").renderingPropertyAttr(ALPINE_HIKING).reg();
public static final OsmRouteType FITNESS = createType("fitness").renderingPropertyAttr(FITNESS_TRAILS).reg();
public static final OsmRouteType INLINE_SKATES = createType("inline_skates").reg();
Expand All @@ -62,6 +61,7 @@ public class OsmRouteType {
public static final OsmRouteType TRAM = createType("tram").reg();
public static final OsmRouteType TROLLEYBUS = createType("trolleybus").reg();
public static final OsmRouteType CLIMBING = createType("climbing").renderingPropertyAttr(CLIMBING_ROUTES).reg();
public static final OsmRouteType UNKNOWN = createType("unknown").reg();

// less specific bottom order
private final String name;
Expand Down Expand Up @@ -157,7 +157,8 @@ public static OsmRouteType convertFromOsmGPXTag(String tg) {
case "mtb ride":
case "disused:mtb":
case "abandoned:mtb":
return MOUNTAINBIKE;
case "mtb:scale":
return MTB;
case "hiking":
case "route=hiking":
case "mountain hiking":
Expand Down Expand Up @@ -306,8 +307,9 @@ public static OsmRouteType convertFromOsmGPXTag(String tg) {
case "лыжня":
case "nordic":
case "piste":
case "piste:type=nordic":
return WINTER;
case "piste:type":
case "piste:difficulty":
return SKI;
case "snowmobile=designated":
case "snowmobile=permissive":
case "snowmobile=yes":
Expand All @@ -323,6 +325,9 @@ public static OsmRouteType convertFromOsmGPXTag(String tg) {
return INLINE_SKATES;
case "fitness_trail":
return FITNESS;
case "dirtbike":
case "dirtbike:scale":
return DIRTBIKE;
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -776,7 +776,11 @@ public String getRouteName(String localeId, boolean transliteration) {
return transliteration ? TransliterationHelper.transliterate(name) : name;
}
name = getValue("ref");
return !name.isEmpty() ? name : getRelationID();
if (!name.isEmpty()) {
return name;
}
name = getRelationID();
return !name.isEmpty() ? name : this.type.getName();
}

public String getRelationID() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,8 @@ object GpxUtilities {
val tagsBundle = StringBundle()
tagsBundle.putString("type", gpxFile.networkRouteKeyTags.get("type"))
for ((key, value) in gpxFile.networkRouteKeyTags) {
tagsBundle.putString(key, value)
val attributeToXml = key.replace(":", XML_COLON)
tagsBundle.putString(attributeToXml, value)
}
val routeKeyBundle = mutableListOf<StringBundle>()
routeKeyBundle.add(tagsBundle)
Expand Down Expand Up @@ -1466,7 +1467,7 @@ object GpxUtilities {

private fun getExtensionsSupportedTag(tag: String): String {
val supportedTag = SUPPORTED_EXTENSION_TAGS[tag]
return supportedTag ?: tag
return supportedTag ?: tag.replace(XML_COLON, ":")
}

private fun parseRouteKeyAttributes(parser: XmlPullParser): Map<String, String> {
Expand All @@ -1477,7 +1478,8 @@ object GpxUtilities {
if (!bundle.isEmpty()) {
for (item in bundle.getMap().values) {
if (item.type == StringBundle.ItemType.STRING) {
networkRouteKeyTags[item.name] = item.value as String
val attributeFromXml = item.name.replace(XML_COLON, ":")
networkRouteKeyTags[attributeFromXml] = item.value as String
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion OsmAnd/res/layout/gpx_route_info_card.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
android:layout_marginTop="@dimen/content_padding_small"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginBottom="@dimen/content_padding_small"
android:text="@string/route_info"
android:text="@string/poi_information"
android:textColor="?android:textColorSecondary"
app:typefaceWeight="medium" />

Expand Down
2 changes: 1 addition & 1 deletion OsmAnd/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4254,7 +4254,7 @@ Download tile maps directly, or copy them as SQLite database files to OsmAnd\'s
<string name="notes">A/V notes</string>
<string name="online_map">Online map</string>
<string name="roads_only">Roads only</string>
<string name="rendering_attr_pisteRoutes_name">Ski slopes</string>
<string name="rendering_attr_pisteRoutes_name">Ski routes</string>
<string name="free">Free %1$s </string>
<string name="device_memory">Device memory</string>
<string name="rendering_attr_pisteGrooming_name">Piste grooming</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ private void collectOrderedRouteTypesForProfile() {
ROAD.getName(), DETOUR.getName(), BICYCLE.getName(), MOUNTAINBIKE.getName());
addRouteTypes(ApplicationMode.PUBLIC_TRANSPORT,
BUS.getName(), TRAM.getName(), TROLLEYBUS.getName(), SUBWAY.getName(), TRAIN.getName(),
RAILWAY.getName(), TRACKS.getName(), LIGHT_RAIL.getName(), PISTE.getName());
RAILWAY.getName(), TRACKS.getName(), LIGHT_RAIL.getName());
addRouteTypes(ApplicationMode.TRAIN,
TRAIN.getName(), LIGHT_RAIL.getName(), TRACKS.getName(), SUBWAY.getName(), TRAM.getName());
addRouteTypes(ApplicationMode.BOAT,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
package net.osmand.plus.settings.backend.backup;

import static net.osmand.plus.track.helpers.GpsFilterHelper.GpsFilter.TAG_MAX_FILTER_ALTITUDE;
import static net.osmand.plus.track.helpers.GpsFilterHelper.GpsFilter.TAG_MAX_FILTER_HDOP;
import static net.osmand.plus.track.helpers.GpsFilterHelper.GpsFilter.TAG_MAX_FILTER_SPEED;
import static net.osmand.plus.track.helpers.GpsFilterHelper.GpsFilter.TAG_MIN_FILTER_ALTITUDE;
import static net.osmand.plus.track.helpers.GpsFilterHelper.GpsFilter.TAG_MIN_FILTER_SPEED;
import static net.osmand.plus.track.helpers.GpsFilterHelper.GpsFilter.TAG_SMOOTHING_THRESHOLD;
import static net.osmand.shared.gpx.GpxParameter.ADDITIONAL_EXAGGERATION;
import static net.osmand.shared.gpx.GpxParameter.COLOR;
import static net.osmand.shared.gpx.GpxParameter.COLORING_TYPE;
Expand Down Expand Up @@ -46,7 +40,62 @@
import org.json.JSONException;
import org.json.JSONObject;

import java.util.Set;

public class GpxAppearanceInfo {
public static final String TAG_COLOR = "color";
public static final String TAG_WIDTH = "width";
public static final String TAG_SHOW_ARROWS = "show_arrows";
public static final String TAG_START_FINISH = "show_start_finish";
public static final String TAG_SPLIT_TYPE = "split_type";
public static final String TAG_SPLIT_INTERVAL = "split_interval";
public static final String TAG_COLORING_TYPE = "coloring_type";
public static final String TAG_COLOR_PALETTE = "color_palette";
public static final String TAG_LINE_3D_VISUALIZATION_BY_TYPE = "line_3d_visualization_by_type";
public static final String TAG_LINE_3D_VISUALIZATION_WALL_COLOR_TYPE = "line_3d_visualization_wall_color_type";
public static final String TAG_LINE_3D_VISUALIZATION_POSITION_TYPE = "line_3d_visualization_position_type";
public static final String TAG_VERTICAL_EXAGGERATION_SCALE = "vertical_exaggeration_scale";
public static final String TAG_ELEVATION_METERS = "elevation_meters";
public static final String TAG_TIME_SPAN = "time_span";
public static final String TAG_WPT_POINTS = "wpt_points";
public static final String TAG_TOTAL_DISTANCE = "total_distance";
public static final String TAG_GRADIENT_SCALE_TYPE = "gradient_scale_type";
public static final String TAG_SMOOTHING_THRESHOLD = "smoothing_threshold";
public static final String TAG_MIN_FILTER_SPEED = "min_filter_speed";
public static final String TAG_MAX_FILTER_SPEED = "max_filter_speed";
public static final String TAG_MIN_FILTER_ALTITUDE = "min_filter_altitude";
public static final String TAG_MAX_FILTER_ALTITUDE = "max_filter_altitude";
public static final String TAG_MAX_FILTER_HDOP = "max_filter_hdop";

public static final Set<String> gpxAppearanceTags = Set.of(
TAG_COLOR,
TAG_WIDTH,
TAG_SHOW_ARROWS,
TAG_START_FINISH,
TAG_SPLIT_TYPE,
TAG_SPLIT_INTERVAL,
TAG_COLORING_TYPE,
TAG_COLOR_PALETTE,
TAG_LINE_3D_VISUALIZATION_BY_TYPE,
TAG_LINE_3D_VISUALIZATION_WALL_COLOR_TYPE,
TAG_LINE_3D_VISUALIZATION_POSITION_TYPE,
TAG_VERTICAL_EXAGGERATION_SCALE,
TAG_ELEVATION_METERS,
TAG_TIME_SPAN,
TAG_WPT_POINTS,
TAG_TOTAL_DISTANCE,
TAG_GRADIENT_SCALE_TYPE,
TAG_SMOOTHING_THRESHOLD,
TAG_MIN_FILTER_SPEED,
TAG_MAX_FILTER_SPEED,
TAG_MIN_FILTER_ALTITUDE,
TAG_MAX_FILTER_ALTITUDE,
TAG_MAX_FILTER_HDOP
);

public static boolean isGpxAppearanceTag(@NonNull String tag) {
return gpxAppearanceTags.contains(tag);
}

public String width;
public String coloringType;
Expand Down Expand Up @@ -107,23 +156,23 @@ public GpxAppearanceInfo(@NonNull OsmandApplication app, @NonNull GpxDataItem it
}

public void toJson(@NonNull JSONObject json) throws JSONException {
writeParam(json, "color", color);
writeParam(json, "width", width);
writeParam(json, "show_arrows", showArrows);
writeParam(json, "show_start_finish", showStartFinish);
writeParam(json, "split_type", GpxSplitType.getSplitTypeByTypeId(splitType).getTypeName());
writeParam(json, "split_interval", splitInterval);
writeParam(json, "coloring_type", coloringType);
writeParam(json, "color_palette", gradientPaletteName);
writeParam(json, "line_3d_visualization_by_type", trackVisualizationType.getTypeName());
writeParam(json, "line_3d_visualization_wall_color_type", trackWallColorType.getTypeName());
writeParam(json, "line_3d_visualization_position_type", trackLinePositionType.getTypeName());
writeParam(json, "vertical_exaggeration_scale", verticalExaggeration);
writeParam(json, "elevation_meters", elevationMeters);

writeParam(json, "time_span", timeSpan);
writeParam(json, "wpt_points", wptPoints);
writeParam(json, "total_distance", totalDistance);
writeParam(json, TAG_COLOR, color);
writeParam(json, TAG_WIDTH, width);
writeParam(json, TAG_SHOW_ARROWS, showArrows);
writeParam(json, TAG_START_FINISH, showStartFinish);
writeParam(json, TAG_SPLIT_TYPE, GpxSplitType.getSplitTypeByTypeId(splitType).getTypeName());
writeParam(json, TAG_SPLIT_INTERVAL, splitInterval);
writeParam(json, TAG_COLORING_TYPE, coloringType);
writeParam(json, TAG_COLOR_PALETTE, gradientPaletteName);
writeParam(json, TAG_LINE_3D_VISUALIZATION_BY_TYPE, trackVisualizationType.getTypeName());
writeParam(json, TAG_LINE_3D_VISUALIZATION_WALL_COLOR_TYPE, trackWallColorType.getTypeName());
writeParam(json, TAG_LINE_3D_VISUALIZATION_POSITION_TYPE, trackLinePositionType.getTypeName());
writeParam(json, TAG_VERTICAL_EXAGGERATION_SCALE, verticalExaggeration);
writeParam(json, TAG_ELEVATION_METERS, elevationMeters);

writeParam(json, TAG_TIME_SPAN, timeSpan);
writeParam(json, TAG_WPT_POINTS, wptPoints);
writeParam(json, TAG_TOTAL_DISTANCE, totalDistance);

writeValidDouble(json, TAG_SMOOTHING_THRESHOLD, smoothingThreshold);
writeValidDouble(json, TAG_MIN_FILTER_SPEED, minFilterSpeed);
Expand All @@ -135,50 +184,50 @@ public void toJson(@NonNull JSONObject json) throws JSONException {

public static GpxAppearanceInfo fromJson(@NonNull JSONObject json) {
GpxAppearanceInfo gpxAppearanceInfo = new GpxAppearanceInfo();
boolean hasAnyParam = json.has("color");
gpxAppearanceInfo.color = json.optInt("color");
hasAnyParam |= json.has("width");
gpxAppearanceInfo.width = json.optString("width");
hasAnyParam |= json.has("show_arrows");
gpxAppearanceInfo.showArrows = json.optBoolean("show_arrows");
hasAnyParam |= json.has("show_start_finish");
gpxAppearanceInfo.showStartFinish = json.optBoolean("show_start_finish");
hasAnyParam |= json.has("split_type");
gpxAppearanceInfo.splitType = GpxSplitType.getSplitTypeByName(json.optString("split_type")).getType();
hasAnyParam |= json.has("split_interval");
gpxAppearanceInfo.splitInterval = json.optDouble("split_interval");
hasAnyParam |= json.has("coloring_type");
gpxAppearanceInfo.coloringType = json.optString("coloring_type");
boolean hasAnyParam = json.has(TAG_COLOR);
gpxAppearanceInfo.color = json.optInt(TAG_COLOR);
hasAnyParam |= json.has(TAG_WIDTH);
gpxAppearanceInfo.width = json.optString(TAG_WIDTH);
hasAnyParam |= json.has(TAG_SHOW_ARROWS);
gpxAppearanceInfo.showArrows = json.optBoolean(TAG_SHOW_ARROWS);
hasAnyParam |= json.has(TAG_START_FINISH);
gpxAppearanceInfo.showStartFinish = json.optBoolean(TAG_START_FINISH);
hasAnyParam |= json.has(TAG_SPLIT_TYPE);
gpxAppearanceInfo.splitType = GpxSplitType.getSplitTypeByName(json.optString(TAG_SPLIT_TYPE)).getType();
hasAnyParam |= json.has(TAG_SPLIT_INTERVAL);
gpxAppearanceInfo.splitInterval = json.optDouble(TAG_SPLIT_INTERVAL);
hasAnyParam |= json.has(TAG_COLORING_TYPE);
gpxAppearanceInfo.coloringType = json.optString(TAG_COLORING_TYPE);
if (ColoringType.Companion.valueOf(ColoringPurpose.TRACK, gpxAppearanceInfo.coloringType) == null) {
hasAnyParam |= json.has("gradient_scale_type");
GradientScaleType scaleType = getScaleType(json.optString("gradient_scale_type"));
hasAnyParam |= json.has(TAG_GRADIENT_SCALE_TYPE);
GradientScaleType scaleType = getScaleType(json.optString(TAG_GRADIENT_SCALE_TYPE));
ColoringType coloringType = ColoringType.Companion.valueOf(scaleType);
gpxAppearanceInfo.coloringType = coloringType == null
? null : coloringType.getName(null);
}

hasAnyParam |= json.has("color_palette");
gpxAppearanceInfo.gradientPaletteName = json.optString("color_palette");
hasAnyParam |= json.has("line_3d_visualization_by_type");
String trackVisualizationType = json.optString("line_3d_visualization_by_type");
hasAnyParam |= json.has(TAG_COLOR_PALETTE);
gpxAppearanceInfo.gradientPaletteName = json.optString(TAG_COLOR_PALETTE);
hasAnyParam |= json.has(TAG_LINE_3D_VISUALIZATION_BY_TYPE);
String trackVisualizationType = json.optString(TAG_LINE_3D_VISUALIZATION_BY_TYPE);
gpxAppearanceInfo.trackVisualizationType = Gpx3DVisualizationType.get3DVisualizationType(trackVisualizationType);
hasAnyParam |= json.has("line_3d_visualization_wall_color_type");
String trackWallColorType = json.optString("line_3d_visualization_wall_color_type");
hasAnyParam |= json.has(TAG_LINE_3D_VISUALIZATION_WALL_COLOR_TYPE);
String trackWallColorType = json.optString(TAG_LINE_3D_VISUALIZATION_WALL_COLOR_TYPE);
gpxAppearanceInfo.trackWallColorType = Gpx3DWallColorType.Companion.get3DWallColorType(trackWallColorType);
hasAnyParam |= json.has("line_3d_visualization_position_type");
String trackLinePositionType = json.optString("line_3d_visualization_position_type");
hasAnyParam |= json.has(TAG_LINE_3D_VISUALIZATION_POSITION_TYPE);
String trackLinePositionType = json.optString(TAG_LINE_3D_VISUALIZATION_POSITION_TYPE);
gpxAppearanceInfo.trackLinePositionType = Gpx3DLinePositionType.get3DLinePositionType(trackLinePositionType);
hasAnyParam |= json.has("vertical_exaggeration_scale");
gpxAppearanceInfo.verticalExaggeration = (float) json.optDouble("vertical_exaggeration_scale", SRTMPlugin.MIN_VERTICAL_EXAGGERATION);
hasAnyParam |= json.has("elevation_meters");
gpxAppearanceInfo.elevationMeters = (float) json.optDouble("elevation_meters");

hasAnyParam |= json.has("time_span");
gpxAppearanceInfo.timeSpan = json.optLong("time_span");
hasAnyParam |= json.has("wpt_points");
gpxAppearanceInfo.wptPoints = json.optInt("wpt_points");
hasAnyParam |= json.has("total_distance");
gpxAppearanceInfo.totalDistance = (float) json.optDouble("total_distance");
hasAnyParam |= json.has(TAG_VERTICAL_EXAGGERATION_SCALE);
gpxAppearanceInfo.verticalExaggeration = (float) json.optDouble(TAG_VERTICAL_EXAGGERATION_SCALE, SRTMPlugin.MIN_VERTICAL_EXAGGERATION);
hasAnyParam |= json.has(TAG_ELEVATION_METERS);
gpxAppearanceInfo.elevationMeters = (float) json.optDouble(TAG_ELEVATION_METERS);

hasAnyParam |= json.has(TAG_TIME_SPAN);
gpxAppearanceInfo.timeSpan = json.optLong(TAG_TIME_SPAN);
hasAnyParam |= json.has(TAG_WPT_POINTS);
gpxAppearanceInfo.wptPoints = json.optInt(TAG_WPT_POINTS);
hasAnyParam |= json.has(TAG_TOTAL_DISTANCE);
gpxAppearanceInfo.totalDistance = (float) json.optDouble(TAG_TOTAL_DISTANCE);

hasAnyParam |= json.has(TAG_SMOOTHING_THRESHOLD);
gpxAppearanceInfo.smoothingThreshold = json.optDouble(TAG_SMOOTHING_THRESHOLD);
Expand Down
41 changes: 0 additions & 41 deletions OsmAnd/src/net/osmand/plus/track/cards/MetadataExtensionsCard.java

This file was deleted.

Loading
Loading