forked from organicmaps/organicmaps
Log touch to the map.
This commit is contained in:
parent
faf2808ee2
commit
53675ba62f
5 changed files with 56 additions and 0 deletions
|
@ -53,6 +53,13 @@ shared_ptr<anim::Task> Bookmark::CreateAnimTask(Framework & fm)
|
|||
return CreateDefaultPinAnim(fm, m_animScaleFactor);
|
||||
}
|
||||
|
||||
void Bookmark::FillLogEvent(TEventContainer & details) const
|
||||
{
|
||||
UserMark::FillLogEvent(details);
|
||||
details.emplace("markType", "BOOKMARK");
|
||||
details.emplace("name", GetData().GetName());
|
||||
}
|
||||
|
||||
void BookmarkCategory::AddTrack(Track & track)
|
||||
{
|
||||
m_tracks.push_back(track.CreatePersistent());
|
||||
|
|
|
@ -90,6 +90,7 @@ public:
|
|||
BookmarkData const & GetData() const { return m_data; }
|
||||
|
||||
virtual Type GetMarkType() const { return UserMark::Type::BOOKMARK; }
|
||||
virtual void FillLogEvent(TEventContainer & details) const override;
|
||||
|
||||
string const & GetName() const { return m_data.GetName(); }
|
||||
void SetName(string const & name) { m_data.SetName(name); }
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
#include "../api/internal/c/api-client-internals.h"
|
||||
#include "../api/src/c/api-client.h"
|
||||
|
||||
#include "../3party/Alohalytics/src/alohalytics.h"
|
||||
|
||||
#define KMZ_EXTENSION ".kmz"
|
||||
|
||||
|
@ -1864,6 +1865,17 @@ namespace
|
|||
}
|
||||
|
||||
UserMark const * Framework::GetUserMark(m2::PointD const & pxPoint, bool isLongPress)
|
||||
{
|
||||
// The main idea is to calculate POI rank based on the frequency users are clicking them.
|
||||
UserMark const * mark = GetUserMarkWithoutLogging(pxPoint, isLongPress);
|
||||
alohalytics::TStringMap details {{"isLongPress", isLongPress ? "1" : "0"}};
|
||||
if (mark)
|
||||
mark->FillLogEvent(details);
|
||||
alohalytics::Stats::Instance().LogEvent("$GetUserMark", details);
|
||||
return mark;
|
||||
}
|
||||
|
||||
UserMark const * Framework::GetUserMarkWithoutLogging(m2::PointD const & pxPoint, bool isLongPress)
|
||||
{
|
||||
DisconnectMyPositionUpdate();
|
||||
m2::AnyRectD rect;
|
||||
|
|
|
@ -458,6 +458,7 @@ public:
|
|||
shared_ptr<location::State> const & GetLocationState() const;
|
||||
void ActivateUserMark(UserMark const * mark, bool needAnim = true);
|
||||
bool HasActiveUserMark() const;
|
||||
UserMark const * GetUserMarkWithoutLogging(m2::PointD const & pxPoint, bool isLongPress);
|
||||
UserMark const * GetUserMark(m2::PointD const & pxPoint, bool isLongPress);
|
||||
PoiMarkPoint * GetAddressMark(m2::PointD const & globalPoint) const;
|
||||
BookmarkAndCategory FindBookmark(UserMark const * mark) const;
|
||||
|
|
|
@ -42,6 +42,15 @@ public:
|
|||
virtual bool IsCustomDrawable() const { return false;}
|
||||
virtual Type GetMarkType() const = 0;
|
||||
virtual unique_ptr<UserMarkCopy> Copy() const = 0;
|
||||
// Need it to calculate POI rank from all taps to features via statistics.
|
||||
typedef map<string, string> TEventContainer;
|
||||
virtual void FillLogEvent(TEventContainer & details) const
|
||||
{
|
||||
double lat, lon;
|
||||
GetLatLon(lat, lon);
|
||||
details.emplace("lat", strings::to_string(lat));
|
||||
details.emplace("lon", strings::to_string(lon));
|
||||
}
|
||||
|
||||
protected:
|
||||
m2::PointD m_ptOrg;
|
||||
|
@ -102,6 +111,13 @@ public:
|
|||
new UserMarkCopy(new ApiMarkPoint(m_name, m_id, m_ptOrg, m_container)));
|
||||
}
|
||||
|
||||
virtual void FillLogEvent(TEventContainer & details) const override
|
||||
{
|
||||
UserMark::FillLogEvent(details);
|
||||
details.emplace("markType", "API");
|
||||
details.emplace("name", GetName());
|
||||
}
|
||||
|
||||
private:
|
||||
string m_name;
|
||||
string m_id;
|
||||
|
@ -137,6 +153,15 @@ public:
|
|||
new UserMarkCopy(new SearchMarkPoint(m_info, m_ptOrg, m_container)));
|
||||
}
|
||||
|
||||
virtual void FillLogEvent(TEventContainer & details) const override
|
||||
{
|
||||
UserMark::FillLogEvent(details);
|
||||
details.emplace("markType", "SEARCH");
|
||||
details.emplace("name", m_info.GetPinName());
|
||||
details.emplace("type", m_info.GetPinType());
|
||||
details.emplace("metaData", m_metadata.Empty() ? "0" : "1");
|
||||
}
|
||||
|
||||
protected:
|
||||
search::AddressInfo m_info;
|
||||
feature::FeatureMetadata m_metadata;
|
||||
|
@ -153,6 +178,11 @@ public:
|
|||
{
|
||||
return unique_ptr<UserMarkCopy>(new UserMarkCopy(this, false));
|
||||
}
|
||||
virtual void FillLogEvent(TEventContainer & details) const override
|
||||
{
|
||||
SearchMarkPoint::FillLogEvent(details);
|
||||
details.emplace("markType", "POI");
|
||||
}
|
||||
|
||||
void SetPtOrg(m2::PointD const & ptOrg) { m_ptOrg = ptOrg; }
|
||||
void SetName(string const & name) { m_info.m_name = name; }
|
||||
|
@ -166,6 +196,11 @@ public:
|
|||
: base_t(container) {}
|
||||
|
||||
UserMark::Type GetMarkType() const { return UserMark::Type::MY_POSITION; }
|
||||
virtual void FillLogEvent(TEventContainer & details) const override
|
||||
{
|
||||
PoiMarkPoint::FillLogEvent(details);
|
||||
details.emplace("markType", "MY_POSITION");
|
||||
}
|
||||
};
|
||||
|
||||
class ICustomDrawable : public UserMark
|
||||
|
|
Loading…
Add table
Reference in a new issue