diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2018-01-24 14:13:42 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2018-01-24 17:25:40 -0800 |
commit | 6538eb39bd040f283a7e8f2cbe15b536d5960972 (patch) | |
tree | 844e1b868d4c08c91576ac37682704399dc39370 | |
parent | cb1a65d70d45be2a6f96fe1311b0fdda14ee13d1 (diff) | |
download | qtlocation-mapboxgl-6538eb39bd040f283a7e8f2cbe15b536d5960972.tar.gz |
[macos] Added Enhance Terrain debugging command
-rw-r--r-- | platform/macos/app/Base.lproj/MainMenu.xib | 50 | ||||
-rw-r--r-- | platform/macos/app/MapDocument.m | 65 |
2 files changed, 94 insertions, 21 deletions
diff --git a/platform/macos/app/Base.lproj/MainMenu.xib b/platform/macos/app/Base.lproj/MainMenu.xib index d014676caa..72e9c5a189 100644 --- a/platform/macos/app/Base.lproj/MainMenu.xib +++ b/platform/macos/app/Base.lproj/MainMenu.xib @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12121" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> <dependencies> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12121"/> + <deployment identifier="macosx"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> <objects> @@ -554,6 +555,21 @@ <action selector="drawAnimatedAnnotation:" target="-1" id="CYM-WB-s97"/> </connections> </menuItem> + <menuItem title="Show All Annnotations" keyEquivalent="A" id="yMj-uM-8SN"> + <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/> + <connections> + <action selector="showAllAnnotations:" target="-1" id="ahr-OR-Em2"/> + </connections> + </menuItem> + <menuItem title="Remove All Annotations" id="6rC-68-vk0"> + <string key="keyEquivalent" base64-UTF8="YES"> +CA +</string> + <connections> + <action selector="removeAllAnnotations:" target="-1" id="6v3-0E-LsR"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="cbI-Nd-MAp"/> <menuItem title="Add Lime Green Layer" id="UWY-vl-t2m"> <modifierMask key="keyEquivalentModifierMask"/> <connections> @@ -565,25 +581,17 @@ <connections> <action selector="addAnimatedImageSource:" target="-1" id="TuN-Pa-hTG"/> </connections> - </menuItem> + </menuItem> <menuItem title="Add Graticule" id="Msk-p2-Lwt"> <modifierMask key="keyEquivalentModifierMask"/> <connections> <action selector="insertGraticuleLayer:" target="-1" id="LE5-lz-kx4"/> </connections> </menuItem> - <menuItem title="Show All Annnotations" keyEquivalent="A" id="yMj-uM-8SN"> - <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/> - <connections> - <action selector="showAllAnnotations:" target="-1" id="ahr-OR-Em2"/> - </connections> - </menuItem> - <menuItem title="Remove All Annotations" id="6rC-68-vk0"> - <string key="keyEquivalent" base64-UTF8="YES"> - CA - </string> + <menuItem title="Enhance Terrain" id="2ZT-uE-kUR"> + <modifierMask key="keyEquivalentModifierMask"/> <connections> - <action selector="removeAllAnnotations:" target="-1" id="6v3-0E-LsR"/> + <action selector="enhanceTerrain:" target="-1" id="TXX-Yv-ZY1"/> </connections> </menuItem> <menuItem isSeparatorItem="YES" id="wQq-Mx-QY0"/> @@ -666,7 +674,7 @@ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> <rect key="contentRect" x="109" y="131" width="350" height="84"/> - <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/> + <rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/> <view key="contentView" id="eA4-n3-qPe"> <rect key="frame" x="0.0" y="0.0" width="350" height="84"/> <autoresizingMask key="autoresizingMask"/> @@ -742,7 +750,7 @@ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" utility="YES"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> <rect key="contentRect" x="830" y="430" width="400" height="300"/> - <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/> + <rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/> <view key="contentView" id="8ha-hw-zOD"> <rect key="frame" x="0.0" y="0.0" width="400" height="300"/> <autoresizingMask key="autoresizingMask"/> @@ -751,7 +759,7 @@ <rect key="frame" x="-1" y="20" width="402" height="281"/> <clipView key="contentView" id="J9U-Yx-o2S"> <rect key="frame" x="1" y="0.0" width="400" height="280"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <autoresizingMask key="autoresizingMask"/> <subviews> <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" autosaveColumns="NO" headerView="MAZ-Iq-hBi" id="Ato-Vu-HYT"> <rect key="frame" x="0.0" y="0.0" width="423" height="257"/> @@ -772,7 +780,7 @@ <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.stateImage" id="2wd-1J-TZt"/> </connections> </tableColumn> - <tableColumn editable="NO" width="116" minWidth="40" maxWidth="1000" id="2hD-LN-h0L"> + <tableColumn identifier="" editable="NO" width="116" minWidth="40" maxWidth="1000" id="2hD-LN-h0L"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Name"> <font key="font" metaFont="smallSystem"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> @@ -792,7 +800,7 @@ </binding> </connections> </tableColumn> - <tableColumn editable="NO" width="50" minWidth="40" maxWidth="1000" id="pkI-c7-xoD"> + <tableColumn identifier="" editable="NO" width="50" minWidth="40" maxWidth="1000" id="pkI-c7-xoD"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Downloaded Resources"> <font key="font" metaFont="smallSystem"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> @@ -826,7 +834,7 @@ <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfResourcesExpected" id="mh2-k0-vvB"/> </connections> </tableColumn> - <tableColumn editable="NO" width="50" minWidth="40" maxWidth="1000" id="kCO-Cd-bQt"> + <tableColumn identifier="" editable="NO" width="50" minWidth="40" maxWidth="1000" id="kCO-Cd-bQt"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Downloaded Tiles"> <font key="font" metaFont="smallSystem"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> @@ -847,7 +855,7 @@ </binding> </connections> </tableColumn> - <tableColumn editable="NO" width="60" minWidth="10" maxWidth="3.4028234663852886e+38" id="WO5-Ci-HgG"> + <tableColumn identifier="" editable="NO" width="60" minWidth="10" maxWidth="3.4028234663852886e+38" id="WO5-Ci-HgG"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Downloaded Tiles Size"> <font key="font" metaFont="smallSystem"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> diff --git a/platform/macos/app/MapDocument.m b/platform/macos/app/MapDocument.m index 94b0cffcdc..602ed1aa41 100644 --- a/platform/macos/app/MapDocument.m +++ b/platform/macos/app/MapDocument.m @@ -50,6 +50,25 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio return flattenedShapes; } +@interface MGLVectorSource (MBXAdditions) + +@property (nonatomic, readonly, getter=isMapboxTerrain) BOOL mapboxTerrain; + +@end + +@implementation MGLVectorSource (MBXAdditions) + +- (BOOL)isMapboxTerrain { + NSURL *url = self.configurationURL; + if (![url.scheme isEqualToString:@"mapbox"]) { + return NO; + } + NSArray *identifiers = [url.host componentsSeparatedByString:@","]; + return [identifiers containsObject:@"mapbox.mapbox-terrain-v2"] || [identifiers containsObject:@"mapbox.mapbox-terrain-v1"]; +} + +@end + @interface MapDocument () <NSWindowDelegate, NSSharingServicePickerDelegate, NSMenuDelegate, NSSplitViewDelegate, MGLMapViewDelegate, MGLComputedShapeSourceDataSource> @property (weak) IBOutlet NSArrayController *styleLayersArrayController; @@ -739,6 +758,49 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio [self.mapView.style removeSource:source]; } +- (IBAction)enhanceTerrain:(id)sender { + // Find all the identifiers of Mapbox Terrain sources used in the style. + NSMutableSet *terrainSourceIdentifiers = [NSMutableSet set]; + for (MGLVectorSource *source in self.mapView.style.sources) { + if (![source isKindOfClass:[MGLVectorSource class]]) { + continue; + } + + if (source.mapboxTerrain) { + [terrainSourceIdentifiers addObject:source.identifier]; + } + } + + // Find and remove all the style layers using those sources. + NSUInteger hillshadeIndex = NSNotFound; + NSEnumerator *layerEnumerator = self.mapView.style.layers.objectEnumerator; + MGLVectorStyleLayer *layer; + for (NSUInteger i = 0; (layer = layerEnumerator.nextObject); i++) { + if (![layer isKindOfClass:[MGLVectorStyleLayer class]]) { + continue; + } + + if ([terrainSourceIdentifiers containsObject:layer.sourceIdentifier] + && [layer.sourceLayerIdentifier isEqualToString:@"hillshade"]) { + hillshadeIndex = i; + [self.mapView.style removeLayer:layer]; + } + } + + if (hillshadeIndex == NSNotFound) { + return; + } + + // Add a Mapbox Terrain-RGB source. + NSURL *terrainRGBURL = [NSURL URLWithString:@"mapbox://mapbox.terrain-rgb"]; + MGLRasterDEMSource *terrainRGBSource = [[MGLRasterDEMSource alloc] initWithIdentifier:@"terrain" configurationURL:terrainRGBURL]; + [self.mapView.style addSource:terrainRGBSource]; + + // Insert a hillshade layer where the Mapbox Terrain–based layers were. + MGLHillshadeStyleLayer *hillshadeLayer = [[MGLHillshadeStyleLayer alloc] initWithIdentifier:@"hillshade" source:terrainRGBSource]; + [self.mapView.style insertLayer:hillshadeLayer atIndex:hillshadeIndex]; +} + #pragma mark Offline packs - (IBAction)addOfflinePack:(id)sender { @@ -1058,6 +1120,9 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio if (menuItem.action == @selector(showAllAnnotations:) || menuItem.action == @selector(removeAllAnnotations:)) { return self.mapView.annotations.count > 0; } + if (menuItem.action == @selector(enhanceTerrain:)) { + return YES; + } if (menuItem.action == @selector(startWorldTour:)) { return !_isTouringWorld; } |