From 85a2508a40d53406aa47df82e53630ef1f4adab0 Mon Sep 17 00:00:00 2001 From: Kirill Zhdanovich Date: Thu, 28 Mar 2013 00:53:43 +0300 Subject: [PATCH] [iOS]Now we use new algorithm to handle map clicks --- iphone/Maps/Classes/MapViewController.mm | 41 +++++++++++------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index e64147b798..a5f060117b 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -315,28 +315,25 @@ CGFloat const scaleFactor = self.view.contentScaleFactor; // @TODO Refactor point transformation m2::PointD pxClicked(point.x * scaleFactor, point.y * scaleFactor); - - BookmarkAndCategory const bmAndCat = f.GetBookmark(pxClicked); - if (IsValid(bmAndCat)) + Framework::AddressInfo addrInfo; + m2::PointD pxPivot; + BookmarkAndCategory bmAndCat; + switch (f.GetBookmarkOrPoi(pxClicked, pxPivot, addrInfo, bmAndCat)) { - [self onBookmarkClickWithBookmarkAndCategory:bmAndCat]; - } - else - { - // Check if we've clicked on visible POI - Framework::AddressInfo addrInfo; - m2::PointD pxPivot; - if (!wasBalloonDisplayed && f.GetVisiblePOI(pxClicked, pxPivot, addrInfo)) - { - m2::PointD const gPivot = f.PtoG(pxPivot); - m_balloonView.globalPosition = CGPointMake(gPivot.x, gPivot.y); - [self updatePinTexts:addrInfo]; - m_balloonView.isCurrentPosition = NO; - [m_balloonView showInView:self.view atPoint:CGPointMake(pxPivot.x / scaleFactor, pxPivot.y / scaleFactor)]; - } - else - { - // Just a click somewhere on a map + case Framework::BOOKMARK: + [self onBookmarkClickWithBookmarkAndCategory:bmAndCat]; + break; + case Framework::POI: + if (!wasBalloonDisplayed && f.GetVisiblePOI(pxClicked, pxPivot, addrInfo)) + { + m2::PointD const gPivot = f.PtoG(pxPivot); + m_balloonView.globalPosition = CGPointMake(gPivot.x, gPivot.y); + [self updatePinTexts:addrInfo]; + m_balloonView.isCurrentPosition = NO; + [m_balloonView showInView:self.view atPoint:CGPointMake(pxPivot.x / scaleFactor, pxPivot.y / scaleFactor)]; + } + break; + default: if (isLongClick) { f.GetAddressInfo(pxClicked, addrInfo); @@ -345,7 +342,7 @@ [self updatePinTexts:addrInfo]; [m_balloonView showInView:self.view atPoint:point]; } - } + break; } }