Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Zolotarev <alex@maps.me>2016-03-02 21:13:20 +0300
committerSergey Yershov <yershov@corp.mail.ru>2016-03-23 16:50:53 +0300
commitd636bf4c0bfb573e6b30bb0c5b64a34fc3b1c42d (patch)
tree4feafa881f338cbba2ff6e5be3360c5ce493377a /indexer/editable_map_object.cpp
parent165af3aa5c2339622a01e04ea726e9181474fb52 (diff)
Setters to create new feature.
Diffstat (limited to 'indexer/editable_map_object.cpp')
-rw-r--r--indexer/editable_map_object.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/indexer/editable_map_object.cpp b/indexer/editable_map_object.cpp
index 8379dfc72d..51323430e8 100644
--- a/indexer/editable_map_object.cpp
+++ b/indexer/editable_map_object.cpp
@@ -8,6 +8,7 @@ namespace osm
{
bool EditableMapObject::IsNameEditable() const { return m_editableProperties.m_name; }
bool EditableMapObject::IsAddressEditable() const { return m_editableProperties.m_address; }
+
vector<Props> EditableMapObject::GetEditableProperties() const
{
return MetadataToProps(m_editableProperties.m_metadata);
@@ -19,6 +20,7 @@ vector<feature::Metadata::EType> const & EditableMapObject::GetEditableFields()
}
StringUtf8Multilang const & EditableMapObject::GetName() const { return m_name; }
+
vector<LocalizedName> EditableMapObject::GetLocalizedNames() const
{
vector<LocalizedName> result;
@@ -33,6 +35,7 @@ vector<LocalizedName> EditableMapObject::GetLocalizedNames() const
vector<string> const & EditableMapObject::GetNearbyStreets() const { return m_nearbyStreets; }
string const & EditableMapObject::GetHouseNumber() const { return m_houseNumber; }
+
string EditableMapObject::GetPostcode() const
{
return m_metadata.Get(feature::Metadata::FMD_POSTCODE);
@@ -49,6 +52,7 @@ void EditableMapObject::SetEditableProperties(osm::EditableProperties const & pr
}
void EditableMapObject::SetName(StringUtf8Multilang const & name) { m_name = name; }
+
void EditableMapObject::SetName(string const & name, int8_t langCode)
{
if (!name.empty())
@@ -56,12 +60,40 @@ void EditableMapObject::SetName(string const & name, int8_t langCode)
}
void EditableMapObject::SetMercator(m2::PointD const & center) { m_mercator = center; }
+
+void EditableMapObject::SetType(uint32_t featureType)
+{
+ if (m_types.GetGeoType() == feature::EGeomType::GEOM_UNDEFINED)
+ {
+ // Support only point type for newly created features.
+ m_types = feature::TypesHolder(feature::EGeomType::GEOM_POINT);
+ m_types.Assign(featureType);
+ }
+ else
+ {
+ // Correctly replace "main" type in cases when feature holds more types.
+ ASSERT(!m_types.Empty(), ());
+ feature::TypesHolder copy = m_types;
+ // TODO(mgsergio): Replace by correct sorting from editor's config.
+ copy.SortBySpec();
+ m_types.Remove(*copy.begin());
+ m_types.operator ()(featureType);
+ }
+}
+
+void EditableMapObject::SetID(FeatureID const & fid) { m_featureID = fid; }
void EditableMapObject::SetStreet(string const & street) { m_street = street; }
+
void EditableMapObject::SetNearbyStreets(vector<string> const & streets)
{
m_nearbyStreets = streets;
}
-void EditableMapObject::SetHouseNumber(string const & houseNumber) { m_houseNumber = houseNumber; }
+void EditableMapObject::SetHouseNumber(string const & houseNumber)
+{
+ // TODO(AlexZ): Check house number for validity with feature::IsHouseNumber ?
+ // TODO(AlexZ): Store edited house number as house name if feature::IsHouseNumber() returned false.
+ m_houseNumber = houseNumber;
+}
void EditableMapObject::SetPostcode(string const & postcode)
{
m_metadata.Set(feature::Metadata::FMD_POSTCODE, postcode);
@@ -108,6 +140,7 @@ void EditableMapObject::SetOperator(string const & op)
void EditableMapObject::SetElevation(double ele)
{
+ // TODO: Reuse existing validadors in generator (osm2meta).
constexpr double kMaxElevationOnTheEarthInMeters = 10000;
constexpr double kMinElevationOnTheEarthInMeters = -15000;
if (ele < kMaxElevationOnTheEarthInMeters && ele > kMinElevationOnTheEarthInMeters)
@@ -132,6 +165,7 @@ void EditableMapObject::SetBuildingLevels(string const & buildingLevels)
}
string const & EditableMapObject::GetStreet() const { return m_street; }
+
void EditableMapObject::SetCuisines(vector<string> const & cuisine)
{
m_metadata.Set(feature::Metadata::FMD_CUISINE, strings::JoinStrings(cuisine, ';'));