From 871166ac21a1d8997cfa117c480f36f3d73d6dd4 Mon Sep 17 00:00:00 2001 From: Ilya Grechuhin Date: Tue, 4 Apr 2017 16:46:09 +0300 Subject: [PATCH] [MAPSME-4209] [ios] Attempt to fix crash. --- iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm index a80c549206..0eeba1490a 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm @@ -21,6 +21,7 @@ #import "SwiftBridge.h" #include "geometry/distance_on_sphere.hpp" +#include "geometry/point2d.hpp" #include "platform/measurement_utils.hpp" @@ -175,11 +176,17 @@ void logSponsoredEvent(MWMPlacePageData * data, NSString * eventName) - (void)onHeadingUpdate:(location::CompassInfo const &)info { - CLLocation * lastLocation = [MWMLocationManager lastLocation]; - if (!lastLocation) + auto lastLocation = [MWMLocationManager lastLocation]; + auto data = self.data; + if (!lastLocation || !data) return; - CGFloat const angle = ang::AngleTo(lastLocation.mercator, self.data.mercator) + info.m_bearing; + auto const locationMercator = lastLocation.mercator; + auto const dataMercator = data.mercator; + if (my::AlmostEqualAbs(locationMercator, dataMercator, 1e-10)) + return; + + auto const angle = ang::AngleTo(locationMercator, dataMercator) + info.m_bearing; [self.layout rotateDirectionArrowToAngle:angle]; }