diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp index 19756cf267..47f1848012 100644 --- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp +++ b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp @@ -276,9 +276,12 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastE bmData.m_point = MercatorBounds::FromLatLon(lat, lon); auto const lastEditedCategory = frm()->LastEditedBMCategory(); + place_page::Info & info = g_framework->GetPlacePageInfo(); + if (info.IsFeature()) + SaveFeatureInfo(info.GetNameMultilang(), info.GetTypes(), bmData); + auto const * createdBookmark = bmMng.GetEditSession().CreateBookmark(std::move(bmData), lastEditedCategory); - place_page::Info & info = g_framework->GetPlacePageInfo(); frm()->FillBookmarkInfo(*createdBookmark, info); return usermark_helper::CreateMapObject(env, info); diff --git a/indexer/map_object.cpp b/indexer/map_object.cpp index 3bbaaf07ec..58a9b1595c 100644 --- a/indexer/map_object.cpp +++ b/indexer/map_object.cpp @@ -91,6 +91,11 @@ string MapObject::GetDefaultName() const return name; } +StringUtf8Multilang const & MapObject::GetNameMultilang() const +{ + return m_name; +} + string MapObject::GetLocalizedType() const { ASSERT(!m_types.Empty(), ()); diff --git a/indexer/map_object.hpp b/indexer/map_object.hpp index 5aedca14fa..5d62d542e1 100644 --- a/indexer/map_object.hpp +++ b/indexer/map_object.hpp @@ -65,6 +65,7 @@ public: string GetLocalizedType() const; feature::TypesHolder const & GetTypes() const; string GetDefaultName() const; + StringUtf8Multilang const & GetNameMultilang() const; /// @name Metadata fields. //@{ diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm index c48bb275b1..84f4f7d714 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm @@ -11,6 +11,8 @@ #include "local_ads/event.hpp" +#include "map/bookmark_helpers.hpp" + #include "platform/preferred_languages.hpp" #include "partners_api/booking_api.hpp" @@ -445,6 +447,8 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; kml::SetDefaultStr(bmData.m_name, m_info.FormatNewBookmarkName()); bmData.m_color.m_predefinedColor = f.LastEditedBMColor(); bmData.m_point = self.mercator; + if (m_info.IsFeature()) + SaveFeatureInfo(m_info.GetNameMultilang(), m_info.GetTypes(), bmData); auto editSession = bmManager.GetEditSession(); auto const * bookmark = editSession.CreateBookmark(std::move(bmData), categoryId); f.FillBookmarkInfo(*bookmark, m_info); diff --git a/map/bookmark_helpers.cpp b/map/bookmark_helpers.cpp index b709580a2e..bac3643877 100644 --- a/map/bookmark_helpers.cpp +++ b/map/bookmark_helpers.cpp @@ -107,3 +107,13 @@ bool SaveKmlData(kml::FileData & kmlData, Writer & writer, bool useBinary) } return true; } + +void SaveFeatureInfo(StringUtf8Multilang const & name, feature::TypesHolder const & types, kml::BookmarkData & bmData) +{ + bmData.m_featureTypes.assign(types.begin(), types.end()); + + name.ForEach([&bmData](int8_t langCode, std::string const & localName) + { + bmData.m_featureName[langCode] = localName; + }); +} diff --git a/map/bookmark_helpers.hpp b/map/bookmark_helpers.hpp index 62f673c20f..5e42109d8f 100644 --- a/map/bookmark_helpers.hpp +++ b/map/bookmark_helpers.hpp @@ -2,6 +2,8 @@ #include "map/bookmark.hpp" +#include "indexer/feature.hpp" + #include "coding/reader.hpp" #include @@ -12,3 +14,6 @@ std::unique_ptr LoadKmlData(Reader const & reader, bool useBinary bool SaveKmlFile(kml::FileData & kmlData, std::string const & file, bool useBinary); bool SaveKmlData(kml::FileData & kmlData, Writer & writer, bool useBinary); + +void SaveFeatureInfo(StringUtf8Multilang const & name, feature::TypesHolder const & types, + kml::BookmarkData & bmData);