Removed animated slow rendering and Nit picks

Signed-off-by: kavikhalique <kavikhalique3@gmail.com>
This commit is contained in:
kavikhalique
2025-08-02 19:42:27 +05:30
committed by Konstantin Pastbin
parent bb88861256
commit 2684e2b278
14 changed files with 99 additions and 179 deletions

View File

@@ -37,7 +37,7 @@ public class ChartController implements OnChartValueSelectedListener
{
private static final int CHART_Y_LABEL_COUNT = 3;
private static final int CHART_X_LABEL_COUNT = 6;
private static final int CHART_ANIMATION_DURATION = 1500;
private static final int CHART_ANIMATION_DURATION = 0;
private static final int CHART_FILL_ALPHA = (int) (0.12 * 255);
private static final int CHART_AXIS_GRANULARITY = 100;
private static final float CUBIC_INTENSITY = 0.2f;

View File

@@ -264,9 +264,9 @@ public enum BookmarkManager {
}
@Nullable
public void updateTrackPlacePage(long trackId)
public void updateTrackPlacePage()
{
nativeUpdateTrackPlacePage(trackId);
nativeUpdateTrackPlacePage();
}
@Nullable
@@ -751,7 +751,7 @@ public enum BookmarkManager {
private native Bookmark nativeUpdateBookmarkPlacePage(long bmkId);
@Nullable
private native void nativeUpdateTrackPlacePage(long trackId);
private native void nativeUpdateTrackPlacePage();
@Nullable
private native BookmarkInfo nativeGetBookmarkInfo(long bmkId);
@@ -919,8 +919,6 @@ public enum BookmarkManager {
public static native ElevationInfo nativeGetTrackElevationInfo(long trackId);
public static native boolean nativeIsElevationInfoHasValue(long trackId);
public static native TrackStatistics nativeGetTrackStatistics(long trackId);
public interface BookmarksLoadingListener
{

View File

@@ -27,7 +27,7 @@ public class FeatureId implements Parcelable
};
@NonNull
public static final FeatureId EMPTY = new FeatureId("", 0L, 0);
public static final FeatureId EMPTY = new FeatureId("", -1L, 0);
@NonNull
private final String mMwmName;

View File

@@ -25,8 +25,8 @@ public class Track extends MapObject
Track(long trackId, long categoryId, String name, Distance length, int color)
{
super(FeatureId.fromFeatureIdString("1:2:3"), TRACK, name, "", "", "", 0, 0, "", null, OPENING_MODE_PREVIEW_PLUS,
null, "", RoadWarningMarkType.UNKNOWN.ordinal(), null);
super(FeatureId.EMPTY, TRACK, name, "", "", "", 0, 0, "", null, OPENING_MODE_PREVIEW_PLUS, null, "",
RoadWarningMarkType.UNKNOWN.ordinal(), null);
mTrackId = trackId;
mCategoryId = categoryId;
mName = name;
@@ -49,8 +49,7 @@ public class Track extends MapObject
mLength = length;
}
// modifying this categoryId will not change the core data
// its just for temporary changes
// Change of the category in the core is done in PlacePageView::onCategoryChanged().
public void setCategoryId(@NonNull long categoryId)
{
mCategoryId = categoryId;
@@ -94,22 +93,15 @@ public class Track extends MapObject
public ElevationInfo getElevationInfo()
{
if (mElevationInfo != null)
return mElevationInfo;
mElevationInfo = BookmarkManager.nativeGetTrackElevationInfo(mTrackId);
if (mElevationInfo == null)
mElevationInfo = BookmarkManager.nativeGetTrackElevationInfo(mTrackId);
return mElevationInfo;
}
public boolean isElevationInfoHasValue()
{
return BookmarkManager.nativeIsElevationInfoHasValue(mTrackId);
}
public TrackStatistics getTrackStatistics()
{
if (mTrackStatistics != null)
return mTrackStatistics;
mTrackStatistics = BookmarkManager.nativeGetTrackStatistics(mTrackId);
if (mTrackStatistics == null)
mTrackStatistics = BookmarkManager.nativeGetTrackStatistics(mTrackId);
return mTrackStatistics;
}
}

View File

@@ -58,12 +58,6 @@ public class ElevationProfileViewRenderer implements PlacePageStateListener
private View mTimeContainer;
private View mTitleContainer;
@NonNull
private static String formatDistance(final Context context, int distance)
{
return Framework.nativeFormatAltitude(distance);
}
public void render(@NonNull Track track)
{
final Context context = mAscent.getContext();
@@ -82,6 +76,12 @@ public class ElevationProfileViewRenderer implements PlacePageStateListener
mTime.setText(Utils.formatRoutingTime(mAscent.getContext(), (int) stats.getDuration(), R.dimen.text_size_body_2));
}
@NonNull
private static String formatDistance(final Context context, int distance)
{
return Framework.nativeFormatAltitude(distance);
}
public void initialize(@Nullable View view)
{
Objects.requireNonNull(view);

View File

@@ -124,6 +124,7 @@ public class PlacePageController
bg.setCornerSize(mPlacePageCornerRadius);
}
};
private final BottomSheetBehavior.BottomSheetCallback mDefaultBottomSheetCallback =
new BottomSheetBehavior.BottomSheetCallback() {
@Override
@@ -148,18 +149,6 @@ public class PlacePageController
}
};
@NonNull
private static PlacePageButtons.ButtonType toPlacePageButton(@NonNull RoadWarningMarkType type)
{
return switch (type)
{
case DIRTY -> PlacePageButtons.ButtonType.ROUTE_AVOID_UNPAVED;
case FERRY -> PlacePageButtons.ButtonType.ROUTE_AVOID_FERRY;
case TOLL -> PlacePageButtons.ButtonType.ROUTE_AVOID_TOLL;
default -> throw new AssertionError("Unsupported road warning type: " + type);
};
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@@ -217,6 +206,18 @@ public class PlacePageController
ViewCompat.requestApplyInsets(mPlacePage);
}
@NonNull
private static PlacePageButtons.ButtonType toPlacePageButton(@NonNull RoadWarningMarkType type)
{
return switch (type)
{
case DIRTY -> PlacePageButtons.ButtonType.ROUTE_AVOID_UNPAVED;
case FERRY -> PlacePageButtons.ButtonType.ROUTE_AVOID_FERRY;
case TOLL -> PlacePageButtons.ButtonType.ROUTE_AVOID_TOLL;
default -> throw new AssertionError("Unsupported road warning type: " + type);
};
}
private void stopCustomPeekHeightAnimation()
{
if (mCustomPeekHeightAnimator != null && mCustomPeekHeightAnimator.isStarted())
@@ -456,19 +457,18 @@ public class PlacePageController
{
if (mMapObject == null)
return;
dismissAlertDialog();
mViewModel.isAlertDialogShowing = true;
if (mAlertDialog != null)
{
mAlertDialog.dismiss();
mAlertDialog.show();
mViewModel.isAlertDialogShowing = true;
return;
}
mViewModel.isAlertDialogShowing = true;
mAlertDialog = new MaterialAlertDialogBuilder(requireContext(), R.style.MwmTheme_AlertDialog)
.setTitle("Would you like to delete " + mMapObject.getTitle() + "?")
.setTitle(requireContext().getString(R.string.delete_track_dialog_title, mMapObject.getTitle()))
.setCancelable(true)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton("delete",
.setPositiveButton(R.string.delete,
(dialog, which) -> {
BookmarkManager.INSTANCE.deleteTrack(((Track) mMapObject).getTrackId());
close();
@@ -660,6 +660,7 @@ public class PlacePageController
// Place page will automatically open when the bottom sheet content is loaded so we can compute the peek height
createPlacePageFragments();
updateButtons(mapObject, showBackButton, !mMapObject.isMyPosition());
mAlertDialog = null;
if (mViewModel.isAlertDialogShowing)
showTrackDeleteAlertDialog();
}

View File

@@ -369,9 +369,12 @@ public class PlacePageView extends Fragment
else
refreshDistanceToObject(loc);
UiUtils.hideIf(mMapObject.isTrack(), mFrame.findViewById(R.id.ll__place_latlon),
mFrame.findViewById(R.id.ll__place_open_in), mFrame.findViewById(R.id.ll__place_add), mEditTopSpace,
mTvAzimuth, mTvDistance, mAvDirection);
UiUtils.hideIf(MapObjectType.getMapObjectType(mMapObject) != MapObjectType.OTHER, mTvSubtitle);
mFrame.findViewById(R.id.ll__place_open_in));
if (mMapObject.isTrack() || mMapObject.isBookmark())
{
UiUtils.hide(mTvSubtitle);
UiUtils.hide(mTvAzimuth, mAvDirection, mTvDistance);
}
}
private <T extends Fragment> void updateViewFragment(Class<T> controllerClass, String fragmentTag,
@@ -466,9 +469,7 @@ public class PlacePageView extends Fragment
void refreshCategoryPreview()
{
View categoryContainer = mFrame.findViewById(R.id.category_container);
switch (MapObjectType.getMapObjectType(mMapObject))
{
case TRACK ->
if (mMapObject.isTrack())
{
Track track = (Track) mMapObject;
Drawable circle =
@@ -477,7 +478,7 @@ public class PlacePageView extends Fragment
mTvCategory.setText(BookmarkManager.INSTANCE.getCategoryById(track.getCategoryId()).getName());
UiUtils.show(mColorIcon, mTvCategory, categoryContainer);
}
case BOOKMARK ->
else if (mMapObject.isBookmark())
{
Bookmark bookmark = (Bookmark) mMapObject;
Icon icon = bookmark.getIcon();
@@ -491,8 +492,7 @@ public class PlacePageView extends Fragment
UiUtils.show(mColorIcon, mTvCategory, categoryContainer);
}
}
case OTHER -> UiUtils.hide(mColorIcon, mTvCategory, categoryContainer);
}
mColorIcon.setOnClickListener(this::onClick);
mTvCategory.setOnClickListener(this::onClick);
mEditBookmark.setOnClickListener(this::onClick);
@@ -508,25 +508,23 @@ public class PlacePageView extends Fragment
(BookmarkColorDialogFragment) factory.instantiate(getContext().getClassLoader(), className);
dialogFragment.setArguments(args);
switch (MapObjectType.getMapObjectType(mMapObject))
if (mMapObject.isTrack())
{
case TRACK ->
{
final Track mTrack = (Track) mMapObject;
args.putInt(BookmarkColorDialogFragment.ICON_COLOR, PredefinedColors.getPredefinedColorIndex(mTrack.getColor()));
final Track track = (Track) mMapObject;
args.putInt(BookmarkColorDialogFragment.ICON_COLOR, PredefinedColors.getPredefinedColorIndex(track.getColor()));
dialogFragment.setOnColorSetListener((colorPos) -> {
int from = mTrack.getColor();
int from = track.getColor();
int to = PredefinedColors.getColor(colorPos);
if (from == to)
return;
mViewModel.modifyMapObjectColorSilently(to);
track.setColor(to);
Drawable circle = Graphics.drawCircle(to, R.dimen.place_page_icon_size, requireContext().getResources());
mColorIcon.setImageDrawable(circle);
});
dialogFragment.show(requireActivity().getSupportFragmentManager(), null);
}
case BOOKMARK ->
else if (mMapObject.isBookmark())
{
dialogFragment.show(requireActivity().getSupportFragmentManager(), null);
final Bookmark bookmark = (Bookmark) mMapObject;
args.putInt(BookmarkColorDialogFragment.ICON_COLOR, bookmark.getIcon().getColor());
args.putInt(BookmarkColorDialogFragment.ICON_RES, bookmark.getIcon().getResId());
@@ -535,7 +533,7 @@ public class PlacePageView extends Fragment
int to = PredefinedColors.getColor(colorPos);
if (from == to)
return;
mViewModel.modifyMapObjectColorSilently(to);
bookmark.setIconColor(to);
Drawable circle = Graphics.drawCircleAndImage(to, R.dimen.place_page_icon_size,
app.organicmaps.sdk.R.drawable.ic_bookmark_none,
R.dimen.place_page_icon_mark_size, requireContext());
@@ -543,7 +541,6 @@ public class PlacePageView extends Fragment
});
dialogFragment.show(requireActivity().getSupportFragmentManager(), null);
}
}
}
private void showCategoryList()
@@ -555,9 +552,7 @@ public class PlacePageView extends Fragment
final FragmentFactory factory = manager.getFragmentFactory();
final ChooseBookmarkCategoryFragment frag =
(ChooseBookmarkCategoryFragment) factory.instantiate(getContext().getClassLoader(), className);
switch (MapObjectType.getMapObjectType(mMapObject))
{
case TRACK ->
if (mMapObject.isTrack())
{
Track track = (Track) mMapObject;
BookmarkCategory currentCategory = BookmarkManager.INSTANCE.getCategoryById(track.getCategoryId());
@@ -566,7 +561,7 @@ public class PlacePageView extends Fragment
frag.setArguments(args);
frag.show(manager, null);
}
case BOOKMARK ->
else if (mMapObject.isBookmark())
{
Bookmark bookmark = (Bookmark) mMapObject;
BookmarkCategory currentCategory = BookmarkManager.INSTANCE.getCategoryById(bookmark.getCategoryId());
@@ -575,15 +570,12 @@ public class PlacePageView extends Fragment
frag.setArguments(args);
frag.show(manager, null);
}
}
}
@Override
public void onCategoryChanged(@NonNull BookmarkCategory newCategory)
{
switch (MapObjectType.getMapObjectType(mMapObject))
{
case TRACK ->
if (mMapObject.isTrack())
{
Track track = (Track) mMapObject;
BookmarkCategory previousCategory = BookmarkManager.INSTANCE.getCategoryById(track.getCategoryId());
@@ -591,49 +583,44 @@ public class PlacePageView extends Fragment
return;
BookmarkManager.INSTANCE.notifyCategoryChanging(track, newCategory.getId());
mTvCategory.setText(newCategory.getName());
mViewModel.modifyMapObjectCategoryIdSilently(newCategory.getId());
track.setCategoryId(newCategory.getId());
}
case BOOKMARK ->
else if (mMapObject.isBookmark())
{
Bookmark bookmark = (Bookmark) mMapObject;
BookmarkCategory previousCategory = BookmarkManager.INSTANCE.getCategoryById(bookmark.getCategoryId());
if (previousCategory == newCategory)
return;
mTvCategory.setText(newCategory.getName());
mViewModel.modifyMapObjectCategoryIdSilently(newCategory.getId());
}
bookmark.setCategoryId(newCategory.getId());
}
}
void showBookmarkEditFragment()
{
switch (MapObjectType.getMapObjectType(mMapObject))
{
case TRACK ->
if (mMapObject.isTrack())
{
Track track = (Track) mMapObject;
final FragmentActivity activity = requireActivity();
EditBookmarkFragment.editTrack(track.getCategoryId(), track.getTrackId(), activity, getChildFragmentManager(),
PlacePageView.this);
}
case BOOKMARK ->
else if (mMapObject.isBookmark())
{
Bookmark bookmark = (Bookmark) mMapObject;
final FragmentActivity activity = requireActivity();
EditBookmarkFragment.editBookmark(bookmark.getCategoryId(), bookmark.getBookmarkId(), activity,
getChildFragmentManager(), PlacePageView.this);
}
}
}
@Override
public void onBookmarkSaved(long bookmarkId, boolean movedFromCategory)
{
switch (MapObjectType.getMapObjectType(mMapObject))
{
case TRACK -> BookmarkManager.INSTANCE.updateTrackPlacePage(bookmarkId);
case BOOKMARK -> BookmarkManager.INSTANCE.updateBookmarkPlacePage(bookmarkId);
}
if (mMapObject.isTrack())
BookmarkManager.INSTANCE.updateTrackPlacePage();
else if (mMapObject.isBookmark())
BookmarkManager.INSTANCE.updateBookmarkPlacePage(bookmarkId);
}
private void refreshDetails()
@@ -1071,7 +1058,7 @@ public class PlacePageView extends Fragment
{
if (mMapObject.isTrack())
{
MenuBottomSheetFragment.newInstance(TRACK_SHARE_MENU_ID, getString(R.string.PP_track_bottom_sheet_title))
MenuBottomSheetFragment.newInstance(TRACK_SHARE_MENU_ID, getString(R.string.share_track))
.show(getChildFragmentManager(), TRACK_SHARE_MENU_ID);
}
else
@@ -1119,21 +1106,4 @@ public class PlacePageView extends Fragment
void onPlacePageRequestToggleState();
void onPlacePageRequestClose();
}
public enum MapObjectType
{
TRACK,
BOOKMARK,
OTHER;
public static MapObjectType getMapObjectType(MapObject mapObject)
{
if (mapObject.isTrack())
return TRACK;
else if (mapObject.isBookmark())
return BOOKMARK;
else
return OTHER;
}
}
}

View File

@@ -37,38 +37,6 @@ public class PlacePageViewModel extends ViewModel
mMapObject.setValue(mapObject);
}
// These silent method are used to update data of map object silently without triggering
// the observer which refreshes everything and puts extra load on device in calculation
// which is not required
public void modifyMapObjectPointSilently(ElevationInfo.Point point)
{
if (mMapObject.getValue() == null)
return;
mMapObject.getValue().setLat(point.getLatitude());
mMapObject.getValue().setLon(point.getLongitude());
}
public void modifyMapObjectCategoryIdSilently(long categoryId)
{
if (mMapObject.getValue() == null)
return;
switch (PlacePageView.MapObjectType.getMapObjectType(mMapObject.getValue()))
{
case TRACK -> ((Track) mMapObject.getValue()).setCategoryId(categoryId);
case BOOKMARK -> ((Bookmark) mMapObject.getValue()).setCategoryId(categoryId);
}
}
public void modifyMapObjectColorSilently(int color)
{
if (mMapObject.getValue() == null)
return;
switch (PlacePageView.MapObjectType.getMapObjectType(mMapObject.getValue()))
{
case TRACK -> ((Track) mMapObject.getValue()).setColor(color);
case BOOKMARK -> ((Bookmark) mMapObject.getValue()).setIconColor(color);
}
}
public MutableLiveData<Integer> getPlacePageWidth()
{
return mPlacePageWidth;

View File

@@ -63,14 +63,14 @@ public class PlacePageTrackFragment extends Fragment
public void onStop()
{
super.onStop();
BookmarkManager.INSTANCE.setElevationActivePointChangedListener(null);
BookmarkManager.INSTANCE.setElevationCurrentPositionChangedListener(null);
mViewModel.getMapObject().removeObserver(this);
}
@Override
public void onDestroy()
{
BookmarkManager.INSTANCE.setElevationActivePointChangedListener(null);
BookmarkManager.INSTANCE.setElevationCurrentPositionChangedListener(null);
super.onDestroy();
}
@@ -80,21 +80,21 @@ public class PlacePageTrackFragment extends Fragment
// MapObject could be something else than a Track if the user already has the place page
// opened and clicks on a non-Track POI.
// This callback would be called before the fragment had time to be destroyed
if (mapObject != null && mapObject.isTrack())
if (mapObject == null || !mapObject.isTrack())
return;
Track track = (Track) mapObject;
if (track.getElevationInfo() != null)
{
Track track = (Track) mapObject;
if (track.isElevationInfoHasValue())
if (mTrack == null || mTrack.getTrackId() != track.getTrackId())
{
if (mTrack == null || mTrack.getTrackId() != track.getTrackId())
{
mElevationProfileViewRenderer.render(track);
UiUtils.show(mElevationProfileView);
}
mElevationProfileViewRenderer.render(track);
UiUtils.show(mElevationProfileView);
}
else
UiUtils.hide(mElevationProfileView);
mTrack = track;
}
else
UiUtils.hide(mElevationProfileView);
mTrack = track;
}
@Override
@@ -104,7 +104,8 @@ public class PlacePageTrackFragment extends Fragment
return;
mElevationProfileViewRenderer.onChartElevationActivePointChanged();
ElevationInfo.Point point = BookmarkManager.INSTANCE.getElevationActivePointCoordinates(mTrack.getTrackId());
mViewModel.modifyMapObjectPointSilently(point);
mTrack.setLat(point.getLatitude());
mTrack.setLon(point.getLongitude());
}
@Override

View File

@@ -1,10 +1,10 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="590.91"
android:viewportWidth="590.91"
android:width="24dp">
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#000000"
android:pathData="M541.67,295.45l-86.21,-86.21l0,71.21l-320,0l0,-71.21l-86.21,86.21l86.21,86.21l0,-71.21l320,0l0,71.21z" />
android:pathData="M280,680 L80,480l200,-200 56,56 -103,104h494L624,336l56,-56 200,200 -200,200 -56,-56 103,-104L233,520l103,104 -56,56Z"
android:fillColor="#e3e3e3" />
</vector>

View File

@@ -971,5 +971,7 @@
<string name="closed_now">Closed now</string>
<!-- Used in place page preview for next open/close time. eg. "closing in 30 min • at 19:30" -->
<string name="at">at %s</string>
<string name="PP_track_bottom_sheet_title">Save Track As</string>
<!-- Title of the bottom sheet when sharing the track -->
<string name="share_track">Share Track</string>
<string name="delete_track_dialog_title">Delete %s?</string>
</resources>

View File

@@ -102,11 +102,7 @@ jobject CreateTrack(JNIEnv * env, place_page::Info const & info, jni::TScopedLoc
auto const trackId = info.GetTrackId();
auto const track = frm()->GetBookmarkManager().GetTrack(trackId);
dp::Color nColor = track->GetColor(0);
jint androidColor =
shift(nColor.GetAlpha(), 24) + shift(nColor.GetRed(), 16) + shift(nColor.GetGreen(), 8) + nColor.GetBlue();
jint androidColor = track->GetColor(0).GetARGB();
auto const categoryId = track->GetGroupId();
ms::LatLon const ll = info.GetLatLon();
jni::TScopedLocalRef jMwmName(env, jni::ToJavaString(env, info.GetID().GetMwmName()));

View File

@@ -448,8 +448,7 @@ JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManage
}
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeUpdateTrackPlacePage(JNIEnv * env,
jobject,
jlong trackId)
jobject)
{
if (!frm()->HasPlacePageInfo())
return;
@@ -837,8 +836,7 @@ JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_n
JNIEnv *, jclass, jlong trackId, jdouble distanceInMeters, jdouble latitude, jdouble longitude)
{
auto & bm = frm()->GetBookmarkManager();
bm.SetElevationActivePoint(static_cast<kml::TrackId>(trackId),
m2::PointD(static_cast<double>(latitude), static_cast<double>(longitude)),
bm.SetElevationActivePoint(static_cast<kml::TrackId>(trackId), {latitude, longitude},
static_cast<double>(distanceInMeters));
}
@@ -872,22 +870,17 @@ JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManage
{
auto const & track = frm()->GetBookmarkManager().GetTrack(track_id);
auto const & elevationInfo = track->GetElevationInfo();
return usermark_helper::CreateElevationInfo(env, elevationInfo.value());
}
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsElevationInfoHasValue(
JNIEnv * env, jclass clazz, jlong track_id)
{
return static_cast<jboolean>(frm()->GetBookmarkManager().GetTrack(track_id)->GetElevationInfo().has_value());
return track->GetElevationInfo().has_value() ? usermark_helper::CreateElevationInfo(env, elevationInfo.value())
: nullptr;
}
JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrackStatistics(
JNIEnv * env, jclass clazz, jlong track_id)
{
static jmethodID const cId = jni::GetConstructorID(env, g_trackStatisticsClazz, "(DDDDII)V");
auto const trackStats = frm()->GetBookmarkManager().GetTrack(track_id)->GetStatistics();
return env->NewObject(g_trackStatisticsClazz, cId, static_cast<jdouble>(trackStats.m_length),
static_cast<jdouble>(trackStats.m_duration), static_cast<jdouble>(trackStats.m_ascent),
static_cast<jdouble>(trackStats.m_descent), static_cast<jint>(trackStats.m_minElevation),
static_cast<jint>(trackStats.m_maxElevation));
return env->NewObject(g_trackStatisticsClazz, cId, trackStats.m_length, trackStats.m_duration, trackStats.m_ascent,
trackStats.m_descent, trackStats.m_minElevation, static_cast<jint>(trackStats.m_maxElevation));
}
JNIEXPORT jobject JNICALL
@@ -900,7 +893,6 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationActive
static jmethodID const pointCtorId = jni::GetConstructorID(env, pointClass, "(DIDD)V");
auto const & trackInfo = frm()->GetBookmarkManager().GetTrackSelectionInfo(track_id);
auto const latlon = mercator::ToLatLon(trackInfo.m_trackPoint);
return env->NewObject(pointClass, pointCtorId, 0.0, 0, static_cast<jdouble>(latlon.m_lat),
static_cast<jdouble>(latlon.m_lon));
return env->NewObject(pointClass, pointCtorId, 0.0, 0, latlon.m_lat, latlon.m_lon);
}
} // extern "C"

View File

@@ -31,7 +31,7 @@ bool Info::IsBookmark() const
bool Info::ShouldShowAddPlace() const
{
auto const isPointOrBuilding = IsPointType() || IsBuilding();
return !(IsFeature() && isPointOrBuilding);
return !IsTrack() && !(IsFeature() && isPointOrBuilding);
}
void Info::SetFromFeatureType(FeatureType & ft)