diff --git a/Examples.xcodeproj/project.pbxproj b/Examples.xcodeproj/project.pbxproj index 73a614769bb6..b00640f70c0d 100644 --- a/Examples.xcodeproj/project.pbxproj +++ b/Examples.xcodeproj/project.pbxproj @@ -3,179 +3,188 @@ archiveVersion = 1; classes = { }; - objectVersion = 60; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ - 000BBF0F3175DB2F54BFC85E /* EditPolygonExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4FEA4443F430EC8957AB0A /* EditPolygonExample.swift */; platformFilter = ios; }; + 000BBF0F3175DB2F54BFC85E /* EditPolygonExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4FEA4443F430EC8957AB0A /* EditPolygonExample.swift */; platformFilters = (ios, ); }; 01310DFD10B3804EE3548509 /* sf_airport_route.geojson in Resources */ = {isa = PBXBuildFile; fileRef = FE2A263DD2E9DC52CEE356FA /* sf_airport_route.geojson */; }; 03EDEA6452582E7E6805C824 /* CalloutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBD8F852552CA316EFFCDD64 /* CalloutView.swift */; }; - 03EEF25ABD58ADD9631AB509 /* MapEventsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 370DFCA52EB6C7F119BF81DA /* MapEventsExample.swift */; platformFilter = ios; }; - 0414AD72988F405F5BA1D843 /* GlobeFlyToExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 384FD8FC97B9F5011AF4BD61 /* GlobeFlyToExample.swift */; platformFilter = ios; }; - 05DF15DADC248A2CAA5EEDC4 /* AddMarkersSymbolExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33F64CDBA98B91EE819B2C4 /* AddMarkersSymbolExample.swift */; platformFilter = ios; }; + 03EEF25ABD58ADD9631AB509 /* MapEventsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 370DFCA52EB6C7F119BF81DA /* MapEventsExample.swift */; platformFilters = (ios, ); }; + 0414AD72988F405F5BA1D843 /* GlobeFlyToExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 384FD8FC97B9F5011AF4BD61 /* GlobeFlyToExample.swift */; platformFilters = (ios, ); }; + 05DF15DADC248A2CAA5EEDC4 /* AddMarkersSymbolExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33F64CDBA98B91EE819B2C4 /* AddMarkersSymbolExample.swift */; platformFilters = (ios, ); }; + 05EF63E72681858549C8D580 /* OpenHours+Formatting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39F277AD62400BB06EF2A9A6 /* OpenHours+Formatting.swift */; platformFilters = (ios, ); }; 08DD7D352E50C412B667D6F6 /* CustomLayerExampleShaders.metal in Sources */ = {isa = PBXBuildFile; fileRef = 5C0C8783B2A74AE9DE3F6C32 /* CustomLayerExampleShaders.metal */; }; - 0E191B29AE31584DCFDC3821 /* RasterColorExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D66333697502A83B85BCD9 /* RasterColorExample.swift */; platformFilter = ios; }; - 10C2E5ADC16B91D43288E820 /* AdvancedViewportGesturesExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB717239BBFE5103C1EB1A4 /* AdvancedViewportGesturesExample.swift */; platformFilter = ios; }; - 10ECE7FE19CEC239DDA96961 /* ExampleProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10C7CEE3F343DF482D428211 /* ExampleProtocol.swift */; platformFilter = ios; }; - 1372F3B8047B6B4EE70933D9 /* StandardStyleExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 996964F634A4536F664C2611 /* StandardStyleExample.swift */; platformFilter = ios; }; - 14799547EFD5C4757FBAD6E4 /* ViewportExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C19E67A2E87A3D18B7B511 /* ViewportExample.swift */; platformFilter = ios; }; + 0E191B29AE31584DCFDC3821 /* RasterColorExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D66333697502A83B85BCD9 /* RasterColorExample.swift */; platformFilters = (ios, ); }; + 0FD9C8E1CB8A58A4A0DB25C4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 45A57634C3CF386009792983 /* Assets.xcassets */; platformFilters = (ios, ); }; + 10C2E5ADC16B91D43288E820 /* AdvancedViewportGesturesExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB717239BBFE5103C1EB1A4 /* AdvancedViewportGesturesExample.swift */; platformFilters = (ios, ); }; + 10ECE7FE19CEC239DDA96961 /* ExampleProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10C7CEE3F343DF482D428211 /* ExampleProtocol.swift */; platformFilters = (ios, ); }; + 1372F3B8047B6B4EE70933D9 /* StandardStyleExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 996964F634A4536F664C2611 /* StandardStyleExample.swift */; platformFilters = (ios, ); }; + 14799547EFD5C4757FBAD6E4 /* ViewportExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C19E67A2E87A3D18B7B511 /* ViewportExample.swift */; platformFilters = (ios, ); }; 1687412AC1637D7EA697C7A4 /* View+OnShake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83E9078B1B13E54C2FFC5FFC /* View+OnShake.swift */; }; + 17FA11C8755803165B1E0E7D /* CirclePinView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C376C7DED604F5A90819D936 /* CirclePinView.swift */; platformFilters = (ios, ); }; 1820AE40702C7875656BA2D7 /* radar0.gif in Resources */ = {isa = PBXBuildFile; fileRef = 1BCE444AC33D2F1F88F4CCF0 /* radar0.gif */; }; 18919387995A155D6F64DADF /* StandardInteractiveBuildingsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97E057D9FFB1DE3E16F1F0B /* StandardInteractiveBuildingsExample.swift */; }; 18F76FE745B049D1F0CAF6CA /* GeoJSONSourceExample.geojson in Resources */ = {isa = PBXBuildFile; fileRef = F033C8EFB89A90D6705B047D /* GeoJSONSourceExample.geojson */; }; - 191391C51FC69A6D36EB67F0 /* ResizableImageExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12A0818B5BC601707E3235A9 /* ResizableImageExample.swift */; platformFilter = ios; }; - 1B5230204B5659B1F05C303D /* DataDrivenSymbolsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99A72B5DBF68C4729A5DC65D /* DataDrivenSymbolsExample.swift */; platformFilter = ios; }; - 1B97702805C5EC4703A6CAA9 /* LineAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDE7738CA55957F3FAC3ECE /* LineAnnotationExample.swift */; platformFilter = ios; }; - 1C70390E725564D6E60865EF /* DistanceExpressionExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CCB8EE8E1C9C6CC85DA5D36 /* DistanceExpressionExample.swift */; platformFilter = ios; }; + 191391C51FC69A6D36EB67F0 /* ResizableImageExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12A0818B5BC601707E3235A9 /* ResizableImageExample.swift */; platformFilters = (ios, ); }; + 1B5230204B5659B1F05C303D /* DataDrivenSymbolsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99A72B5DBF68C4729A5DC65D /* DataDrivenSymbolsExample.swift */; platformFilters = (ios, ); }; + 1B97702805C5EC4703A6CAA9 /* LineAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDE7738CA55957F3FAC3ECE /* LineAnnotationExample.swift */; platformFilters = (ios, ); }; + 1C70390E725564D6E60865EF /* DistanceExpressionExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CCB8EE8E1C9C6CC85DA5D36 /* DistanceExpressionExample.swift */; platformFilters = (ios, ); }; 1DAE02D73D16E543777C2025 /* ClusteringExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46CE3D9C2873C0767DD76D85 /* ClusteringExample.swift */; }; - 1F860D5B445E75772C4C3B6C /* SkyLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B8372871DB4BC991737A06 /* SkyLayerExample.swift */; platformFilter = ios; }; - 215230836B6AD1040D3DA547 /* CombineLocationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4EE8F38428A64B5B9D4DBBE /* CombineLocationExample.swift */; platformFilter = ios; }; + 1F860D5B445E75772C4C3B6C /* SkyLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B8372871DB4BC991737A06 /* SkyLayerExample.swift */; platformFilters = (ios, ); }; + 1FCA58860B3F23CAC57B32CA /* SegmentedToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09006C566A72E52201CA7EFB /* SegmentedToggleView.swift */; platformFilters = (ios, ); }; + 215230836B6AD1040D3DA547 /* CombineLocationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4EE8F38428A64B5B9D4DBBE /* CombineLocationExample.swift */; platformFilters = (ios, ); }; + 274074283C558652C5969BB9 /* FavoritesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 076D23DADD44F2CA269F947E /* FavoritesManager.swift */; platformFilters = (ios, ); }; 2997D21A7DB20098C6D03D3B /* StandardStyleImportExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 640198169EEDFC7CBEFCFCCF /* StandardStyleImportExample.swift */; }; 2B44F3E8EF3A50D9AE6B825F /* route.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 450C8D5E4B84428FE51BCA97 /* route.geojson */; }; - 2C03342240D5487880316518 /* AddOneMarkerSymbolExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE814694CF08A9C2E4A42 /* AddOneMarkerSymbolExample.swift */; platformFilter = ios; }; + 2C03342240D5487880316518 /* AddOneMarkerSymbolExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE814694CF08A9C2E4A42 /* AddOneMarkerSymbolExample.swift */; platformFilters = (ios, ); }; 2EC3AAE5D54ACFB90E98CD43 /* ElevatedLineMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BBD2991186A6B98F730454 /* ElevatedLineMapView.swift */; }; 30589E5AB307FC934E466332 /* radar2.gif in Resources */ = {isa = PBXBuildFile; fileRef = D8730F8FB259A4F889609108 /* radar2.gif */; }; 312CE7CED726F0A572301622 /* PinView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DC3D7884D057238010CB6E4 /* PinView.swift */; }; + 31E053667A6C6CAB152D4A04 /* POICategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FB20C6CE44D70532CC43582 /* POICategory.swift */; platformFilters = (ios, ); }; 32FA2A4133B0464494212B34 /* Array+Split.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BB15B17EDE597D37CFF3FCA /* Array+Split.swift */; }; - 33B816803AF5330796686AA1 /* CameraForExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF35650C6319088CAAF95F84 /* CameraForExample.swift */; platformFilter = ios; }; - 373BD1EE35B76E43534E23F6 /* Fingertips in Frameworks */ = {isa = PBXBuildFile; platformFilter = ios; productRef = FD9311FF1C736B80A26F4258 /* Fingertips */; }; + 33B816803AF5330796686AA1 /* CameraForExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF35650C6319088CAAF95F84 /* CameraForExample.swift */; platformFilters = (ios, ); }; + 36F4137908C6594E0A694CD9 /* ExamplesRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046682CA678CD79451761CFD /* ExamplesRootView.swift */; platformFilters = (ios, ); }; + 373BD1EE35B76E43534E23F6 /* Fingertips in Frameworks */ = {isa = PBXBuildFile; platformFilters = (ios, ); productRef = FD9311FF1C736B80A26F4258 /* Fingertips */; }; 38AD95B6DD9BE858F4E59C31 /* WeatherAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91D21963A6FF5DA26A210DA5 /* WeatherAnnotationExample.swift */; }; - 38DF3926AD9DDDE883454F64 /* TestableExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CB74046A2FC03770B62B9E6 /* TestableExampleTests.swift */; platformFilter = ios; }; - 392857DBD1231B0438144335 /* AnimatedMarkerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44C0F343A1B5F4DA0C19B9C /* AnimatedMarkerExample.swift */; platformFilter = ios; }; + 38DF3926AD9DDDE883454F64 /* TestableExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CB74046A2FC03770B62B9E6 /* TestableExampleTests.swift */; platformFilters = (ios, ); }; + 392857DBD1231B0438144335 /* AnimatedMarkerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44C0F343A1B5F4DA0C19B9C /* AnimatedMarkerExample.swift */; platformFilters = (ios, ); }; + 3B4847CA03B24A39ECA40224 /* FilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D19104E735A36AF0E51A6088 /* FilterView.swift */; platformFilters = (ios, ); }; 3B4862E6832F23CB115D444A /* ClipLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63A3027A7DA59E090DAD25F1 /* ClipLayerExample.swift */; }; 3E515D1DD1D9CA02F3E95AA2 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D03F5A3A0E879717BFE421 /* Constants.swift */; }; - 3FD83483E0AE57790504CB0C /* MapRecorderExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E612275E3042D0D0AF8B583E /* MapRecorderExample.swift */; platformFilter = ios; }; - 4105BDB79F22905F065071F3 /* CustomRasterSourceExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F6B4718F05FB1E6736EA1FF /* CustomRasterSourceExample.swift */; platformFilter = ios; }; - 423A42B555DD0B3AD4856FCF /* InsetMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BCB1CC4577300FEF4DE017B /* InsetMapExample.swift */; platformFilter = ios; }; - 4417BB8A356335BC8421A19B /* PointClusteringExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 289434058C4AB25A17655FEF /* PointClusteringExample.swift */; platformFilter = ios; }; - 442DB919BE75CE7B0A537757 /* SpinningGlobeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A182413E535260335459F26 /* SpinningGlobeExample.swift */; platformFilter = ios; }; - 4791CACAC0846107E4B0955B /* SceneKitExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 267AA1719061B281479BBBCB /* SceneKitExample.swift */; platformFilter = ios; }; - 48040990713D3220E7055434 /* LiveDataExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4DA62349C7E9846A885BCD3 /* LiveDataExample.swift */; platformFilter = ios; }; - 49F6209402BF34C06C90107A /* HeatmapLayerGlobeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70922E748D003176C4A3C60A /* HeatmapLayerGlobeExample.swift */; platformFilter = ios; }; - 4ACB99FAFBF38A425EBD0285 /* ModelLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2D98F58F756D035C98B1F39 /* ModelLayerExample.swift */; platformFilter = ios; }; + 3FD83483E0AE57790504CB0C /* MapRecorderExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E612275E3042D0D0AF8B583E /* MapRecorderExample.swift */; platformFilters = (ios, ); }; + 4105BDB79F22905F065071F3 /* CustomRasterSourceExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F6B4718F05FB1E6736EA1FF /* CustomRasterSourceExample.swift */; platformFilters = (ios, ); }; + 423A42B555DD0B3AD4856FCF /* InsetMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BCB1CC4577300FEF4DE017B /* InsetMapExample.swift */; platformFilters = (ios, ); }; + 4417BB8A356335BC8421A19B /* PointClusteringExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 289434058C4AB25A17655FEF /* PointClusteringExample.swift */; platformFilters = (ios, ); }; + 442DB919BE75CE7B0A537757 /* SpinningGlobeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A182413E535260335459F26 /* SpinningGlobeExample.swift */; platformFilters = (ios, ); }; + 443DE16A0E50098614E5006F /* PinPoweredMapConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 010E21E88FA01F9AC895BF28 /* PinPoweredMapConstants.swift */; platformFilters = (ios, ); }; + 4791CACAC0846107E4B0955B /* SceneKitExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 267AA1719061B281479BBBCB /* SceneKitExample.swift */; platformFilters = (ios, ); }; + 48040990713D3220E7055434 /* LiveDataExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4DA62349C7E9846A885BCD3 /* LiveDataExample.swift */; platformFilters = (ios, ); }; + 49F6209402BF34C06C90107A /* HeatmapLayerGlobeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70922E748D003176C4A3C60A /* HeatmapLayerGlobeExample.swift */; platformFilters = (ios, ); }; + 4ACB99FAFBF38A425EBD0285 /* ModelLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2D98F58F756D035C98B1F39 /* ModelLayerExample.swift */; platformFilters = (ios, ); }; 4E64A70408A69F2BC9F70610 /* CustomGeometrySourceExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DED80ACD1618F8EE8F95A4A /* CustomGeometrySourceExample.swift */; }; - 4EF3E4C342C3F8ED5BF6C332 /* ViewAnnotationMarkerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1317C28ACDAC187017096A99 /* ViewAnnotationMarkerExample.swift */; platformFilter = ios; }; + 4EF3E4C342C3F8ED5BF6C332 /* ViewAnnotationMarkerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1317C28ACDAC187017096A99 /* ViewAnnotationMarkerExample.swift */; platformFilters = (ios, ); }; 50641F1F3A58B85873E2E5B8 /* AttributionDialogueExamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A77AEDBF679F223D4412FEE /* AttributionDialogueExamples.swift */; }; - 556C8423BA408C7FF54BB5DA /* AnimateLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61A7965C46F2F371AA940A99 /* AnimateLayerExample.swift */; platformFilter = ios; }; + 556C8423BA408C7FF54BB5DA /* AnimateLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61A7965C46F2F371AA940A99 /* AnimateLayerExample.swift */; platformFilters = (ios, ); }; 560D4A0D2C704ECC346D8B5F /* fragment-realestate-NY.json in Resources */ = {isa = PBXBuildFile; fileRef = 50618B3CF42CCF735CCAE9B4 /* fragment-realestate-NY.json */; }; - 56446E388868862E2BB80F4D /* ViewAnnotationWithPointAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB726A94B069761528B57EC8 /* ViewAnnotationWithPointAnnotationExample.swift */; platformFilter = ios; }; - 5A28C124249725578389175A /* ColorExpressionExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D9B2D532D2F54C6C40DA466 /* ColorExpressionExample.swift */; platformFilter = ios; }; + 56446E388868862E2BB80F4D /* ViewAnnotationWithPointAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB726A94B069761528B57EC8 /* ViewAnnotationWithPointAnnotationExample.swift */; platformFilters = (ios, ); }; + 5A28C124249725578389175A /* ColorExpressionExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D9B2D532D2F54C6C40DA466 /* ColorExpressionExample.swift */; platformFilters = (ios, ); }; 5A68CBA756780F7DE8F7BDCC /* radar3.gif in Resources */ = {isa = PBXBuildFile; fileRef = 24FD45C982E4403DA3BD241A /* radar3.gif */; }; 5A6D7B2A302A6555FE23FF80 /* blueprint_style.json in Resources */ = {isa = PBXBuildFile; fileRef = 989F5AB9D5D8AD39D21327A1 /* blueprint_style.json */; }; 5B2CE02503AF44EBC86FE884 /* MapboxMaps in Frameworks */ = {isa = PBXBuildFile; productRef = 0AF5F744C6369BF1FB233FB6 /* MapboxMaps */; }; - 5DBD7C52D21C20D89418CAA6 /* StandardStyleInteractionsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876F115BD6EE6C1456433593 /* StandardStyleInteractionsExample.swift */; platformFilter = ios; }; + 5DBD7C52D21C20D89418CAA6 /* StandardStyleInteractionsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876F115BD6EE6C1456433593 /* StandardStyleInteractionsExample.swift */; platformFilters = (ios, ); }; 5E508E47388A646B4F74DD0B /* AnnotationsOrderTestExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3595A6E8FB1FD9F41DEB5C6F /* AnnotationsOrderTestExample.swift */; }; 5F2AD73C8104089C9291574E /* GeofencingUserLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3A816C6E4D7A0A532EEE84 /* GeofencingUserLocation.swift */; }; 5F537B052041931CB507E12B /* ViewportPlayground.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE863B179BF4F740C36D185E /* ViewportPlayground.swift */; }; 5F556CB71C442EC2A8C2E229 /* VisionOSMain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96B0E9086FE939F5D723136D /* VisionOSMain.swift */; platformFilters = (xros, ); }; - 5FF3E34B523C39A404154BF7 /* OfflineRegionManagerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1229327C13654C370B5641FC /* OfflineRegionManagerExample.swift */; platformFilter = ios; }; - 60A1572CCF5763FA3C946B89 /* Custom2DPuckExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 262AD875661BAB5564084A9E /* Custom2DPuckExample.swift */; platformFilter = ios; }; + 5FF3E34B523C39A404154BF7 /* OfflineRegionManagerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1229327C13654C370B5641FC /* OfflineRegionManagerExample.swift */; platformFilters = (ios, ); }; + 60A1572CCF5763FA3C946B89 /* Custom2DPuckExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 262AD875661BAB5564084A9E /* Custom2DPuckExample.swift */; platformFilters = (ios, ); }; 61B79A9069DCE6865E43E261 /* radar4.gif in Resources */ = {isa = PBXBuildFile; fileRef = 876CE24F4E565ED342DDDCD6 /* radar4.gif */; }; - 634BA74F4E553C53EE906F5A /* OfflineManagerExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 000D0E4CEFB6D5AF02518807 /* OfflineManagerExample.storyboard */; platformFilter = ios; }; + 634BA74F4E553C53EE906F5A /* OfflineManagerExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 000D0E4CEFB6D5AF02518807 /* OfflineManagerExample.storyboard */; platformFilters = (ios, ); }; + 644ECC7D6042C5F77BC8FC02 /* ChatBlocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87BAB3DDE74FE28388B25CDE /* ChatBlocks.swift */; platformFilters = (ios, ); }; 64F4FA139388DB34564AD42D /* CLLocationCoordinate2D+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 455C0B9F01316D0FF38ED62B /* CLLocationCoordinate2D+Random.swift */; }; - 655105BD0FAFF4C4BA65DC32 /* ExamplesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE19F00E87B31FDE5481D56 /* ExamplesTests.swift */; platformFilter = ios; }; - 65E9F2B993AEB394FC2D0080 /* ColorThemeMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50F519EC4AF0B4BEE0FDCABC /* ColorThemeMapExample.swift */; platformFilter = ios; }; - 6661DB69D4980E24BCA18AB2 /* PolygonAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DCBE4524A8793B4DE950533 /* PolygonAnnotationExample.swift */; platformFilter = ios; }; - 68FD9E1F4606B2729BA1E6DC /* SnapshotterExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588FD640D91E9DD366703F7B /* SnapshotterExample.swift */; platformFilter = ios; }; - 6B040F65241ABF600D70D14D /* Custom3DPuckExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C957F9CA07061B793C2DD4A /* Custom3DPuckExample.swift */; platformFilter = ios; }; - 7036A19FCD2CCE85BDDF4E00 /* TrackingModeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F5E598A16FA446F583344CB /* TrackingModeExample.swift */; platformFilter = ios; }; - 7350DF212DFCC73A00B47542 /* MarkersExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7350DF1E2DFCC73A00B47542 /* MarkersExample.swift */; }; - 7352DDB22DD7E9EE000E3000 /* StudioStyleExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7352DDB02DD7E9EE000E3000 /* StudioStyleExample.swift */; }; - 7365170E39A459EB4DFA198B /* ExamplesUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE18E37A8652B4807D2459F1 /* ExamplesUITests.swift */; platformFilter = ios; }; - 74C285362E7D4B0100A4A5B8 /* ExamplesRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C285352E7D4B0100A4A5B8 /* ExamplesRootView.swift */; }; - 74C285502E7D4B1800A4A5B8 /* style.json in Resources */ = {isa = PBXBuildFile; fileRef = 74C285462E7D4B1800A4A5B8 /* style.json */; }; - 74C285512E7D4B1800A4A5B8 /* VisitManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C2853F2E7D4B1800A4A5B8 /* VisitManager.swift */; }; - 74C285522E7D4B1800A4A5B8 /* PinPoweredMapConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C285382E7D4B1800A4A5B8 /* PinPoweredMapConstants.swift */; }; - 74C285562E7D4B1800A4A5B8 /* POICategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C2853E2E7D4B1800A4A5B8 /* POICategory.swift */; }; - 74C285582E7D4B1800A4A5B8 /* FeatureDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C2853B2E7D4B1800A4A5B8 /* FeatureDetails.swift */; }; - 74C285592E7D4B1800A4A5B8 /* FavoritesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C2853A2E7D4B1800A4A5B8 /* FavoritesManager.swift */; }; - 74C2855A2E7D4B1800A4A5B8 /* FilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C285432E7D4B1800A4A5B8 /* FilterView.swift */; }; - 74C2855B2E7D4B1800A4A5B8 /* SegmentedToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C285442E7D4B1800A4A5B8 /* SegmentedToggleView.swift */; }; - 74C2855C2E7D4B1800A4A5B8 /* OpenHours+Formatting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C2853D2E7D4B1800A4A5B8 /* OpenHours+Formatting.swift */; }; - 74C2855D2E7D4B1800A4A5B8 /* DetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C285422E7D4B1800A4A5B8 /* DetailsView.swift */; }; - 74C2855E2E7D4B1800A4A5B8 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C285372E7D4B1800A4A5B8 /* Extensions.swift */; }; - 74C2855F2E7D4B1800A4A5B8 /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C2853C2E7D4B1800A4A5B8 /* NetworkService.swift */; }; - 74C285602E7D4B1800A4A5B8 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C285412E7D4B1800A4A5B8 /* ContentView.swift */; }; - 74C285622E7D4B1800A4A5B8 /* UseCasesRoot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C2854E2E7D4B1800A4A5B8 /* UseCasesRoot.swift */; }; + 655105BD0FAFF4C4BA65DC32 /* ExamplesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE19F00E87B31FDE5481D56 /* ExamplesTests.swift */; platformFilters = (ios, ); }; + 65E9F2B993AEB394FC2D0080 /* ColorThemeMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50F519EC4AF0B4BEE0FDCABC /* ColorThemeMapExample.swift */; platformFilters = (ios, ); }; + 6661DB69D4980E24BCA18AB2 /* PolygonAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DCBE4524A8793B4DE950533 /* PolygonAnnotationExample.swift */; platformFilters = (ios, ); }; + 68FD9E1F4606B2729BA1E6DC /* SnapshotterExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588FD640D91E9DD366703F7B /* SnapshotterExample.swift */; platformFilters = (ios, ); }; + 6B040F65241ABF600D70D14D /* Custom3DPuckExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C957F9CA07061B793C2DD4A /* Custom3DPuckExample.swift */; platformFilters = (ios, ); }; + 7036A19FCD2CCE85BDDF4E00 /* TrackingModeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F5E598A16FA446F583344CB /* TrackingModeExample.swift */; platformFilters = (ios, ); }; + 7365170E39A459EB4DFA198B /* ExamplesUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE18E37A8652B4807D2459F1 /* ExamplesUITests.swift */; platformFilters = (ios, ); }; 759D42AA5FE93B6FA9DFADF5 /* LocationOverrideExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45B39AE24486FED5ED30392D /* LocationOverrideExample.swift */; }; - 7686448F8648BECC75A912B6 /* DashboardCarPlaySceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 913B4773A82AD6357D6AAEA1 /* DashboardCarPlaySceneDelegate.swift */; platformFilter = ios; }; + 7686448F8648BECC75A912B6 /* DashboardCarPlaySceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 913B4773A82AD6357D6AAEA1 /* DashboardCarPlaySceneDelegate.swift */; platformFilters = (ios, ); }; 79843B780E7C5DC68433B745 /* SnapshotMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5A8729C9AEA4711B56B5F0 /* SnapshotMapExample.swift */; }; - 79B889CF23A3C0A5EA7F6ADD /* ApplicationCarPlaySceneDelegage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3F37CAE7A0B66BE429525C /* ApplicationCarPlaySceneDelegage.swift */; platformFilter = ios; }; - 7B9835E597E0B2655E181A48 /* ExampleTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0A6063E57EC170F558A3F74 /* ExampleTableViewController.swift */; platformFilter = ios; }; + 79B889CF23A3C0A5EA7F6ADD /* ApplicationCarPlaySceneDelegage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3F37CAE7A0B66BE429525C /* ApplicationCarPlaySceneDelegage.swift */; platformFilters = (ios, ); }; + 7B9835E597E0B2655E181A48 /* ExampleTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0A6063E57EC170F558A3F74 /* ExampleTableViewController.swift */; platformFilters = (ios, ); }; 7E84D4D6459049E452808C91 /* AnnotationsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = F890746B56E20150A053B41B /* AnnotationsExample.swift */; }; 7EDF38D2E9CDE489F320977E /* SwiftUIRoot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CEF3209781923E53974F20 /* SwiftUIRoot.swift */; }; 803CCCEA28B209111BE0786F /* sportcar.glb in Resources */ = {isa = PBXBuildFile; fileRef = C47942F80A50166AC823012B /* sportcar.glb */; }; - 821807D61D52F0E60925BCD4 /* CameraAnimationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A0CCD53B02FF2BAD830A2 /* CameraAnimationExample.swift */; platformFilter = ios; }; + 821807D61D52F0E60925BCD4 /* CameraAnimationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A0CCD53B02FF2BAD830A2 /* CameraAnimationExample.swift */; platformFilters = (ios, ); }; 83DCCC7FEFF6D94D3DF0B587 /* 34M_17.dae in Resources */ = {isa = PBXBuildFile; fileRef = 28CE7DA39D29A8311E4A58A4 /* 34M_17.dae */; }; 8418F1775D49F5A66489B988 /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F393DF039D7AD2F35C8DE4CE /* ViewExtensions.swift */; }; + 846C9292A31ACCFF39356F7C /* MapResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB46F3DA5A3B0BFCA7B21A5C /* MapResponse.swift */; platformFilters = (ios, ); }; 854CE1A84AADF6FBB232CB5F /* FeaturesQueryExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6B06A1D70F479D8DC5C375A /* FeaturesQueryExample.swift */; }; 85AA0D942D4C0E218D87F7D8 /* GradientLine.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 2DD8B1D25297B7433F4AAF35 /* GradientLine.geojson */; }; - 85E0F727CBB3374D3EF499C3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 55FDF5B3329BFD6E6C346D80 /* LaunchScreen.storyboard */; platformFilter = ios; }; - 86AED5DD9F8C8BB2C9736483 /* ResizeMapViewExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E54D3F5943238258AA0A9BE /* ResizeMapViewExample.swift */; platformFilter = ios; }; + 85E0F727CBB3374D3EF499C3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 55FDF5B3329BFD6E6C346D80 /* LaunchScreen.storyboard */; platformFilters = (ios, ); }; + 86AED5DD9F8C8BB2C9736483 /* ResizeMapViewExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E54D3F5943238258AA0A9BE /* ResizeMapViewExample.swift */; platformFilters = (ios, ); }; 8913C410B72BE0C40EE02BB9 /* MapSettingsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6E875420B5C674C8CCAB9B1 /* MapSettingsExample.swift */; }; - 8B4085733CCABE3BE3D16F7E /* LayerPositionExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99610E884967673F7F28D2B2 /* LayerPositionExample.swift */; platformFilter = ios; }; + 8B4085733CCABE3BE3D16F7E /* LayerPositionExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99610E884967673F7F28D2B2 /* LayerPositionExample.swift */; platformFilters = (ios, ); }; 8F0BEA796867B64E48A1B328 /* StandardStyleLocationsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD6F1212BB2453DBFECE12F2 /* StandardStyleLocationsExample.swift */; }; - 902FD51EC410A1E8BD88941D /* NavigationSimulatorExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A090EE21C9A65BE2697868F /* NavigationSimulatorExample.swift */; platformFilter = ios; }; - 918F4BDCC25819DD68BC9518 /* LayerSlotExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D058C94675BB58AE74392829 /* LayerSlotExample.swift */; platformFilter = ios; }; - 94DB7E8C829041DC5F5B2300 /* InstrumentClusterCarPlaySceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AD7661708AEADD25AB726B4 /* InstrumentClusterCarPlaySceneDelegate.swift */; platformFilter = ios; }; - 9A403D6AB6D6336E212726C5 /* CameraAnimatorsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDABBED8502001D17EF30F35 /* CameraAnimatorsExample.swift */; platformFilter = ios; }; - 9DFE9DDE63B78393031C843E /* Examples.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B30F4697545D9F02DD4425D /* Examples.swift */; platformFilter = ios; }; - A3D7C0836BFE6FEB40C3C15A /* BasicLocationPulsingExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC98E9169E8E7DFE8DC1CB27 /* BasicLocationPulsingExample.swift */; platformFilter = ios; }; - A6389C28B8AAC39878591AD0 /* PitchAndDistanceExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A5C0A3C44715B96D646ACB7 /* PitchAndDistanceExample.swift */; platformFilter = ios; }; + 902FD51EC410A1E8BD88941D /* NavigationSimulatorExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A090EE21C9A65BE2697868F /* NavigationSimulatorExample.swift */; platformFilters = (ios, ); }; + 918F4BDCC25819DD68BC9518 /* LayerSlotExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D058C94675BB58AE74392829 /* LayerSlotExample.swift */; platformFilters = (ios, ); }; + 94DB7E8C829041DC5F5B2300 /* InstrumentClusterCarPlaySceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AD7661708AEADD25AB726B4 /* InstrumentClusterCarPlaySceneDelegate.swift */; platformFilters = (ios, ); }; + 9A403D6AB6D6336E212726C5 /* CameraAnimatorsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDABBED8502001D17EF30F35 /* CameraAnimatorsExample.swift */; platformFilters = (ios, ); }; + 9DFE9DDE63B78393031C843E /* Examples.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B30F4697545D9F02DD4425D /* Examples.swift */; platformFilters = (ios, ); }; + A11DD4355B8BD46C54C44F7D /* ChatDemoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F04A7BB67515E770047ACAAB /* ChatDemoView.swift */; platformFilters = (ios, ); }; + A1B48F80CCE951F6F2265A68 /* VisitManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392F51AB0D757DDC38B225B2 /* VisitManager.swift */; platformFilters = (ios, ); }; + A1FABB64B1C3EEC9E5AF06A0 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFA740B5C42BD38EAD2AE99E /* ContentView.swift */; platformFilters = (ios, ); }; + A21BC47B5210D7678BA464B9 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 813435AB27599000EE5CC3DF /* README.md */; platformFilters = (ios, ); }; + A3D7C0836BFE6FEB40C3C15A /* BasicLocationPulsingExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC98E9169E8E7DFE8DC1CB27 /* BasicLocationPulsingExample.swift */; platformFilters = (ios, ); }; + A4BB323F889808F290E3F59A /* FeatureDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8758A48E8F239E39E2CB50 /* FeatureDetails.swift */; platformFilters = (ios, ); }; + A6389C28B8AAC39878591AD0 /* PitchAndDistanceExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A5C0A3C44715B96D646ACB7 /* PitchAndDistanceExample.swift */; platformFilters = (ios, ); }; A6A68B4ED674A924ACBD8FA2 /* UIColor+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = F000C4D3B6FC70FA9607E3A3 /* UIColor+Random.swift */; }; - A972D3306BC53DEC9798C60D /* ExternalVectorSourceExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133E4EABC7540ED460F08B8F /* ExternalVectorSourceExample.swift */; platformFilter = ios; }; + A972D3306BC53DEC9798C60D /* ExternalVectorSourceExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133E4EABC7540ED460F08B8F /* ExternalVectorSourceExample.swift */; platformFilters = (ios, ); }; AD0922FA7F69AEE4C23F2351 /* InteractionsPlayground.swift in Sources */ = {isa = PBXBuildFile; fileRef = 388932B3A65BB7E9B59FDBE0 /* InteractionsPlayground.swift */; }; - AE51E276DCD8CF89AB339224 /* LongTapAnimationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DB76F486D80FED88678B04D /* LongTapAnimationExample.swift */; platformFilter = ios; }; - AE6E90DB7B6DA4580C2DAB59 /* FrameViewAnnotationsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC0F09FF1EF1A88BC1C6545 /* FrameViewAnnotationsExample.swift */; platformFilter = ios; }; + AE51E276DCD8CF89AB339224 /* LongTapAnimationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DB76F486D80FED88678B04D /* LongTapAnimationExample.swift */; platformFilters = (ios, ); }; + AE6E90DB7B6DA4580C2DAB59 /* FrameViewAnnotationsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC0F09FF1EF1A88BC1C6545 /* FrameViewAnnotationsExample.swift */; platformFilters = (ios, ); }; B304BACFCD08802A740E8919 /* PuckPlayground.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0CC67084BA1191D0B179A94 /* PuckPlayground.swift */; }; - B53EA441C54E2B680A7E99F0 /* BuildingExtrusionsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFF80A86D7DEF54E0A7256DF /* BuildingExtrusionsExample.swift */; platformFilter = ios; }; - B9B1EE72E6203358F2785916 /* IconSizeChangeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6F479FB7FFD90FA95F400E /* IconSizeChangeExample.swift */; platformFilter = ios; }; - B9D4B9C3042383738AB5B667 /* DebugMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59EF8798357CF55109A4E56 /* DebugMapExample.swift */; platformFilter = ios; }; - BD99E89F050E7D93846147FF /* ViewAnnotationBasicExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3C6CF222C8EE9AE69563E39 /* ViewAnnotationBasicExample.swift */; platformFilter = ios; }; - BDABAAC8727AF67A0DEE2020 /* AnimateGeoJSONLineExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7274E152F7FBB7894447F822 /* AnimateGeoJSONLineExample.swift */; platformFilter = ios; }; - C04160BF66055F7DE9315395 /* Lights3DExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A8CD8A69D3429FCF8ACBDD /* Lights3DExample.swift */; platformFilter = ios; }; - C315E1C61D222296FE0244FC /* VoiceOverAccessibilityExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D91A8B64951711546335530 /* VoiceOverAccessibilityExample.swift */; platformFilter = ios; }; + B53EA441C54E2B680A7E99F0 /* BuildingExtrusionsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFF80A86D7DEF54E0A7256DF /* BuildingExtrusionsExample.swift */; platformFilters = (ios, ); }; + B9B1EE72E6203358F2785916 /* IconSizeChangeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6F479FB7FFD90FA95F400E /* IconSizeChangeExample.swift */; platformFilters = (ios, ); }; + B9D4B9C3042383738AB5B667 /* DebugMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59EF8798357CF55109A4E56 /* DebugMapExample.swift */; platformFilters = (ios, ); }; + BD99E89F050E7D93846147FF /* ViewAnnotationBasicExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3C6CF222C8EE9AE69563E39 /* ViewAnnotationBasicExample.swift */; platformFilters = (ios, ); }; + BDABAAC8727AF67A0DEE2020 /* AnimateGeoJSONLineExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7274E152F7FBB7894447F822 /* AnimateGeoJSONLineExample.swift */; platformFilters = (ios, ); }; + BDD21DF28979B09014A0C7C3 /* style.json in Resources */ = {isa = PBXBuildFile; fileRef = BAE5B425CF6F5DEB88A73D45 /* style.json */; platformFilters = (ios, ); }; + C04160BF66055F7DE9315395 /* Lights3DExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A8CD8A69D3429FCF8ACBDD /* Lights3DExample.swift */; platformFilters = (ios, ); }; + C315E1C61D222296FE0244FC /* VoiceOverAccessibilityExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D91A8B64951711546335530 /* VoiceOverAccessibilityExample.swift */; platformFilters = (ios, ); }; C327DBA17D79D5DFBBE84BE0 /* ButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 858990E6795D3162A941E82C /* ButtonStyle.swift */; }; - C664365A373267B564EC84EE /* CombineExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DBF737C9C7FBF46BB5F7B78 /* CombineExample.swift */; platformFilter = ios; }; + C3AE1FF03DC96EB1D62171CE /* DetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DCA3CFE97357EF7D190E2A2 /* DetailsView.swift */; platformFilters = (ios, ); }; + C664365A373267B564EC84EE /* CombineExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DBF737C9C7FBF46BB5F7B78 /* CombineExample.swift */; platformFilters = (ios, ); }; C6E1E615C75960D1BD1755A9 /* annotations.json in Resources */ = {isa = PBXBuildFile; fileRef = B05B410135D0B466B73C0765 /* annotations.json */; }; C940835B030A20F0C5BC31AD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B31A932A62B6142FE20C39DF /* Assets.xcassets */; }; - C953F022C91FCA59CFF06BE9 /* SymbolClusteringExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FD38B8D20C0695A03AE4E68 /* SymbolClusteringExample.swift */; platformFilter = ios; }; - CA2209956E93ECB18C4C9DEC /* CircleAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1658938A5F0908D151A9B9 /* CircleAnnotationExample.swift */; platformFilter = ios; }; + C953F022C91FCA59CFF06BE9 /* SymbolClusteringExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FD38B8D20C0695A03AE4E68 /* SymbolClusteringExample.swift */; platformFilters = (ios, ); }; + CA2209956E93ECB18C4C9DEC /* CircleAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1658938A5F0908D151A9B9 /* CircleAnnotationExample.swift */; platformFilters = (ios, ); }; CBCC60FF68BE9754DE0C6AF3 /* DynamicStylingExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61CC711054A032EE0446036 /* DynamicStylingExample.swift */; }; - CBD01BBA4E78796827A6E52D /* RuntimeSlotsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AB4D202692A8951BAF2D57 /* RuntimeSlotsExample.swift */; platformFilter = ios; }; - CF5C5513D659D4981706DDEC /* ViewAnnotationAnimationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33E5647315A2357320BCF575 /* ViewAnnotationAnimationExample.swift */; platformFilter = ios; }; - D27F0573360A7234BCF7AB6C /* AnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC8E7B565C817D872CFBCAD /* AnnotationView.swift */; platformFilter = ios; }; - D4FFFAE49D4B805BDA014AAD /* BasicMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 257F10278F5E580C7ABA5570 /* BasicMapExample.swift */; platformFilter = ios; }; - D62F69A9BD802A1926B92968 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BB52F9D3A810B1A9CEC832C /* Example.swift */; platformFilter = ios; }; - D63431CA78A557A0FB92177A /* FeatureStateExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3FA795972BB141B9C582ED0 /* FeatureStateExample.swift */; platformFilter = ios; }; - D77EEB488CFD90F602077E8F /* CustomPointAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D5DB9BD5E97D3C0080EC5D3 /* CustomPointAnnotationExample.swift */; platformFilter = ios; }; + CBD01BBA4E78796827A6E52D /* RuntimeSlotsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AB4D202692A8951BAF2D57 /* RuntimeSlotsExample.swift */; platformFilters = (ios, ); }; + CCA7663D9A74FFC63606C10F /* ChatMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B637A7DA37BDB117CAA6776F /* ChatMapView.swift */; platformFilters = (ios, ); }; + CF5C5513D659D4981706DDEC /* ViewAnnotationAnimationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33E5647315A2357320BCF575 /* ViewAnnotationAnimationExample.swift */; platformFilters = (ios, ); }; + D27F0573360A7234BCF7AB6C /* AnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC8E7B565C817D872CFBCAD /* AnnotationView.swift */; platformFilters = (ios, ); }; + D4FFFAE49D4B805BDA014AAD /* BasicMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 257F10278F5E580C7ABA5570 /* BasicMapExample.swift */; platformFilters = (ios, ); }; + D62F69A9BD802A1926B92968 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BB52F9D3A810B1A9CEC832C /* Example.swift */; platformFilters = (ios, ); }; + D63431CA78A557A0FB92177A /* FeatureStateExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3FA795972BB141B9C582ED0 /* FeatureStateExample.swift */; platformFilters = (ios, ); }; + D77EEB488CFD90F602077E8F /* CustomPointAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D5DB9BD5E97D3C0080EC5D3 /* CustomPointAnnotationExample.swift */; platformFilters = (ios, ); }; + D9173F2FBD6C4C768A4354D9 /* DemoData.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACE37BACAE414412B14318A9 /* DemoData.swift */; platformFilters = (ios, ); }; D9297596469F9B31C2350B43 /* UIViewController+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A615EFC3D6CF2A25C9864086 /* UIViewController+Extensions.swift */; }; - D94672F30272E31087AB5DDD /* NavigationSimulator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FC5980DD30479F30127BA71 /* NavigationSimulator.swift */; platformFilter = ios; }; + D94672F30272E31087AB5DDD /* NavigationSimulator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FC5980DD30479F30127BA71 /* NavigationSimulator.swift */; platformFilters = (ios, ); }; D98624793DA36578289F02FF /* MapScrollExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65535FB9F190778001AB847A /* MapScrollExample.swift */; }; DA109856E64BBD8071DF0619 /* ColorThemeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DD4C2F0049E575A6B5BF66 /* ColorThemeExample.swift */; }; - DA69CB0BD9F0DDA0FD1387B0 /* DataJoinExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87D0CD9C2D04EA5B12E7F84C /* DataJoinExample.swift */; platformFilter = ios; }; + DA69CB0BD9F0DDA0FD1387B0 /* DataJoinExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87D0CD9C2D04EA5B12E7F84C /* DataJoinExample.swift */; platformFilters = (ios, ); }; DCA54F7383085A8FD822F0BF /* GeofencingPlayground.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7613C4E19DCD679A2620223C /* GeofencingPlayground.swift */; }; - DFC64A62538E787D57B6514D /* DynamicViewAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3333EF3E0F1C789809F385AF /* DynamicViewAnnotationExample.swift */; platformFilter = ios; }; + DFC64A62538E787D57B6514D /* DynamicViewAnnotationExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3333EF3E0F1C789809F385AF /* DynamicViewAnnotationExample.swift */; platformFilters = (ios, ); }; + E0485890235BC171A7541F7E /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01BB65B1AF672B069DC6EF49 /* NetworkService.swift */; platformFilters = (ios, ); }; E121F023995CCF2F3A65BC2A /* LocateMeExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62DA0608D44DEF6C4A82777C /* LocateMeExample.swift */; }; + E1BCB5B22002E1700779B596 /* MarkersExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = F26EC4DB977D4C2DDBCA1924 /* MarkersExample.swift */; }; E2617ACF1E2367C012A87CD1 /* ViewAnnotationsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AACE9E33102AE90526569F /* ViewAnnotationsExample.swift */; }; - E2CD9B66367265509567A4E3 /* .swiftlint.yml in Resources */ = {isa = PBXBuildFile; fileRef = 524D79FF01638A0E8A3C1248 /* .swiftlint.yml */; platformFilter = ios; }; - E5A3B926DD7E451F1E660547 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 274D496EC7E47F63FD0D1337 /* AppDelegate.swift */; platformFilter = ios; }; - E6B722A64C15CE701287B464 /* OfflineManagerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 083C452C7342E73F6F16A83C /* OfflineManagerExample.swift */; platformFilter = ios; }; - E8CEBC697D805204F129C4FB /* RasterTileSourceExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FA937DC17F7EA27931763A /* RasterTileSourceExample.swift */; platformFilter = ios; }; + E2CD9B66367265509567A4E3 /* .swiftlint.yml in Resources */ = {isa = PBXBuildFile; fileRef = 524D79FF01638A0E8A3C1248 /* .swiftlint.yml */; platformFilters = (ios, ); }; + E5A3B926DD7E451F1E660547 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 274D496EC7E47F63FD0D1337 /* AppDelegate.swift */; platformFilters = (ios, ); }; + E5DF142BE2F9305CD80225C3 /* UseCasesRoot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35A65C4EAEFCD36C79095678 /* UseCasesRoot.swift */; platformFilters = (ios, ); }; + E63677D643F7C4793456A712 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E08A6B3D9881F4A0A7C049A /* Extensions.swift */; platformFilters = (ios, ); }; + E64BDF1718037F0132FD7A2E /* StudioStyleExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A34BE6CA60D208A76C03224F /* StudioStyleExample.swift */; }; + E6B722A64C15CE701287B464 /* OfflineManagerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 083C452C7342E73F6F16A83C /* OfflineManagerExample.swift */; platformFilters = (ios, ); }; + E8CEBC697D805204F129C4FB /* RasterTileSourceExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FA937DC17F7EA27931763A /* RasterTileSourceExample.swift */; platformFilters = (ios, ); }; EB39F159A9F5DFAB935F629D /* SwiftExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26964B05A794CC808C594AB5 /* SwiftExtensions.swift */; }; - EE4064D753E360A6A6AC5BAC /* CustomLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06955521CCC52B47AAB475F4 /* CustomLayerExample.swift */; platformFilter = ios; }; - F0502A1ACF0AED218F8184AB /* CarPlayMapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE6CEA9899CC0EC4F4381E19 /* CarPlayMapViewController.swift */; platformFilter = ios; }; - F2B385831A78B3EE16BFEA69 /* SnapshotterCoreGraphicsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D77368780E4DBCCFB2CBD400 /* SnapshotterCoreGraphicsExample.swift */; platformFilter = ios; }; - F476D12AC7B4347AA55BEC4C /* AnimateImageLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A471857797898860C3A8F685 /* AnimateImageLayerExample.swift */; platformFilter = ios; }; - F48BF087BB56B0A44D8B16F3 /* PointAnnotationClusteringExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8359ECB5024BEF3722C3CA1 /* PointAnnotationClusteringExample.swift */; platformFilter = ios; }; + EE4064D753E360A6A6AC5BAC /* CustomLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06955521CCC52B47AAB475F4 /* CustomLayerExample.swift */; platformFilters = (ios, ); }; + F0502A1ACF0AED218F8184AB /* CarPlayMapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE6CEA9899CC0EC4F4381E19 /* CarPlayMapViewController.swift */; platformFilters = (ios, ); }; + F2B385831A78B3EE16BFEA69 /* SnapshotterCoreGraphicsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = D77368780E4DBCCFB2CBD400 /* SnapshotterCoreGraphicsExample.swift */; platformFilters = (ios, ); }; + F476D12AC7B4347AA55BEC4C /* AnimateImageLayerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A471857797898860C3A8F685 /* AnimateImageLayerExample.swift */; platformFilters = (ios, ); }; + F48BF087BB56B0A44D8B16F3 /* PointAnnotationClusteringExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8359ECB5024BEF3722C3CA1 /* PointAnnotationClusteringExample.swift */; platformFilters = (ios, ); }; F492E2C8D35572B4CF48FE68 /* RasterParticleExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CD7ADCCB774239AA0090C46 /* RasterParticleExample.swift */; }; - F5311222553DA118AC571D82 /* MultipleGeometriesExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7A7586D05B960928AB17A0D /* MultipleGeometriesExample.swift */; platformFilter = ios; }; + F5311222553DA118AC571D82 /* MultipleGeometriesExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7A7586D05B960928AB17A0D /* MultipleGeometriesExample.swift */; platformFilters = (ios, ); }; F5E96E5798947CA56FD77CF9 /* Fire_Hydrants.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 02DA2CC04980F807255D646B /* Fire_Hydrants.geojson */; }; F613749DCDDDDC6F041032A0 /* SimpleMapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78811E5A3185D2D32495870A /* SimpleMapExample.swift */; }; F6E3EF9BE4F1D2F58DE1BED2 /* radar1.gif in Resources */ = {isa = PBXBuildFile; fileRef = 8BD8BADE1108B0D380D9BEF8 /* radar1.gif */; }; + F995320A3A3FC4C824AF8484 /* ChatModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37917846C6F0D8FA816AFF0E /* ChatModel.swift */; platformFilters = (ios, ); }; FA077DC5A6CF295906536DF1 /* PrecipitationsExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDBCA79855B58FE84333124 /* PrecipitationsExample.swift */; }; FA53EEA88DB29D4D5AC58514 /* StandardInteractiveFeaturesExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FBAFDF929532EDB964786F4 /* StandardInteractiveFeaturesExample.swift */; }; - FDA4B57BE32D92BB57A5B7E6 /* FeaturesAtPointExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6239A5CDA61892902765B843 /* FeaturesAtPointExample.swift */; platformFilter = ios; }; + FDA4B57BE32D92BB57A5B7E6 /* FeaturesAtPointExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6239A5CDA61892902765B843 /* FeaturesAtPointExample.swift */; platformFilters = (ios, ); }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -197,9 +206,14 @@ /* Begin PBXFileReference section */ 000D0E4CEFB6D5AF02518807 /* OfflineManagerExample.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = OfflineManagerExample.storyboard; sourceTree = ""; }; - 02DA2CC04980F807255D646B /* Fire_Hydrants.geojson */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fire_Hydrants.geojson; sourceTree = ""; }; + 010E21E88FA01F9AC895BF28 /* PinPoweredMapConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PinPoweredMapConstants.swift; sourceTree = ""; }; + 01BB65B1AF672B069DC6EF49 /* NetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; }; + 02DA2CC04980F807255D646B /* Fire_Hydrants.geojson */ = {isa = PBXFileReference; path = Fire_Hydrants.geojson; sourceTree = ""; }; + 046682CA678CD79451761CFD /* ExamplesRootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExamplesRootView.swift; sourceTree = ""; }; 06955521CCC52B47AAB475F4 /* CustomLayerExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomLayerExample.swift; sourceTree = ""; }; + 076D23DADD44F2CA269F947E /* FavoritesManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritesManager.swift; sourceTree = ""; }; 083C452C7342E73F6F16A83C /* OfflineManagerExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OfflineManagerExample.swift; sourceTree = ""; }; + 09006C566A72E52201CA7EFB /* SegmentedToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedToggleView.swift; sourceTree = ""; }; 09BBD2991186A6B98F730454 /* ElevatedLineMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ElevatedLineMapView.swift; sourceTree = ""; }; 0A5C0A3C44715B96D646ACB7 /* PitchAndDistanceExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PitchAndDistanceExample.swift; sourceTree = ""; }; 0AD7661708AEADD25AB726B4 /* InstrumentClusterCarPlaySceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstrumentClusterCarPlaySceneDelegate.swift; sourceTree = ""; }; @@ -223,23 +237,29 @@ 29DD4C2F0049E575A6B5BF66 /* ColorThemeExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorThemeExample.swift; sourceTree = ""; }; 2C957F9CA07061B793C2DD4A /* Custom3DPuckExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Custom3DPuckExample.swift; sourceTree = ""; }; 2D91A8B64951711546335530 /* VoiceOverAccessibilityExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceOverAccessibilityExample.swift; sourceTree = ""; }; - 2DD8B1D25297B7433F4AAF35 /* GradientLine.geojson */ = {isa = PBXFileReference; lastKnownFileType = text; path = GradientLine.geojson; sourceTree = ""; }; + 2DD8B1D25297B7433F4AAF35 /* GradientLine.geojson */ = {isa = PBXFileReference; path = GradientLine.geojson; sourceTree = ""; }; 2F6B4718F05FB1E6736EA1FF /* CustomRasterSourceExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomRasterSourceExample.swift; sourceTree = ""; }; 3333EF3E0F1C789809F385AF /* DynamicViewAnnotationExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicViewAnnotationExample.swift; sourceTree = ""; }; 33E5647315A2357320BCF575 /* ViewAnnotationAnimationExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewAnnotationAnimationExample.swift; sourceTree = ""; }; 3595A6E8FB1FD9F41DEB5C6F /* AnnotationsOrderTestExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnotationsOrderTestExample.swift; sourceTree = ""; }; + 35A65C4EAEFCD36C79095678 /* UseCasesRoot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UseCasesRoot.swift; sourceTree = ""; }; 370DFCA52EB6C7F119BF81DA /* MapEventsExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapEventsExample.swift; sourceTree = ""; }; + 37917846C6F0D8FA816AFF0E /* ChatModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatModel.swift; sourceTree = ""; }; 384FD8FC97B9F5011AF4BD61 /* GlobeFlyToExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobeFlyToExample.swift; sourceTree = ""; }; 388932B3A65BB7E9B59FDBE0 /* InteractionsPlayground.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InteractionsPlayground.swift; sourceTree = ""; }; + 392F51AB0D757DDC38B225B2 /* VisitManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VisitManager.swift; sourceTree = ""; }; + 39F277AD62400BB06EF2A9A6 /* OpenHours+Formatting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OpenHours+Formatting.swift"; sourceTree = ""; }; 3BCB1CC4577300FEF4DE017B /* InsetMapExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsetMapExample.swift; sourceTree = ""; }; 3BDE7738CA55957F3FAC3ECE /* LineAnnotationExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineAnnotationExample.swift; sourceTree = ""; }; - 3E2F68B22AFF73A71F86CABC /* ExamplesUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExamplesUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3DCA3CFE97357EF7D190E2A2 /* DetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailsView.swift; sourceTree = ""; }; + 3E2F68B22AFF73A71F86CABC /* ExamplesUITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = ExamplesUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3E3A0CCD53B02FF2BAD830A2 /* CameraAnimationExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraAnimationExample.swift; sourceTree = ""; }; 3F6F479FB7FFD90FA95F400E /* IconSizeChangeExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconSizeChangeExample.swift; sourceTree = ""; }; 3FB717239BBFE5103C1EB1A4 /* AdvancedViewportGesturesExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedViewportGesturesExample.swift; sourceTree = ""; }; 3FC5980DD30479F30127BA71 /* NavigationSimulator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationSimulator.swift; sourceTree = ""; }; - 450C8D5E4B84428FE51BCA97 /* route.geojson */ = {isa = PBXFileReference; lastKnownFileType = text; path = route.geojson; sourceTree = ""; }; + 450C8D5E4B84428FE51BCA97 /* route.geojson */ = {isa = PBXFileReference; path = route.geojson; sourceTree = ""; }; 455C0B9F01316D0FF38ED62B /* CLLocationCoordinate2D+Random.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CLLocationCoordinate2D+Random.swift"; sourceTree = ""; }; + 45A57634C3CF386009792983 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 45B39AE24486FED5ED30392D /* LocationOverrideExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationOverrideExample.swift; sourceTree = ""; }; 46CE3D9C2873C0767DD76D85 /* ClusteringExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClusteringExample.swift; sourceTree = ""; }; 4D5DB9BD5E97D3C0080EC5D3 /* CustomPointAnnotationExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomPointAnnotationExample.swift; sourceTree = ""; }; @@ -250,10 +270,11 @@ 50F519EC4AF0B4BEE0FDCABC /* ColorThemeMapExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorThemeMapExample.swift; sourceTree = ""; }; 524D79FF01638A0E8A3C1248 /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; }; 588FD640D91E9DD366703F7B /* SnapshotterExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotterExample.swift; sourceTree = ""; }; - 590D83805AA598D2B0A7638A /* ExamplesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExamplesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 590D83805AA598D2B0A7638A /* ExamplesTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = ExamplesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 59AACE9E33102AE90526569F /* ViewAnnotationsExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewAnnotationsExample.swift; sourceTree = ""; }; 5C0C8783B2A74AE9DE3F6C32 /* CustomLayerExampleShaders.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = CustomLayerExampleShaders.metal; sourceTree = ""; }; 5C1658938A5F0908D151A9B9 /* CircleAnnotationExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleAnnotationExample.swift; sourceTree = ""; }; + 5FB20C6CE44D70532CC43582 /* POICategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POICategory.swift; sourceTree = ""; }; 5FC0F09FF1EF1A88BC1C6545 /* FrameViewAnnotationsExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameViewAnnotationsExample.swift; sourceTree = ""; }; 60A8CD8A69D3429FCF8ACBDD /* Lights3DExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Lights3DExample.swift; sourceTree = ""; }; 61A7965C46F2F371AA940A99 /* AnimateLayerExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimateLayerExample.swift; sourceTree = ""; }; @@ -269,27 +290,10 @@ 6CD7ADCCB774239AA0090C46 /* RasterParticleExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RasterParticleExample.swift; sourceTree = ""; }; 6D5B23007CF347976470A069 /* Examples-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Examples-Bridging-Header.h"; sourceTree = ""; }; 6DC3D7884D057238010CB6E4 /* PinView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PinView.swift; sourceTree = ""; }; + 6E08A6B3D9881F4A0A7C049A /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; 6E54D3F5943238258AA0A9BE /* ResizeMapViewExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResizeMapViewExample.swift; sourceTree = ""; }; 70922E748D003176C4A3C60A /* HeatmapLayerGlobeExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeatmapLayerGlobeExample.swift; sourceTree = ""; }; 7274E152F7FBB7894447F822 /* AnimateGeoJSONLineExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimateGeoJSONLineExample.swift; sourceTree = ""; }; - 7350DF1E2DFCC73A00B47542 /* MarkersExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkersExample.swift; sourceTree = ""; }; - 7352DDB02DD7E9EE000E3000 /* StudioStyleExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudioStyleExample.swift; sourceTree = ""; }; - 7352DDB42DDB93B5000E3000 /* StudioStyleExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StudioStyleExample.swift; path = "Sources/Examples/SwiftUI Examples/Testing Examples/StudioStyleExample.swift"; sourceTree = ""; }; - 74C285352E7D4B0100A4A5B8 /* ExamplesRootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExamplesRootView.swift; sourceTree = ""; }; - 74C285372E7D4B1800A4A5B8 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; - 74C285382E7D4B1800A4A5B8 /* PinPoweredMapConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PinPoweredMapConstants.swift; sourceTree = ""; }; - 74C2853A2E7D4B1800A4A5B8 /* FavoritesManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritesManager.swift; sourceTree = ""; }; - 74C2853B2E7D4B1800A4A5B8 /* FeatureDetails.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureDetails.swift; sourceTree = ""; }; - 74C2853C2E7D4B1800A4A5B8 /* NetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; }; - 74C2853D2E7D4B1800A4A5B8 /* OpenHours+Formatting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OpenHours+Formatting.swift"; sourceTree = ""; }; - 74C2853E2E7D4B1800A4A5B8 /* POICategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POICategory.swift; sourceTree = ""; }; - 74C2853F2E7D4B1800A4A5B8 /* VisitManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VisitManager.swift; sourceTree = ""; }; - 74C285412E7D4B1800A4A5B8 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - 74C285422E7D4B1800A4A5B8 /* DetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailsView.swift; sourceTree = ""; }; - 74C285432E7D4B1800A4A5B8 /* FilterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilterView.swift; sourceTree = ""; }; - 74C285442E7D4B1800A4A5B8 /* SegmentedToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedToggleView.swift; sourceTree = ""; }; - 74C285462E7D4B1800A4A5B8 /* style.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = style.json; sourceTree = ""; }; - 74C2854E2E7D4B1800A4A5B8 /* UseCasesRoot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UseCasesRoot.swift; sourceTree = ""; }; 75D03F5A3A0E879717BFE421 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; 7613C4E19DCD679A2620223C /* GeofencingPlayground.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeofencingPlayground.swift; sourceTree = ""; }; 78811E5A3185D2D32495870A /* SimpleMapExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleMapExample.swift; sourceTree = ""; }; @@ -298,10 +302,12 @@ 7DCBE4524A8793B4DE950533 /* PolygonAnnotationExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PolygonAnnotationExample.swift; sourceTree = ""; }; 7DED80ACD1618F8EE8F95A4A /* CustomGeometrySourceExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomGeometrySourceExample.swift; sourceTree = ""; }; 7F5E598A16FA446F583344CB /* TrackingModeExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackingModeExample.swift; sourceTree = ""; }; + 813435AB27599000EE5CC3DF /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 83E9078B1B13E54C2FFC5FFC /* View+OnShake.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+OnShake.swift"; sourceTree = ""; }; 858990E6795D3162A941E82C /* ButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonStyle.swift; sourceTree = ""; }; 876CE24F4E565ED342DDDCD6 /* radar4.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = radar4.gif; sourceTree = ""; }; 876F115BD6EE6C1456433593 /* StandardStyleInteractionsExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StandardStyleInteractionsExample.swift; sourceTree = ""; }; + 87BAB3DDE74FE28388B25CDE /* ChatBlocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatBlocks.swift; sourceTree = ""; }; 87D0CD9C2D04EA5B12E7F84C /* DataJoinExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataJoinExample.swift; sourceTree = ""; }; 8B30F4697545D9F02DD4425D /* Examples.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Examples.swift; sourceTree = ""; }; 8BB15B17EDE597D37CFF3FCA /* Array+Split.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+Split.swift"; sourceTree = ""; }; @@ -321,6 +327,7 @@ 9CB74046A2FC03770B62B9E6 /* TestableExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestableExampleTests.swift; sourceTree = ""; }; 9CCB8EE8E1C9C6CC85DA5D36 /* DistanceExpressionExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DistanceExpressionExample.swift; sourceTree = ""; }; 9F3F37CAE7A0B66BE429525C /* ApplicationCarPlaySceneDelegage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationCarPlaySceneDelegage.swift; sourceTree = ""; }; + A34BE6CA60D208A76C03224F /* StudioStyleExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudioStyleExample.swift; sourceTree = ""; }; A471857797898860C3A8F685 /* AnimateImageLayerExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimateImageLayerExample.swift; sourceTree = ""; }; A4EE8F38428A64B5B9D4DBBE /* CombineLocationExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CombineLocationExample.swift; sourceTree = ""; }; A59EF8798357CF55109A4E56 /* DebugMapExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugMapExample.swift; sourceTree = ""; }; @@ -329,15 +336,21 @@ A8359ECB5024BEF3722C3CA1 /* PointAnnotationClusteringExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PointAnnotationClusteringExample.swift; sourceTree = ""; }; A8700CFE38DA4F1333F9E0F9 /* mapbox-maps-ios */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "mapbox-maps-ios"; path = .; sourceTree = SOURCE_ROOT; }; A9A26CBC58F3271DBFD2EE7D /* CustomLayerShaderTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomLayerShaderTypes.h; sourceTree = ""; }; + AB46F3DA5A3B0BFCA7B21A5C /* MapResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapResponse.swift; sourceTree = ""; }; AC5A8729C9AEA4711B56B5F0 /* SnapshotMapExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotMapExample.swift; sourceTree = ""; }; + ACE37BACAE414412B14318A9 /* DemoData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoData.swift; sourceTree = ""; }; B05B410135D0B466B73C0765 /* annotations.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = annotations.json; sourceTree = ""; }; B31A932A62B6142FE20C39DF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; B33F64CDBA98B91EE819B2C4 /* AddMarkersSymbolExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddMarkersSymbolExample.swift; sourceTree = ""; }; + B637A7DA37BDB117CAA6776F /* ChatMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMapView.swift; sourceTree = ""; }; B7A7586D05B960928AB17A0D /* MultipleGeometriesExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleGeometriesExample.swift; sourceTree = ""; }; + BAE5B425CF6F5DEB88A73D45 /* style.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = style.json; sourceTree = ""; }; BE18E37A8652B4807D2459F1 /* ExamplesUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExamplesUITests.swift; sourceTree = ""; }; + BF8758A48E8F239E39E2CB50 /* FeatureDetails.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureDetails.swift; sourceTree = ""; }; BFDBCA79855B58FE84333124 /* PrecipitationsExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrecipitationsExample.swift; sourceTree = ""; }; C0CC67084BA1191D0B179A94 /* PuckPlayground.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuckPlayground.swift; sourceTree = ""; }; - C47942F80A50166AC823012B /* sportcar.glb */ = {isa = PBXFileReference; lastKnownFileType = file; path = sportcar.glb; sourceTree = ""; }; + C376C7DED604F5A90819D936 /* CirclePinView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CirclePinView.swift; sourceTree = ""; }; + C47942F80A50166AC823012B /* sportcar.glb */ = {isa = PBXFileReference; path = sportcar.glb; sourceTree = ""; }; C61CC711054A032EE0446036 /* DynamicStylingExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicStylingExample.swift; sourceTree = ""; }; CB726A94B069761528B57EC8 /* ViewAnnotationWithPointAnnotationExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewAnnotationWithPointAnnotationExample.swift; sourceTree = ""; }; CBD8F852552CA316EFFCDD64 /* CalloutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalloutView.swift; sourceTree = ""; }; @@ -345,6 +358,7 @@ CF35650C6319088CAAF95F84 /* CameraForExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraForExample.swift; sourceTree = ""; }; CFF80A86D7DEF54E0A7256DF /* BuildingExtrusionsExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuildingExtrusionsExample.swift; sourceTree = ""; }; D058C94675BB58AE74392829 /* LayerSlotExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayerSlotExample.swift; sourceTree = ""; }; + D19104E735A36AF0E51A6088 /* FilterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilterView.swift; sourceTree = ""; }; D2D98F58F756D035C98B1F39 /* ModelLayerExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModelLayerExample.swift; sourceTree = ""; }; D3C6CF222C8EE9AE69563E39 /* ViewAnnotationBasicExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewAnnotationBasicExample.swift; sourceTree = ""; }; D3FA795972BB141B9C582ED0 /* FeatureStateExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureStateExample.swift; sourceTree = ""; }; @@ -358,6 +372,7 @@ DD6F1212BB2453DBFECE12F2 /* StandardStyleLocationsExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StandardStyleLocationsExample.swift; sourceTree = ""; }; DE6CEA9899CC0EC4F4381E19 /* CarPlayMapViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarPlayMapViewController.swift; sourceTree = ""; }; DE863B179BF4F740C36D185E /* ViewportPlayground.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewportPlayground.swift; sourceTree = ""; }; + DFA740B5C42BD38EAD2AE99E /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; E09DABCB8139643F1BD3B972 /* Examples_CarPlay.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Examples_CarPlay.entitlements; sourceTree = ""; }; E0C19E67A2E87A3D18B7B511 /* ViewportExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewportExample.swift; sourceTree = ""; }; E612275E3042D0D0AF8B583E /* MapRecorderExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapRecorderExample.swift; sourceTree = ""; }; @@ -365,13 +380,15 @@ E97E057D9FFB1DE3E16F1F0B /* StandardInteractiveBuildingsExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StandardInteractiveBuildingsExample.swift; sourceTree = ""; }; EC1155178B21E2E8075454A8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; F000C4D3B6FC70FA9607E3A3 /* UIColor+Random.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Random.swift"; sourceTree = ""; }; - F033C8EFB89A90D6705B047D /* GeoJSONSourceExample.geojson */ = {isa = PBXFileReference; lastKnownFileType = text; path = GeoJSONSourceExample.geojson; sourceTree = ""; }; + F033C8EFB89A90D6705B047D /* GeoJSONSourceExample.geojson */ = {isa = PBXFileReference; path = GeoJSONSourceExample.geojson; sourceTree = ""; }; + F04A7BB67515E770047ACAAB /* ChatDemoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatDemoView.swift; sourceTree = ""; }; F0A6063E57EC170F558A3F74 /* ExampleTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleTableViewController.swift; sourceTree = ""; }; - F0CE51977FA6E83B6F11BE5C /* Examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Examples.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F0CE51977FA6E83B6F11BE5C /* Examples.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Examples.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F26EC4DB977D4C2DDBCA1924 /* MarkersExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkersExample.swift; sourceTree = ""; }; F393DF039D7AD2F35C8DE4CE /* ViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewExtensions.swift; sourceTree = ""; }; F890746B56E20150A053B41B /* AnnotationsExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnotationsExample.swift; sourceTree = ""; }; FC1CEEE6277DEAD9FDFF4AAC /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - FE2A263DD2E9DC52CEE356FA /* sf_airport_route.geojson */ = {isa = PBXFileReference; lastKnownFileType = text; path = sf_airport_route.geojson; sourceTree = ""; }; + FE2A263DD2E9DC52CEE356FA /* sf_airport_route.geojson */ = {isa = PBXFileReference; path = sf_airport_route.geojson; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -387,6 +404,16 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 04D3A82D27763CA5C9A741B6 /* UseCases */ = { + isa = PBXGroup; + children = ( + 35A65C4EAEFCD36C79095678 /* UseCasesRoot.swift */, + A81722A11D1558E3DE583C77 /* AiChat */, + 98873AFE8AB54E01FA551E11 /* PinPoweredMap */, + ); + path = UseCases; + sourceTree = ""; + }; 2CDB0066C8683D83F2532B62 /* Testing Examples */ = { isa = PBXGroup; children = ( @@ -395,9 +422,9 @@ 388932B3A65BB7E9B59FDBE0 /* InteractionsPlayground.swift */, 65535FB9F190778001AB847A /* MapScrollExample.swift */, E6E875420B5C674C8CCAB9B1 /* MapSettingsExample.swift */, - 7352DDB02DD7E9EE000E3000 /* StudioStyleExample.swift */, C0CC67084BA1191D0B179A94 /* PuckPlayground.swift */, 78811E5A3185D2D32495870A /* SimpleMapExample.swift */, + A34BE6CA60D208A76C03224F /* StudioStyleExample.swift */, DE863B179BF4F740C36D185E /* ViewportPlayground.swift */, ); path = "Testing Examples"; @@ -429,21 +456,30 @@ B31A932A62B6142FE20C39DF /* Assets.xcassets */, E09DABCB8139643F1BD3B972 /* Examples_CarPlay.entitlements */, 6D5B23007CF347976470A069 /* Examples-Bridging-Header.h */, + 046682CA678CD79451761CFD /* ExamplesRootView.swift */, EC1155178B21E2E8075454A8 /* Info.plist */, 55FDF5B3329BFD6E6C346D80 /* LaunchScreen.storyboard */, 96B0E9086FE939F5D723136D /* VisionOSMain.swift */, - 74C285352E7D4B0100A4A5B8 /* ExamplesRootView.swift */, ACB753539ABAD3312B849CB1 /* All Examples */, 43EC579EBDA110D1E1B3E494 /* Controllers */, 9AC6F30FB33614908581AE8E /* Extensions */, 846FF5BF97AEEAC876994DF3 /* Models */, 55E0EEEC0D91AF2DFDCD9A33 /* SwiftUI Examples */, - 74C2854F2E7D4B1800A4A5B8 /* UseCases */, + 04D3A82D27763CA5C9A741B6 /* UseCases */, ); name = Examples; path = Sources/Examples; sourceTree = ""; }; + 53D30754813F3CC098154CED /* Misc */ = { + isa = PBXGroup; + children = ( + 6E08A6B3D9881F4A0A7C049A /* Extensions.swift */, + 010E21E88FA01F9AC895BF28 /* PinPoweredMapConstants.swift */, + ); + path = Misc; + sourceTree = ""; + }; 55E0EEEC0D91AF2DFDCD9A33 /* SwiftUI Examples */ = { isa = PBXGroup; children = ( @@ -455,11 +491,11 @@ C61CC711054A032EE0446036 /* DynamicStylingExample.swift */, 09BBD2991186A6B98F730454 /* ElevatedLineMapView.swift */, A6B06A1D70F479D8DC5C375A /* FeaturesQueryExample.swift */, - 7350DF1E2DFCC73A00B47542 /* MarkersExample.swift */, 7613C4E19DCD679A2620223C /* GeofencingPlayground.swift */, DD3A816C6E4D7A0A532EEE84 /* GeofencingUserLocation.swift */, 62DA0608D44DEF6C4A82777C /* LocateMeExample.swift */, 45B39AE24486FED5ED30392D /* LocationOverrideExample.swift */, + F26EC4DB977D4C2DDBCA1924 /* MarkersExample.swift */, BFDBCA79855B58FE84333124 /* PrecipitationsExample.swift */, 6CD7ADCCB774239AA0090C46 /* RasterParticleExample.swift */, AC5A8729C9AEA4711B56B5F0 /* SnapshotMapExample.swift */, @@ -476,6 +512,17 @@ path = "SwiftUI Examples"; sourceTree = ""; }; + 63C6D6BDAE4614FAFC4A9D80 /* Views */ = { + isa = PBXGroup; + children = ( + DFA740B5C42BD38EAD2AE99E /* ContentView.swift */, + 3DCA3CFE97357EF7D190E2A2 /* DetailsView.swift */, + D19104E735A36AF0E51A6088 /* FilterView.swift */, + 09006C566A72E52201CA7EFB /* SegmentedToggleView.swift */, + ); + path = Views; + sourceTree = ""; + }; 708CF4C3DE36627B66561595 /* Util */ = { isa = PBXGroup; children = ( @@ -490,59 +537,6 @@ path = Util; sourceTree = ""; }; - 74C285392E7D4B1800A4A5B8 /* Misc */ = { - isa = PBXGroup; - children = ( - 74C285372E7D4B1800A4A5B8 /* Extensions.swift */, - 74C285382E7D4B1800A4A5B8 /* PinPoweredMapConstants.swift */, - ); - path = Misc; - sourceTree = ""; - }; - 74C285402E7D4B1800A4A5B8 /* Models */ = { - isa = PBXGroup; - children = ( - 74C2853A2E7D4B1800A4A5B8 /* FavoritesManager.swift */, - 74C2853B2E7D4B1800A4A5B8 /* FeatureDetails.swift */, - 74C2853C2E7D4B1800A4A5B8 /* NetworkService.swift */, - 74C2853D2E7D4B1800A4A5B8 /* OpenHours+Formatting.swift */, - 74C2853E2E7D4B1800A4A5B8 /* POICategory.swift */, - 74C2853F2E7D4B1800A4A5B8 /* VisitManager.swift */, - ); - path = Models; - sourceTree = ""; - }; - 74C285452E7D4B1800A4A5B8 /* Views */ = { - isa = PBXGroup; - children = ( - 74C285412E7D4B1800A4A5B8 /* ContentView.swift */, - 74C285422E7D4B1800A4A5B8 /* DetailsView.swift */, - 74C285432E7D4B1800A4A5B8 /* FilterView.swift */, - 74C285442E7D4B1800A4A5B8 /* SegmentedToggleView.swift */, - ); - path = Views; - sourceTree = ""; - }; - 74C285472E7D4B1800A4A5B8 /* PinPoweredMap */ = { - isa = PBXGroup; - children = ( - 74C285392E7D4B1800A4A5B8 /* Misc */, - 74C285402E7D4B1800A4A5B8 /* Models */, - 74C285452E7D4B1800A4A5B8 /* Views */, - 74C285462E7D4B1800A4A5B8 /* style.json */, - ); - path = PinPoweredMap; - sourceTree = ""; - }; - 74C2854F2E7D4B1800A4A5B8 /* UseCases */ = { - isa = PBXGroup; - children = ( - 74C285472E7D4B1800A4A5B8 /* PinPoweredMap */, - 74C2854E2E7D4B1800A4A5B8 /* UseCasesRoot.swift */, - ); - path = UseCases; - sourceTree = ""; - }; 7E899D0C531F0E3FE49D97BB /* Packages */ = { isa = PBXGroup; children = ( @@ -598,6 +592,17 @@ path = Radar; sourceTree = ""; }; + 98873AFE8AB54E01FA551E11 /* PinPoweredMap */ = { + isa = PBXGroup; + children = ( + BAE5B425CF6F5DEB88A73D45 /* style.json */, + 53D30754813F3CC098154CED /* Misc */, + F5C93CA2F1BC2E737B5E693A /* Models */, + 63C6D6BDAE4614FAFC4A9D80 /* Views */, + ); + path = PinPoweredMap; + sourceTree = ""; + }; 9AC6F30FB33614908581AE8E /* Extensions */ = { isa = PBXGroup; children = ( @@ -620,6 +625,22 @@ path = CarPlay; sourceTree = ""; }; + A81722A11D1558E3DE583C77 /* AiChat */ = { + isa = PBXGroup; + children = ( + 45A57634C3CF386009792983 /* Assets.xcassets */, + 87BAB3DDE74FE28388B25CDE /* ChatBlocks.swift */, + F04A7BB67515E770047ACAAB /* ChatDemoView.swift */, + B637A7DA37BDB117CAA6776F /* ChatMapView.swift */, + 37917846C6F0D8FA816AFF0E /* ChatModel.swift */, + C376C7DED604F5A90819D936 /* CirclePinView.swift */, + ACE37BACAE414412B14318A9 /* DemoData.swift */, + AB46F3DA5A3B0BFCA7B21A5C /* MapResponse.swift */, + 813435AB27599000EE5CC3DF /* README.md */, + ); + path = AiChat; + sourceTree = ""; + }; ACB753539ABAD3312B849CB1 /* All Examples */ = { isa = PBXGroup; children = ( @@ -694,7 +715,6 @@ AFDB1EA82615CFDF02CE1D4D = { isa = PBXGroup; children = ( - 7352DDB42DDB93B5000E3000 /* StudioStyleExample.swift */, 52909911727F239150D4FE30 /* Examples */, DA93D15473B052576C7D2965 /* ExamplesTests */, ADB2E9042412519F1EA183A8 /* ExamplesUITests */, @@ -748,6 +768,19 @@ path = Lab; sourceTree = ""; }; + F5C93CA2F1BC2E737B5E693A /* Models */ = { + isa = PBXGroup; + children = ( + 076D23DADD44F2CA269F947E /* FavoritesManager.swift */, + BF8758A48E8F239E39E2CB50 /* FeatureDetails.swift */, + 01BB65B1AF672B069DC6EF49 /* NetworkService.swift */, + 39F277AD62400BB06EF2A9A6 /* OpenHours+Formatting.swift */, + 5FB20C6CE44D70532CC43582 /* POICategory.swift */, + 392F51AB0D757DDC38B225B2 /* VisitManager.swift */, + ); + path = Models; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -763,6 +796,8 @@ A1988D683D0768E02BB6E3C8 /* PBXTargetDependency */, ); name = ExamplesTests; + packageProductDependencies = ( + ); productName = ExamplesTests; productReference = 590D83805AA598D2B0A7638A /* ExamplesTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; @@ -802,6 +837,8 @@ 50B94E0A74D725D5BEDF1F9D /* PBXTargetDependency */, ); name = ExamplesUITests; + packageProductDependencies = ( + ); productName = ExamplesUITests; productReference = 3E2F68B22AFF73A71F86CABC /* ExamplesUITests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; @@ -836,10 +873,12 @@ en, ); mainGroup = AFDB1EA82615CFDF02CE1D4D; + minimizedProjectReferenceProxies = 1; packageReferences = ( AC4B0DE570C38B503D03669A /* XCRemoteSwiftPackageReference "Fingertips" */, 4F0A03F138FCA51E80A1893D /* XCLocalSwiftPackageReference "." */, ); + preferredProjectObjectVersion = 54; projectDirPath = ""; projectRoot = ""; targets = ( @@ -857,13 +896,14 @@ files = ( E2CD9B66367265509567A4E3 /* .swiftlint.yml in Resources */, 83DCCC7FEFF6D94D3DF0B587 /* 34M_17.dae in Resources */, + 0FD9C8E1CB8A58A4A0DB25C4 /* Assets.xcassets in Resources */, C940835B030A20F0C5BC31AD /* Assets.xcassets in Resources */, - 74C285502E7D4B1800A4A5B8 /* style.json in Resources */, F5E96E5798947CA56FD77CF9 /* Fire_Hydrants.geojson in Resources */, 18F76FE745B049D1F0CAF6CA /* GeoJSONSourceExample.geojson in Resources */, 85AA0D942D4C0E218D87F7D8 /* GradientLine.geojson in Resources */, 85E0F727CBB3374D3EF499C3 /* LaunchScreen.storyboard in Resources */, 634BA74F4E553C53EE906F5A /* OfflineManagerExample.storyboard in Resources */, + A21BC47B5210D7678BA464B9 /* README.md in Resources */, C6E1E615C75960D1BD1755A9 /* annotations.json in Resources */, 5A6D7B2A302A6555FE23FF80 /* blueprint_style.json in Resources */, 560D4A0D2C704ECC346D8B5F /* fragment-realestate-NY.json in Resources */, @@ -875,6 +915,7 @@ 2B44F3E8EF3A50D9AE6B825F /* route.geojson in Resources */, 01310DFD10B3804EE3548509 /* sf_airport_route.geojson in Resources */, 803CCCEA28B209111BE0786F /* sportcar.glb in Resources */, + BDD21DF28979B09014A0C7C3 /* style.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -958,32 +999,24 @@ 64F4FA139388DB34564AD42D /* CLLocationCoordinate2D+Random.swift in Sources */, 03EDEA6452582E7E6805C824 /* CalloutView.swift in Sources */, 821807D61D52F0E60925BCD4 /* CameraAnimationExample.swift in Sources */, - 74C285512E7D4B1800A4A5B8 /* VisitManager.swift in Sources */, - 74C285522E7D4B1800A4A5B8 /* PinPoweredMapConstants.swift in Sources */, - 74C285562E7D4B1800A4A5B8 /* POICategory.swift in Sources */, - 74C285582E7D4B1800A4A5B8 /* FeatureDetails.swift in Sources */, - 74C285592E7D4B1800A4A5B8 /* FavoritesManager.swift in Sources */, - 74C2855A2E7D4B1800A4A5B8 /* FilterView.swift in Sources */, - 74C2855B2E7D4B1800A4A5B8 /* SegmentedToggleView.swift in Sources */, - 74C2855C2E7D4B1800A4A5B8 /* OpenHours+Formatting.swift in Sources */, - 74C2855D2E7D4B1800A4A5B8 /* DetailsView.swift in Sources */, - 74C2855E2E7D4B1800A4A5B8 /* Extensions.swift in Sources */, - 74C2855F2E7D4B1800A4A5B8 /* NetworkService.swift in Sources */, - 74C285602E7D4B1800A4A5B8 /* ContentView.swift in Sources */, - 74C285622E7D4B1800A4A5B8 /* UseCasesRoot.swift in Sources */, 9A403D6AB6D6336E212726C5 /* CameraAnimatorsExample.swift in Sources */, 33B816803AF5330796686AA1 /* CameraForExample.swift in Sources */, F0502A1ACF0AED218F8184AB /* CarPlayMapViewController.swift in Sources */, + 644ECC7D6042C5F77BC8FC02 /* ChatBlocks.swift in Sources */, + A11DD4355B8BD46C54C44F7D /* ChatDemoView.swift in Sources */, + CCA7663D9A74FFC63606C10F /* ChatMapView.swift in Sources */, + F995320A3A3FC4C824AF8484 /* ChatModel.swift in Sources */, CA2209956E93ECB18C4C9DEC /* CircleAnnotationExample.swift in Sources */, + 17FA11C8755803165B1E0E7D /* CirclePinView.swift in Sources */, 3B4862E6832F23CB115D444A /* ClipLayerExample.swift in Sources */, 1DAE02D73D16E543777C2025 /* ClusteringExample.swift in Sources */, 5A28C124249725578389175A /* ColorExpressionExample.swift in Sources */, - 7350DF212DFCC73A00B47542 /* MarkersExample.swift in Sources */, DA109856E64BBD8071DF0619 /* ColorThemeExample.swift in Sources */, 65E9F2B993AEB394FC2D0080 /* ColorThemeMapExample.swift in Sources */, C664365A373267B564EC84EE /* CombineExample.swift in Sources */, 215230836B6AD1040D3DA547 /* CombineLocationExample.swift in Sources */, 3E515D1DD1D9CA02F3E95AA2 /* Constants.swift in Sources */, + A1FABB64B1C3EEC9E5AF06A0 /* ContentView.swift in Sources */, 60A1572CCF5763FA3C946B89 /* Custom2DPuckExample.swift in Sources */, 6B040F65241ABF600D70D14D /* Custom3DPuckExample.swift in Sources */, 4E64A70408A69F2BC9F70610 /* CustomGeometrySourceExample.swift in Sources */, @@ -995,6 +1028,8 @@ 1B5230204B5659B1F05C303D /* DataDrivenSymbolsExample.swift in Sources */, DA69CB0BD9F0DDA0FD1387B0 /* DataJoinExample.swift in Sources */, B9D4B9C3042383738AB5B667 /* DebugMapExample.swift in Sources */, + D9173F2FBD6C4C768A4354D9 /* DemoData.swift in Sources */, + C3AE1FF03DC96EB1D62171CE /* DetailsView.swift in Sources */, 1C70390E725564D6E60865EF /* DistanceExpressionExample.swift in Sources */, CBCC60FF68BE9754DE0C6AF3 /* DynamicStylingExample.swift in Sources */, DFC64A62538E787D57B6514D /* DynamicViewAnnotationExample.swift in Sources */, @@ -1004,10 +1039,15 @@ 10ECE7FE19CEC239DDA96961 /* ExampleProtocol.swift in Sources */, 7B9835E597E0B2655E181A48 /* ExampleTableViewController.swift in Sources */, 9DFE9DDE63B78393031C843E /* Examples.swift in Sources */, + 36F4137908C6594E0A694CD9 /* ExamplesRootView.swift in Sources */, + E63677D643F7C4793456A712 /* Extensions.swift in Sources */, A972D3306BC53DEC9798C60D /* ExternalVectorSourceExample.swift in Sources */, + 274074283C558652C5969BB9 /* FavoritesManager.swift in Sources */, + A4BB323F889808F290E3F59A /* FeatureDetails.swift in Sources */, D63431CA78A557A0FB92177A /* FeatureStateExample.swift in Sources */, FDA4B57BE32D92BB57A5B7E6 /* FeaturesAtPointExample.swift in Sources */, 854CE1A84AADF6FBB232CB5F /* FeaturesQueryExample.swift in Sources */, + 3B4847CA03B24A39ECA40224 /* FilterView.swift in Sources */, AE6E90DB7B6DA4580C2DAB59 /* FrameViewAnnotationsExample.swift in Sources */, DCA54F7383085A8FD822F0BF /* GeofencingPlayground.swift in Sources */, 5F2AD73C8104089C9291574E /* GeofencingUserLocation.swift in Sources */, @@ -1027,14 +1067,20 @@ AE51E276DCD8CF89AB339224 /* LongTapAnimationExample.swift in Sources */, 03EEF25ABD58ADD9631AB509 /* MapEventsExample.swift in Sources */, 3FD83483E0AE57790504CB0C /* MapRecorderExample.swift in Sources */, + 846C9292A31ACCFF39356F7C /* MapResponse.swift in Sources */, D98624793DA36578289F02FF /* MapScrollExample.swift in Sources */, 8913C410B72BE0C40EE02BB9 /* MapSettingsExample.swift in Sources */, + E1BCB5B22002E1700779B596 /* MarkersExample.swift in Sources */, 4ACB99FAFBF38A425EBD0285 /* ModelLayerExample.swift in Sources */, F5311222553DA118AC571D82 /* MultipleGeometriesExample.swift in Sources */, D94672F30272E31087AB5DDD /* NavigationSimulator.swift in Sources */, 902FD51EC410A1E8BD88941D /* NavigationSimulatorExample.swift in Sources */, + E0485890235BC171A7541F7E /* NetworkService.swift in Sources */, E6B722A64C15CE701287B464 /* OfflineManagerExample.swift in Sources */, 5FF3E34B523C39A404154BF7 /* OfflineRegionManagerExample.swift in Sources */, + 05EF63E72681858549C8D580 /* OpenHours+Formatting.swift in Sources */, + 31E053667A6C6CAB152D4A04 /* POICategory.swift in Sources */, + 443DE16A0E50098614E5006F /* PinPoweredMapConstants.swift in Sources */, 312CE7CED726F0A572301622 /* PinView.swift in Sources */, A6389C28B8AAC39878591AD0 /* PitchAndDistanceExample.swift in Sources */, F48BF087BB56B0A44D8B16F3 /* PointAnnotationClusteringExample.swift in Sources */, @@ -1049,6 +1095,7 @@ 86AED5DD9F8C8BB2C9736483 /* ResizeMapViewExample.swift in Sources */, CBD01BBA4E78796827A6E52D /* RuntimeSlotsExample.swift in Sources */, 4791CACAC0846107E4B0955B /* SceneKitExample.swift in Sources */, + 1FCA58860B3F23CAC57B32CA /* SegmentedToggleView.swift in Sources */, F613749DCDDDDC6F041032A0 /* SimpleMapExample.swift in Sources */, 1F860D5B445E75772C4C3B6C /* SkyLayerExample.swift in Sources */, 79843B780E7C5DC68433B745 /* SnapshotMapExample.swift in Sources */, @@ -1061,14 +1108,14 @@ 2997D21A7DB20098C6D03D3B /* StandardStyleImportExample.swift in Sources */, 5DBD7C52D21C20D89418CAA6 /* StandardStyleInteractionsExample.swift in Sources */, 8F0BEA796867B64E48A1B328 /* StandardStyleLocationsExample.swift in Sources */, - 74C285362E7D4B0100A4A5B8 /* ExamplesRootView.swift in Sources */, - 7352DDB22DD7E9EE000E3000 /* StudioStyleExample.swift in Sources */, + E64BDF1718037F0132FD7A2E /* StudioStyleExample.swift in Sources */, EB39F159A9F5DFAB935F629D /* SwiftExtensions.swift in Sources */, 7EDF38D2E9CDE489F320977E /* SwiftUIRoot.swift in Sources */, C953F022C91FCA59CFF06BE9 /* SymbolClusteringExample.swift in Sources */, 7036A19FCD2CCE85BDDF4E00 /* TrackingModeExample.swift in Sources */, A6A68B4ED674A924ACBD8FA2 /* UIColor+Random.swift in Sources */, D9297596469F9B31C2350B43 /* UIViewController+Extensions.swift in Sources */, + E5DF142BE2F9305CD80225C3 /* UseCasesRoot.swift in Sources */, 1687412AC1637D7EA697C7A4 /* View+OnShake.swift in Sources */, CF5C5513D659D4981706DDEC /* ViewAnnotationAnimationExample.swift in Sources */, BD99E89F050E7D93846147FF /* ViewAnnotationBasicExample.swift in Sources */, @@ -1079,6 +1126,7 @@ 14799547EFD5C4757FBAD6E4 /* ViewportExample.swift in Sources */, 5F537B052041931CB507E12B /* ViewportPlayground.swift in Sources */, 5F556CB71C442EC2A8C2E229 /* VisionOSMain.swift in Sources */, + A1B48F80CCE951F6F2265A68 /* VisitManager.swift in Sources */, C315E1C61D222296FE0244FC /* VoiceOverAccessibilityExample.swift in Sources */, 38AD95B6DD9BE858F4E59C31 /* WeatherAnnotationExample.swift in Sources */, ); @@ -1126,12 +1174,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - "$(PROJECT_DIR)/../lib", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(PROJECT_DIR)/../lib"; PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxTests; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator xros xrsimulator"; @@ -1241,12 +1284,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - "$(PROJECT_DIR)/../lib", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(PROJECT_DIR)/../lib"; PRODUCT_BUNDLE_IDENTIFIER = mapbox.ExamplesUITests; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator xros xrsimulator"; @@ -1410,12 +1448,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - "$(PROJECT_DIR)/../lib", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(PROJECT_DIR)/../lib"; PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxTests; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator xros xrsimulator"; @@ -1434,12 +1467,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - "$(PROJECT_DIR)/../lib", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(PROJECT_DIR)/../lib"; PRODUCT_BUNDLE_IDENTIFIER = mapbox.ExamplesUITests; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator xros xrsimulator"; diff --git a/Examples.xcodeproj/xcshareddata/xcschemes/Examples.xcscheme b/Examples.xcodeproj/xcshareddata/xcschemes/Examples.xcscheme index 8f0ed7a37090..1b29575a57f2 100644 --- a/Examples.xcodeproj/xcshareddata/xcschemes/Examples.xcscheme +++ b/Examples.xcodeproj/xcshareddata/xcschemes/Examples.xcscheme @@ -4,7 +4,8 @@ version = "1.7"> + buildImplicitDependencies = "YES" + runPostActionsOnFailure = "NO"> + shouldUseLaunchSchemeArgsEnv = "NO" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + [ChatBlock] { + var result = [ChatBlock(content: .message(.init(content: content, isUser: isUser)))] + if let mapResponse { + result.append(ChatBlock(content: .mapCards(mapResponse.pins))) + } + + return result + } +} + +struct PinCardView: View { + let pin: Pin + let isSelected: Bool + + var body: some View { + VStack(alignment: .leading, spacing: 4) { + Text(pin.name) + .font(.system(size: 15, weight: .semibold)) + .lineLimit(2) + .foregroundColor(.primary) + + if let rating = pin.rating { + HStack(spacing: 4) { + Image(systemName: "star.fill") + .foregroundColor(.yellow) + Text(rating) + .foregroundColor(.secondary) + Text("ยท $$\(Text("$$").foregroundColor(.gray))") + + } + .font(.system(size: 13)) + } + + if let image = pin.image { + Image(ImageResource(name: image, bundle: .main)) + .resizable() + .frame(width: 200, height: 112) + + .clipped() + } + + if let details = pin.details { + Text(details) + } + + if !pin.tags.isEmpty { + FlowLayout(spacing: 6) { + ForEach(pin.tags, id: \.self) { tag in + Text(tag) + .font(.system(size: 11)) + .padding(.horizontal, 8) + .padding(.vertical, 4) + .background(Color.gray.opacity(0.2)) + .foregroundColor(.primary) + .cornerRadius(12) + } + } + } + } + .padding(12) + .frame(width: 300) + .background( + RoundedRectangle(cornerRadius: 12) + .stroke( + isSelected ? Color.primary.opacity(0.9) : Color.gray.opacity(0.4), lineWidth: 1 + ) + .padding(.all, 1) + ) + } +} + +struct FlowLayout: Layout { + var spacing: CGFloat + + func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) -> CGSize { + let result = FlowResult( + in: proposal.replacingUnspecifiedDimensions().width, + subviews: subviews, + spacing: spacing + ) + return result.size + } + + func placeSubviews( + in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout () + ) { + let result = FlowResult( + in: bounds.width, + subviews: subviews, + spacing: spacing + ) + for (index, subview) in subviews.enumerated() { + subview.place( + at: CGPoint( + x: bounds.minX + result.frames[index].minX, + y: bounds.minY + result.frames[index].minY), proposal: .unspecified) + } + } + + struct FlowResult { + var frames: [CGRect] = [] + var size: CGSize = .zero + + init(in maxWidth: CGFloat, subviews: Subviews, spacing: CGFloat) { + var currentX: CGFloat = 0 + var currentY: CGFloat = 0 + var lineHeight: CGFloat = 0 + + for subview in subviews { + let size = subview.sizeThatFits(.unspecified) + + if currentX + size.width > maxWidth && currentX > 0 { + currentX = 0 + currentY += lineHeight + spacing + lineHeight = 0 + } + + frames.append( + CGRect(x: currentX, y: currentY, width: size.width, height: size.height)) + lineHeight = max(lineHeight, size.height) + currentX += size.width + spacing + } + + self.size = CGSize(width: maxWidth, height: currentY + lineHeight) + } + } +} diff --git a/Sources/Examples/UseCases/AiChat/ChatDemoView.swift b/Sources/Examples/UseCases/AiChat/ChatDemoView.swift new file mode 100644 index 000000000000..46c9a151c607 --- /dev/null +++ b/Sources/Examples/UseCases/AiChat/ChatDemoView.swift @@ -0,0 +1,81 @@ +import SwiftUI + +@available(iOS 17.0, *) +struct ChatDemoView: View { + @State var model: ChatModel + @FocusState private var isInputFocused: Bool + + init(model: ChatModel) { + self.model = model + } + + init() { + self.init(model: ChatModel(demo: .dateNightRestaurants)) + } + + var body: some View { + Group { + VStack(spacing: 0) { + ScrollViewReader { proxy in + ScrollView { + LazyVStack(spacing: 8, pinnedViews: .sectionHeaders) { + ForEach(model.sections) { section in + Section { + ForEach(section.blocks) { block in + ChatBlockView(block: block) + } + } header: { + if let map = section.map { + ChatMapView(response: map, sectionId: section.id) + } + } + } + } + .padding(.vertical, 8) + } + .onChange(of: model.lastMessageId) { _, _ in + if let lastMessageId = model.lastMessageId { + withAnimation { + proxy.scrollTo(lastMessageId, anchor: .bottom) + } + } + } + .onChange(of: model.selectedPinId) { _, _ in + if let selectedPinId = model.selectedPinId { + withAnimation { + proxy.scrollTo(selectedPinId, anchor: .bottom) + } + } + } + } + .environment(model) + + HStack(spacing: 12) { + TextField("Message", text: $model.inputText, axis: .vertical) + .textFieldStyle(.plain) + .padding(.horizontal, 16) + .padding(.vertical, 10) + .background(Color(.systemGray6)) + .cornerRadius(20) + .lineLimit(1...6) + .focused($isInputFocused) + .onSubmit { + model.sendMessage() + } + + Button(action: { model.sendMessage() }) { + Image(systemName: "arrow.up.circle.fill") + .font(.system(size: 32)) + .foregroundColor( + model.inputText.isEmpty || model.isWaiting ? .gray : .blue) + } + .disabled(model.inputText.isEmpty || model.isWaiting) + } + .padding(.horizontal, 16) + .padding(.vertical, 12) + .background(Color(.systemBackground)) + } + } + + } +} diff --git a/Sources/Examples/UseCases/AiChat/ChatMapView.swift b/Sources/Examples/UseCases/AiChat/ChatMapView.swift new file mode 100644 index 000000000000..7dda56fa39ef --- /dev/null +++ b/Sources/Examples/UseCases/AiChat/ChatMapView.swift @@ -0,0 +1,116 @@ +import MapboxMaps +import SwiftUI + +@available(iOS 17.0, *) +struct ChatMapView: View { + var response: MapResponse + var sectionId: UUID + @State var allowPan = false + @State var viewport: Viewport = .idle + @State var showResetButton = false + + @Environment(\.colorScheme) var colorScheme + @Environment(ChatModel.self) private var model + + var body: some View { + ZStack { + Map(viewport: $viewport) { + ForEvery(response.pins, id: \.id) { pin in + /// Display data as view annotations - the easiest and most customizable way to display dynamic data. + MapViewAnnotation(coordinate: pin.location) { + CirclePinView(icon: pin.icon, active: pin.id == model.selectedPinId) + .onTapGesture { + model.selectedPinId = pin.id + } + .id(pin.id) + } + .allowOverlap(true) + + Puck2D() + } + } + /// Remove unnecessary ScaleBar in restricted space + .ornamentOptions( + .init( + scaleBar: .init(visibility: .hidden), compass: .init(), + logo: .init(), attributionButton: .init()) + ) + .mapStyle( + .standard( + theme: .faded, + lightPreset: colorScheme == .light ? .day : .dusk)) + + toolbar + } + .frame(height: 300) + .onChange(of: response.id) { _, _ in + if let customCamera = response.camera { + withViewportAnimation(.fly) { + viewport = .camera( + center: customCamera.center, + zoom: customCamera.zoom ?? 16, + bearing: customCamera.bearing ?? 0, + pitch: customCamera.pitch ?? 0 + ) + } + } else { + updateViewport(animated: true) + } + } + .onChange(of: model.selectedPinId) { oldValue, newValue in + /// When selected pin is changed, focus camera on that pin. + let selectedPin = response.pins.first(where: { $0.id == newValue }) + if let selectedPin { + withViewportAnimation(.fly) { + viewport = .camera(center: selectedPin.location, zoom: 16, bearing: 0, pitch: 0) + } + } + } + .onChange(of: viewport) { _, newValue in + /// When viewport changes to non-overview, display a button to reset viewport and see results again. + showResetButton = newValue.overview == nil + } + .onAppear { + updateViewport(animated: false) + } + } + + var toolbar: some View { + VStack { + Spacer() + HStack { + Spacer() + if showResetButton { + Button(action: { + updateViewport(animated: true) + showResetButton = false + }) { + Image(systemName: "arrow.counterclockwise") + .renderingMode(.template) + .font(.system(size: 16, weight: .medium)) + .foregroundStyle(.primary) + .frame(width: 44, height: 44) + } + .buttonStyle(MapFloatingButtonStyle()) + } + } + } + .padding(.trailing, 16) + .padding(.bottom, 56) + } + + func updateViewport(animated: Bool = true) { + /// Initial viewport should overview the pins. + let newViewport = Viewport.overview( + geometry: Polygon([response.pins.map(\.location)]), + geometryPadding: .init(top: 50, leading: 50, bottom: 50, trailing: 50), maxZoom: 16) + if animated { + withViewportAnimation(.fly) { + viewport = newViewport + } + } else { + viewport = newViewport + } + + } +} diff --git a/Sources/Examples/UseCases/AiChat/ChatModel.swift b/Sources/Examples/UseCases/AiChat/ChatModel.swift new file mode 100644 index 000000000000..7bb7d61eed74 --- /dev/null +++ b/Sources/Examples/UseCases/AiChat/ChatModel.swift @@ -0,0 +1,103 @@ +import Foundation + +struct ChatSection: Identifiable { + var id = UUID() + var blocks = [ChatBlock]() + var map: MapResponse? = nil +} + +@available(iOS 17.0, *) +@Observable class ChatModel { + var demo: Demo + init(demo: Demo) { + self.demo = demo + if let firstMessage = demo.flow.first { + self.inputText = firstMessage.content + } + } + + var sections = [ChatSection]() + var step = 0 + var inputText = "" + var lastMessageId: UUID? + var isWaiting = false + + var selectedPinId: UUID? + + func mapResponse(forPinId pinId: UUID) -> MapResponse? { + for section in sections { + if let map = section.map, map.pins.contains(where: { $0.id == pinId }) { + return map + } + } + return nil + } + + // Get the MapResponse for a specific section + func mapResponse(forSectionId sectionId: UUID) -> MapResponse? { + return sections.first(where: { $0.id == sectionId })?.map + } + + func sendMessage() { + emulateNextMessage() + + simulateWaiting { + self.emulateNextMessage() + self.prefillNextUserMessage() + } + } + + private func simulateWaiting(completion: @escaping () -> Void) { + isWaiting = true + + if sections.isEmpty { + sections.append(ChatSection()) + } + let waiterBlock = ChatBlock(content: .waiter) + sections[sections.endIndex - 1].blocks.append(waiterBlock) + lastMessageId = waiterBlock.id + + Task { + try? await Task.sleep(nanoseconds: 1_000_000_000) + await MainActor.run { + if let lastSection = sections.last, + let waiterIndex = lastSection.blocks.firstIndex(where: { $0.content.isWaiter }) + { + sections[sections.endIndex - 1].blocks.remove(at: waiterIndex) + } + + completion() + isWaiting = false + } + } + } + + private func emulateNextMessage() { + guard let message = safeGet(idx: step) else { return } + + if sections.isEmpty { + sections.append(ChatSection()) + } + + if let map = message.mapResponse { + if !sections.last!.blocks.isEmpty && sections.last!.map == nil + && message.mapResponse != nil + { + sections.append(ChatSection()) + } + sections[sections.endIndex - 1].map = map + } + + sections[sections.endIndex - 1].blocks.append(contentsOf: message.toBlocks()) + lastMessageId = sections.last?.blocks.last?.id + step += 1 + } + + private func prefillNextUserMessage() { + inputText = safeGet(idx: step)?.content ?? "" + } + + private func safeGet(idx: Int) -> Message? { + demo.flow.count > idx ? demo.flow[idx] : nil + } +} diff --git a/Sources/Examples/UseCases/AiChat/CirclePinView.swift b/Sources/Examples/UseCases/AiChat/CirclePinView.swift new file mode 100644 index 000000000000..4784d2183766 --- /dev/null +++ b/Sources/Examples/UseCases/AiChat/CirclePinView.swift @@ -0,0 +1,34 @@ +import SwiftUI + +struct CirclePinView: View { + var icon: String + var active = false + + @State private var scale: CGFloat = 0.0 + + var body: some View { + let size = 35.0 + VStack { + ZStack { + let strokeColor: Color = active ? .white : .black + let backgroundColor: Color = active ? .black : .white + Circle() + .fill(backgroundColor) + Circle() + .stroke(strokeColor, lineWidth: 1) + Image(systemName: icon) + .renderingMode(.template) + .foregroundStyle(strokeColor) + } + .shadow(radius: 10) + .scaleEffect(scale, anchor: .bottom) + .onAppear { + withAnimation(Animation.interpolatingSpring(stiffness: 200, damping: 10).delay(0)) { + scale = 1.0 + } + } + .frame(width: size, height: size) + .animation(.linear, value: active) + } + } +} diff --git a/Sources/Examples/UseCases/AiChat/DemoData.swift b/Sources/Examples/UseCases/AiChat/DemoData.swift new file mode 100644 index 000000000000..7eb0a6d8ba06 --- /dev/null +++ b/Sources/Examples/UseCases/AiChat/DemoData.swift @@ -0,0 +1,120 @@ +import CoreLocation +import MapboxMaps + +struct Demo { + var flow: [Message] + + static var dateNightRestaurants: Demo { + Demo(flow: [ + Message(content: "Show me the best restaurants in San Francisco for a date tonight", isUser: true), + Message(content: "Here are the bset places for a date tonight in San Franciso.", isUser: false, map: MapResponse(pins: .restaurants())), + Message(content: "Which ones have vegan options?", isUser: true), + Message(content: "Here are some great vegan-friendly options for a date night in San Francisco!", isUser: false, map: MapResponse(pins: .restaurants(onlyVegan: true))), + Message(content: "Which ones also have a waterfront view?", isUser: true), + Message( + content: "The following vegan-friendly restaurant also has a beautiful waterfront view. A perfect setting for a date night!", + isUser: false, + map: MapResponse( + pins: .restaurants(best: true), + camera: CameraOptions( + center: CLLocationCoordinate2D(latitude:37.7954469, longitude: -122.393536), + zoom: 16.9, + bearing: -94, + pitch: 75 + ) + ), + ), + ]) + } +} + +struct Message: Identifiable { + var id = UUID() + var content: String + var isUser: Bool + var mapResponse: MapResponse? + var lastMapResponse = false + + init(content: String, isUser: Bool, map: MapResponse? = nil) { + self.content = content + self.isUser = isUser + self.mapResponse = map + } +} + + +extension Array where Element == Pin { + static func restaurants(onlyVegan: Bool = false, best: Bool = false) -> [Pin] { + [ + Pin( + location: CLLocationCoordinate2D(latitude: 37.7904917, longitude: -122.3890914), + name: "Waterbar", + icon: "fork.knife", + rating: "4", + details: "A seafood-focused restaurant with panoramic views of the San Francisco skyline, Treasure Island, and the Bay Bridge. 399...", + tags: ["๐ŸŒŠ Waterfront"], + image: "2" + ), + Pin( + location: CLLocationCoordinate2D(latitude: 37.79499953, longitude: -122.39571908), + name: "Harborview Restaurant & Bar", + icon: "fork.knife", + rating: "3.8", + details: "Harborview Restaurant & Bar", + tags: ["๐ŸŒฑ Vegan"], + image: "1" + ), + Pin( + location: CLLocationCoordinate2D(latitude: 37.8068818, longitude: -122.4322241), + name: "Greens Restaurant", + icon: "fork.knife", + rating: "4.9", + details: "An upscale vegetarian restaurant offering seasonal dishes with prime bay views from floor-to-ceiling windows. 2 Marina B...", + tags: ["๐ŸŒŠ Waterfront", "๐ŸŒฑ Vegan"], + image: "9" + ), + Pin( + location: CLLocationCoordinate2D(latitude: 37.79338653, longitude: -122.42256002), + name: "The House of Prime Rib", + icon: "fork.knife", + rating: "4.4", + details: "A classic spot renowned for its prime rib carved tableside and extra cold martinis. 1906 Van Ness Avenue, San Francisco,...", + tags: [], + image: "8" + ), + + Pin( + location: CLLocationCoordinate2D(latitude: 37.77629463, longitude: -122.39671496), + name: "Petit Marlowe", + icon: "fork.knife", + rating: "3.9", + details: "A Parisian-inspired wine and oyster bar in SoMa, perfect for an intimate date night.", + tags: [], + image: "10" + ), + Pin( + location: CLLocationCoordinate2D(latitude: 37.79548494, longitude: -122.39369323), + name: "The Slanted Door", + icon: "fork.knife", + rating: "5", + details: "Located in the Ferry Building, this restaurant offers organic Vietnamese cuisine with waterfront views.", + tags: ["๐ŸŒŠ Waterfront", "๐ŸŒฑ Vegan", "๐Ÿ“ Route Available"], + image: "26" + ), + ].filter { pin in + if onlyVegan { + pin.tags.contains(where: { $0.contains("๐ŸŒฑ") }) + } else { + true + } + }.filter { pin in + if best { + pin.rating == "5" + } else { + true + } + } + + + } +} diff --git a/Sources/Examples/UseCases/AiChat/MapResponse.swift b/Sources/Examples/UseCases/AiChat/MapResponse.swift new file mode 100644 index 000000000000..b3dac2536f5e --- /dev/null +++ b/Sources/Examples/UseCases/AiChat/MapResponse.swift @@ -0,0 +1,20 @@ +import CoreLocation +import MapboxMaps + +struct Pin: Identifiable { + var id = UUID() + var location: CLLocationCoordinate2D + var name: String + var icon: String + var rating: String? + var details: String? + var tags = [String]() + var image: String? + var isActive = false +} + +struct MapResponse: Identifiable { + var id = UUID() + var pins: [Pin] + var camera: CameraOptions? +} diff --git a/Sources/Examples/UseCases/AiChat/README.md b/Sources/Examples/UseCases/AiChat/README.md new file mode 100644 index 000000000000..7c7bb033e83b --- /dev/null +++ b/Sources/Examples/UseCases/AiChat/README.md @@ -0,0 +1,5 @@ +# Mapbox SDK + AI Demo + +The demo demonstrates how to use Mapbox SDK for iOS and ViewAnnotations to display dynamic content. + +See the [`ChatMapView.swift`](AiChat/ChatMapView.swift) for details. diff --git a/Sources/Examples/UseCases/UseCasesRoot.swift b/Sources/Examples/UseCases/UseCasesRoot.swift index 77a12103aeac..0dcdadbf7033 100644 --- a/Sources/Examples/UseCases/UseCasesRoot.swift +++ b/Sources/Examples/UseCases/UseCasesRoot.swift @@ -7,8 +7,10 @@ struct UseCasesRoot: View { List { Section { ExampleLink("Pin Powered Map", note: "Interactive icons that drive engagement and revenue.", destination: ContentView()) + if #available(iOS 17.0, *) { + ExampleLink("AI Chat + Map", note: "Build a Map experience in an AI chat", destination: ChatDemoView()) + } } header: { Text("Interactive Mapping") } - } .navigationTitle("Use cases") .safeNavigationSubtitle(Bundle.mapboxMapsMetadata.version)