From 21a8838e0c5dd9a5f797ac40ba0a373913d35ee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?sedat=20=C3=A7ift=C3=A7i?= Date: Tue, 1 Jun 2021 13:25:14 +0300 Subject: [PATCH] Update WhirlyGlobeViewController.mm --- .../src/WhirlyGlobeViewController.mm | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/ios/library/WhirlyGlobe-MaplyComponent/src/WhirlyGlobeViewController.mm b/ios/library/WhirlyGlobe-MaplyComponent/src/WhirlyGlobeViewController.mm index 2549f90a9d..2a48e518ec 100644 --- a/ios/library/WhirlyGlobe-MaplyComponent/src/WhirlyGlobeViewController.mm +++ b/ios/library/WhirlyGlobe-MaplyComponent/src/WhirlyGlobeViewController.mm @@ -1017,6 +1017,31 @@ - (void)handleSelection:(WhirlyGlobeTapMessage *)msg didSelect:(NSArray *)select // The user selected something, so let the delegate know if ([_delegate respondsToSelector:@selector(globeViewController:allSelect:atLoc:onScreen:)]) [_delegate globeViewController:self allSelect:selectedObjs atLoc:coord onScreen:msg.touchLoc]; + + MaplySelectedObject *selectVecObj = nil; + MaplySelectedObject *selObj = nil; + // If the selected objects are vectors, use the draw priority + for (MaplySelectedObject *whichObj in selectedObjs) + { + if ([whichObj.selectedObj isKindOfClass:[MaplyVectorObject class]]) + { + MaplyVectorObject *vecObj0 = selectVecObj.selectedObj; + MaplyVectorObject *vecObj1 = whichObj.selectedObj; + if (!vecObj0 || ([vecObj1.attributes[kMaplyDrawPriority] intValue] > [vecObj0.attributes[kMaplyDrawPriority] intValue])) + selectVecObj = whichObj; + } else { + // If there's a non-vector object just pick it + selectVecObj = nil; + selObj = whichObj; + break; + } + } + + if (selectVecObj) + selObj = selectVecObj; + + if (_delegate && [_delegate respondsToSelector:@selector(globeViewController:didSelect:)]) + [_delegate globeViewController:self didSelect:selObj.selectedObj]; else { MaplySelectedObject *selectVecObj = nil; MaplySelectedObject *selObj = nil;