public void OpenPopup(MapPoint tapPos, TapMode tm)
{
var pc = new PoiCallOutViewModel { Poi = Poi };
callOut = new MapCallOutViewModel
{
Width = Poi.NEffectiveStyle.CallOutMaxWidth.HasValue ? Poi.NEffectiveStyle.CallOutMaxWidth.Value : 350,
Title = Poi.Name,
TimeOut = new TimeSpan(0, 0, 0, Poi.NEffectiveStyle.CallOutTimeOut.Value),
CanClose = true,
CanPin = Poi.NEffectiveStyle.AddMode != AddModes.OpenAfter,
ForegroundBrush = new SolidColorBrush(Poi.NEffectiveStyle.CallOutForeground.Value),
BackgroundBrush = new SolidColorBrush(Poi.NEffectiveStyle.CallOutFillColor.Value),
ViewModel = pc,
Point = (Geometry is MapPoint) ? (MapPoint)Geometry : tapPos,
Graphic = this,
Orientation = (CallOutOrientation) Enum.Parse(typeof(CallOutOrientation), Poi.NEffectiveStyle.CallOutOrientation.Value.ToString())
};
pc.CallOut = callOut;
callOut.Tapped += (s, f) =>
{
if (tm != TapMode.CallOutPopup || GroupLayer == null) return;
if (!callOut.Pinned) callOut.Close();
//GroupLayer.OpenPoiPopup(Poi);
};
callOut.Closed += (s, f) => { callOutVisible = false; };
UpdateCalloutActions();
if (callOut.Orientation == CallOutOrientation.RightSideMenu)
{
// Close all open popups
for (var i = AppState.Popups.Count-1; i>= 0; i--)
{
var co = AppState.Popups[i] as MapCallOutViewModel;
if (co == null) continue;
co.Close();
}
}
AppState.Popups.Add(callOut);
if (tm == TapMode.CallOutEdit) callOut.StartEditing();
callOutVisible = true;
}