Log touch to the map.

This commit is contained in:
Alex Zolotarev 2015-03-23 21:18:33 +03:00
parent faf2808ee2
commit 53675ba62f
5 changed files with 56 additions and 0 deletions

View file

@ -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());

View file

@ -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); }

View file

@ -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;

View file

@ -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;

View file

@ -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