Display map or satellite imagery from your app's interface, call out points of interest, and determine placemark information for map coordinates using MapKit.

MapKit Documentation

Posts under MapKit tag

124 Posts
Sort by:
Post not yet marked as solved
1 Replies
314 Views
The code available for download at : https://developer.apple.com/documentation/mapkit/mapkit_annotations/annotating_a_map_with_custom_data Does not work, line 18 of CustomAnnotationView.swift :  private let blurEffect = UIBlurEffect(style: .systemThickMaterial) returns with error that : Type 'UIBlurEffect.Style' has no member 'systemThickMaterial'
Posted
by
Post marked as solved
1 Replies
382 Views
Hey everyone, I wanted to ask you guys a question. I'm trying to build an app that shows buses routes. For instance, let's say that Blue Bus is going to Cupertino St but the bus I see coming right now (the Red Bus) is going to Palo Alto St, which is a block away from Cupertino Street.  I'd better off taking the Red Bus which goes a bit out of way than waiting 10 or more minutes for the right bus (Here, the Blue Bus). Ok, that's what I'm trying to do.  How do I want to do this? I'm thinking of drawing the lines of each specific bus route on the map of the app. So I can look at the app and know the routes, be able to zoom in or zoom out, and etc. I don't need to do directions, time, buses, etc. It should be relatively simple.  Any thoughts? I'm not sure how to draw the buses routes. Thank you!!!
Posted
by
Post not yet marked as solved
0 Replies
251 Views
I am using MKMapView to display a gps track as an MKPolyline. But when in satellite or hybrid view MKMapView hides parts of the track when I zoom in, even when the entire track should be visible. When I change to street view I get the polyline displayed correctly. Is this a bug in MKMapView or is there some way of forcing the line to sit above the map? My guess is it's something to do with the pseudo-3D rendering that projects trees and other objects above the map plane and results in hiding (or rather preventing the rendering of) parts of the polyline. But I haven't found any way to fix this. I am using a Mac OSX Catalina.
Posted
by
tjd
Post marked as solved
1 Replies
281 Views
My goal here is to have two users communicating with each other, one of which is coming towards the other one (for the sake of simplicity we'll call moovy the moving one and waity the one's who's waiting). Moovy needs to keep updated waity on the amount of time and distance left to reach him. Since waity might actually be waiting not only him but more than one user, I preferred to leave the calculation of the remaining time and distance on moovy's device and keep track of it on firebase's realtime database, while waity's device will be listening on a list of 'incoming users' To update firebase's real time database I put the 'calculating' login within the locationManager(didUpdateLocation) So my function looks something like this func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { let directionsRequest: MKDirections.Request = MKDirections.Request()                 directionsRequest.source = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: coordinates.latitude, longitude: coordinates.longitude), addressDictionary: nil))                 directionsRequest.destination = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: destination, longitude: destination.longitude), addressDictionary: nil))                 directionsRequest.requestsAlternateRoutes = true                 directionsRequest.transportType = .automobile                          let directions = MKDirections(request: directionsRequest)                 var approxTime: Double = 9999                 directions.calculate { [self] (response, error) -> Void in                      guard let response = response else {                          if let error = error {                              print("Error: \(error)")                          }                          return                      }                     if response.routes.count > 0 {                         let route = response.routes[0]                         approxTime = route.expectedTravelTime                         viewModel.updateDestination(destinationUserId: destination.userId, currentUsername: userStore.userData.username, currentUserLocation: locations.last!, approxTime: approxTime, distance: distanceFromChosen ?? 0) { result in                             print(result)                         }                      }                  } Where destination is Waity's location and id, viewModel is in charge of updating the real time database with Moovy's location, distance and time left to the arrival. It works pretty fine for the first 10 seconds or so and then it proceeds to stop updating the time and distance left due to a max calls limit reached on the calculate method Specifically Error: Error Domain=MKErrorDomain Code=3 "Directions Not Available" UserInfo={NSLocalizedFailureReason=Route information is not available at this moment., MKErrorGEOError=-3, MKErrorGEOErrorUserInfo={details = ({  intervalType = short;       maxRequests = 50;            "throttler.keyPath" = "app:com.app.bundleid/0x20200/short(default/any)";timeUntilReset = 33;            windowSize = 60; }); timeUntilReset = 33; }, MKDirectionsErrorCode=3, NSLocalizedDescription=Directions Not Available} Is this the right way to implement the goal I'm trying to achieve. Should I just limit the number of calls with some wait signal or should I use another approach?
Posted
by
Post marked as solved
3 Replies
986 Views
How can one prevent auto-zooming with IOS MapKit when using userTrackingMode = .followWithHeading? That is I am setting the current user location to the centre of the screen, and have "view.userTrackingMode = .followWithHeading" so that the map orientates to north, but when you zoom in/out manually the MapView automatically overrides this and zooms back to the level it seems to prefer being at. I was to be able to zoom in, then the zoom level stays like this, whilst it keeps the map centred to user location, and keeps auto-rotating to keep map aligned to north. I am using SwiftUI so have effectively do have the location being passed into GCMapView as a parameter (as the means to keep the SwiftUI GCMapView up to date with latest user location). So not sure if this is causing an issue? Some key bits (have pulled some code out to show relevant lines) of the MapKit call backs I'm using: struct FlightView: View { @EnvironmentObject var locationManager : GCLocationManager @State var centreUserLocation : Bool = false var body: some View { GCMapView( flight: flight, userLocation: locationManager.userLocation, centreUserLocation: centreUserLocation, initalZoomDone: initalZoomDone ) } } struct GCMapView : UIViewRepresentable { let map = MKMapView() func makeUIView(context: Context) -> MKMapView { map.delegate = context.coordinator map.isRotateEnabled = true map.userTrackingMode = .followWithHeading map.showsUserLocation = true return map } func updateUIView(_ view: MKMapView, context: Context) { if let userLocation = userLocation { view.centerCoordinate = userLocation view.userTrackingMode = .followWithHeading // Needed to keep map rotating to align to North } } func makeCoordinator() -> Coordinator { return Coordinator(self) } class Coordinator: NSObject, MKMapViewDelegate { var parent: GCMapView init(_ parent: GCMapView) { self.parent = parent super.init() } } }
Posted
by
Post not yet marked as solved
0 Replies
233 Views
MY application crash due to vectorkit md::LabelPart::LabelPart() I have not found any solution to resovle this issue. Can yopu please provide help in resolving issue. I have share Logs Crashed: com.apple.vectorkit.dispatch.layoutbackgroundqueue 0 VectorKit 0x1bce6ca18 md::LabelPart::LabelPart() + 28 1 VectorKit 0x1bd2c23c8 md::TextLabelPart::TextLabelPart(std::__1::shared_ptrmd::LabelText const&) + 24 2 VectorKit 0x1bd2cd010 md::HorizontalTextLabelPart::HorizontalTextLabelPart(std::__1::shared_ptrmd::LabelText const&) + 12 3 VectorKit 0x1bd2fdf14 md::PointLabelFeature::newTextPart(unsigned char, md::LabelManager*, md::Label*, md::LabelStyle*) + 584 4 VectorKit 0x1bd2fd858 md::PointLabelFeature::newRootPart(md::LabelManager*, md::Label*, md::LabelStyle*, md::LabelPartCreationOptions&) + 624 5 VectorKit 0x1bd2a2170 md::Label::createNextPart(md::LabelManager*, md::LabelPartCreationOptionsOverrides const*) + 260 6 VectorKit 0x1bd2a1aa4 md::Label::layoutForStaging(md::LabelManager*, md::LabelPool*) + 3240 7 VectorKit 0x1bd096b98 md::StandardLabeler::layoutLabelsForStaging() + 68 8 VectorKit 0x1bd096ad8 md::StandardLabeler::layoutForStaging(md::LabelUpdateOptions const&) + 120 9 VectorKit 0x1bd1fb190 md::CompositeLabeler::layoutForStaging(md::LabelUpdateOptions const&) + 52 10 VectorKit 0x1bd0675e4 md::LabelManager::layoutForStaging(md::LabelUpdateOptions const&) + 172 11 VectorKit 0x1bd069a84 std::__1::__function::__func<md::LabelManager::evaluateUpdateOperation(bool&, bool&)::$_4, std::__1::allocator<md::LabelManager::evaluateUpdateOperation(bool&, bool&)::$_4>, void ()>::operator()() + 192 12 VectorKit 0x1bcd92f5c invocation function for block in geo::TaskQueue::queueAsyncTask(std::__1::shared_ptrgeo::Task, NSObject<OS_dispatch_group>*) + 80 13 libdispatch.dylib 0x1adb8f2b0 _dispatch_call_block_and_release + 24 14 libdispatch.dylib 0x1adb90298 _dispatch_client_callout + 16 15 libdispatch.dylib 0x1adb38a40 _dispatch_lane_serial_drain$VARIANT$mp + 612 16 libdispatch.dylib 0x1adb39548 _dispatch_lane_invoke$VARIANT$mp + 468 17 libdispatch.dylib 0x1adb42fac _dispatch_workloop_worker_thread + 712 18 libsystem_pthread.dylib 0x1f648d5bc _pthread_wqthread + 272 19 libsystem_pthread.dylib 0x1f649086c start_wqthread + 8 com.apple.main-thread 0 libsystem_kernel.dylib 0x1d9d9a95c semaphore_timedwait_trap + 8 1 libdispatch.dylib 0x1adb32e98 _dispatch_sema4_timedwait$VARIANT$mp + 60 2 libdispatch.dylib 0x1adb33430 _dispatch_semaphore_wait_slow + 72 3 QuartzCore 0x1b1152884 -[CAMetalLayer nextDrawable] + 1060 4 VectorKit 0x1bd36aed0 -[MetalLayer _updateDrawable] + 36 5 VectorKit 0x1bd36b080 -[MetalLayer _onTimerFired:withPresent:] + 308 6 VectorKit 0x1bd0ba928 md::MapEngine::renderScene(double, std::__1::function<void ()>) + 104 7 VectorKit 0x1bd0b8898 md::MapEngine::onRenderTimerFired(double) + 328 8 VectorKit 0x1bd3642a4 ggl::DisplayLink::onTimerFired(double) + 40 9 VectorKit 0x1bd363de8 -[_GGLDisplayLinkTarget displayLinkFired:] + 84 10 QuartzCore 0x1b1028200 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 676 11 IOKit 0x1b85120f8 IODispatchCalloutFromCFMessage + 376 12 CoreFoundation 0x1adeb450c __CFMachPortPerform + 172 13 CoreFoundation 0x1aded80e8 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 56 14 CoreFoundation 0x1aded74ec __CFRunLoopDoSource1 + 588 15 CoreFoundation 0x1aded1660 __CFRunLoopRun + 2376 16 CoreFoundation 0x1aded07d0 CFRunLoopRunSpecific + 572 17 GraphicsServices 0x1c4612570 GSEventRunModal + 160 18 UIKitCore 0x1b07fd2d0 -[UIApplication _run] + 1052 19 UIKitCore 0x1b080284c UIApplicationMain + 164 20 LineGuide 0x102055934 main + 23 (Report.swift:23) 21 libdyld.dylib 0x1adbaf140 start + 4
Posted
by
Post not yet marked as solved
0 Replies
232 Views
Hi, I am developing a program for recording geotracks. In order for the track to continue recording even when the program is in the background, I set locationManager.allowsBackgroundLocationUpdates = true. In Backgroung Modes, I also set Location updates. This works - the track continues recording in the background even when the device is locked. However, sometimes the program will automatically terminate in the background. This can happen in a few minutes or in a few hours. I suspect that the program is forcibly terminated by iOS. How can i be guaranteed to get rid of this?
Posted
by
Post not yet marked as solved
0 Replies
298 Views
In our iOS app we use a MKTileOverlay subclass and set tileSize to CGSizeMake(512, 512). This allows tiled maps such as Open Street Maps to display larger for those that need larger font sizes. Since iOS 15 this no longer works, and the tiles are not large anymore and are small, similar to how it was before we added this feature. Once tileSize has been set, we use loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData *, NSError *))result to return the larger image NSData in the result. Did something change in OS 15 and MKTileOverlay and tileSize that would require some changes on our end?
Posted
by
Post marked as solved
1 Replies
430 Views
I’m trying to make cursor the right way. But it doesn’t work. If I set limit 5, then I can see only 5 records, even I move my finger on the map (I’m using MapKit with CloudKit). If 200 then 200, but have to wait for very long time. I’m sure my cursor is wrong. Who can help me? func getLocation(completed: @escaping (Result<[AppLocation], Error>) -> Void) {      let sortDescriptor = NSSortDescriptor(key: AppLocation.kName, ascending: true)      let query = CKQuery(recordType: RecordType.location, predicate: NSPredicate(value: true))      query.sortDescriptors = [sortDescriptor]      let operation = CKQueryOperation(query: query)      operation.resultsLimit = 5      operation.query = query      operation.queuePriority = .veryHigh      operation.qualityOfService = .userInteractive      var locations = [AppLocation]()            operation.recordFetchedBlock = { record in        let location = AppLocation(record: record)        locations.append(location)      }      operation.queryCompletionBlock = { (cursor, error) in        DispatchQueue.main.async {          if let error = error {            completed(.failure(error))          } else {            completed(.success(locations))          }        }      }      CKContainer.default().publicCloudDatabase.add(operation) }
Posted
by
Post not yet marked as solved
0 Replies
271 Views
I noticed that when searching for restaurants in the Apple Maps app, some restaurants have an "Order" button. In one of the cases that I looked at, it launches "Yelp". If I were to build an app for a specific restaurant, and that restaurant offered takeout ordering within the app, then I'd rather have Apple Maps launch my app, instead of Yelp. How would I do that? Having trouble finding the APIs for this. I still would like the "Order" button right there, as it's very useful. I'd just rather it launch my app (assuming it's installed on the user's device).
Posted
by
Post not yet marked as solved
1 Replies
720 Views
I've integrated a map view into my app (now using iOS 15). In one particular area I'm getting these kinds of errors in the console of Xcode: 2021-09-29 17:46:16.330607+0100 […] [VKDefault] Building failed to triangulate! Wrapped around the polygon without finishing... :-( List has 66 nodes: 144 [...abbreviated...] 2  2021-09-29 17:46:16.331588+0100 […] [VKDefault] Building failed to triangulate! 2021-09-29 17:46:16.493476+0100 […] [ResourceLoading] Failed to load key: 1385568764.285346958 t:35 kt:0 type: 35, -7: GEOErrorDomain I came across this only because rendering of a static map image using MKMapSnapshotter of that location at a certain zoom level keeps failing without an error all the time, i.e. the completion handler is never called, not even with an error. If I change the snapshot region or use a wider span I have no issues. For privacy I won't share the affected location here in the forum. Any ideas? Is this some kind of unhandled error with problematic map data from Apple?
Posted
by
Post not yet marked as solved
0 Replies
212 Views
I've notice the 3D globe in apple Maps app is different then the ones provided in mapkit mkmaptype. How can I replicate the style?
Posted
by
Post not yet marked as solved
0 Replies
243 Views
We have a SDK that we ship via Cocoapods. It contains a map that makes some api calls and then renders custom annotations on the map. I’m running into an issue with MKAnnotationView when trying to integrate with a customer app. At dev time and in our sample apps, the annotations appear correctly. When the customer tries to integrate it, the map annotations don’t work. Has anyone ever seen this issue before? I'm not getting any error messages. The relevant MKMapViewDelegate code is public func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { if let place = annotation as? Place { os_log("Returning saved annotation", log: OSLog.map, type: .info) return mapView.dequeueReusableAnnotationView(withIdentifier: PlacesAnnotationView.ReuseID) ?? PlacesAnnotationView(annotation: place, reuseIdentifier: PlacesAnnotationView.ReuseID) } os_log("Place was nil", log: OSLog.map, type: .error) return nil } public func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { if let tileOverlay = overlay as? MKTileOverlay { return MKTileOverlayRenderer(tileOverlay: tileOverlay) } return MKOverlayRenderer(overlay: overlay) } The ReuseID is in the format of OurName_PlacesAnnotation. In viewDidLoad, I'm calling map.register(PlacesAnnotationView.self, forAnnotationViewWithReuseIdentifier: "placesViewReuseIdentitier").
Post not yet marked as solved
0 Replies
207 Views
Folks; Is there any reason I only receive 25 items in any MKLocalSearch not matter what the request entails? MacOS 11.6 - Xcode 13.0 Steve
Posted
by
Post marked as solved
2 Replies
346 Views
Hello, I would like to store, save users data inside the app (Best option to store it in the cloud) with location the user reach. The loaction check in point on the map is within radius 100 meters. So the thing I would like to do is to show as a list in the second viewcontroller Zdobyte Szczyty, names of the locations sczyt.name from the first ViewController (the one with the map) that user reached (clicked with a button to check in). I thought about adding a button to the annotation view, which should do the check in if the user is in this radius - but it does not show me the button, just pin. Here is my code: import UIKit import MapKit class ViewController: UIViewController, MKMapViewDelegate{ let locationManager = CLLocationManager() struct Szczyt { let name: String let opis: String let lattitude: CLLocationDegrees let longtitude: CLLocationDegrees var coordinate: CLLocationCoordinate2D { .init(latitude: lattitude, longitude: longtitude) } } @IBOutlet weak var mapView: MKMapView! @IBAction func mapTypeSegmentSelected(_ sender: UISegmentedControl) { switch sender.selectedSegmentIndex { case 0: mapView.mapType = .standard case 1: mapView.mapType = .satellite default: mapView.mapType = .hybrid } } private(set) var circles: [MKCircle]! let szczyty = [Szczyt(name: "one", opis: "describtion", lattitude: 53.865061725039226, longtitude: 17.708595782487315), Szczyt(name: "two", opis: "describtion2", lattitude: 55.893874478583854, longtitude: 24.896341184611302), Szczyt(name: "Skrzyczne", opis: "describtion3", lattitude: 49.685059170137386, longtitude: 19.030076144463138)] override func viewDidLoad() { super.viewDidLoad() mapView.register(MKMarkerAnnotationView.self, forAnnotationViewWithReuseIdentifier: "identifier") checkLocationServices() znajdzSzczytyNaMapie(szczyty) circles = szczyty.map { MKCircle(center: $0.coordinate, radius: 100) } mapView.addOverlays(circles!) mapView.delegate = self } func checkLocationServices() { if CLLocationManager.locationServicesEnabled() { checkLocationAuthorization() } else { // Show alert letting the user know they have to turn this on. } } func checkLocationAuthorization() { switch CLLocationManager.authorizationStatus() { case .authorizedWhenInUse: mapView.showsUserLocation = true case .denied: // Show alert telling users how to turn on permissions break case .notDetermined: locationManager.requestWhenInUseAuthorization() mapView.showsUserLocation = true case .restricted: // Show an alert letting them know what’s up break case .authorizedAlways: break } } func znajdzSzczytyNaMapie(_ szczyty: [Szczyt]) { for szczyt in szczyty { let annotations = MKPointAnnotation() annotations.title = szczyt.name annotations.subtitle = szczyt.opis annotations.coordinate = CLLocationCoordinate2D(latitude: szczyt.lattitude, longitude: szczyt.longtitude) mapView.addAnnotation(annotations) } } func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { guard !(annotation is MKUserLocation) else { return nil } //let annotationView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: "MyMarker") let identifier = "identifier" //guard let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? MKMarkerAnnotationView else { return nil } guard let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier, for: annotation) as? MKMarkerAnnotationView else { return nil } let btn = UIButton(type: .detailDisclosure) annotationView.rightCalloutAccessoryView = btn switch annotation.title!! { case "one": annotationView.markerTintColor = UIColor(red: 0.86, green: 0.99, blue: 0.79, alpha: 1.00) annotationView.glyphImage = UIImage(named: "one_pic") case "two": annotationView.markerTintColor = UIColor(red: 0.80, green: 0.98, blue: 0.73, alpha: 1.00) annotationView.glyphImage = UIImage(named: "two_pic"") case "Skrzyczne": annotationView.markerTintColor = UIColor(red: 0.02, green: 0.61, blue: 0.69, alpha: 1.00) annotationView.glyphImage = UIImage(named: "three_pic"") default: annotationView.markerTintColor = UIColor.green annotationView.glyphImage = UIImage(named: "default") } return annotationView } func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { let circleRenderer = MKCircleRenderer(overlay: overlay) circleRenderer.strokeColor = UIColor.green circleRenderer.fillColor = UIColor.green circleRenderer.alpha = 0.3 circleRenderer.lineWidth = 1.0 return circleRenderer } } This is my Zdobyte Szczyty viewcontroller: import UIKit import SwiftUI class Zdobyte_ViewController: UIViewController {     struct ContentView: View {         var body: some View {            Text("Test viewcontroller gór")     }     }     override func viewDidLoad() {         super.viewDidLoad()     }      } Here is the button view I would like to have with the pin image, but now it only shows the pin with the image: This is how my viewcontrollers view looks like:
Posted
by
Post marked as solved
2 Replies
506 Views
New guy here, hacking away on the SwiftUI tutorial (https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation ): In MapView.swift it would be useful to add a pin/marker. Thus adding: struct Place: Identifiable {     let id = UUID()     let name: String     let coordinate: CLLocationCoordinate2D } var annotations = [ Place(name: "Xyz", coordinate: CLLocationCoordinate2D(latitude: 34.011286, longitude: -116.166868)) ] and modifying the View to: var body: some View {     Map(coordinateRegion: $region, annotationItems: annotations) {         MapPin(coordinate: $0.coordinate)     }     .onAppear {         setRegion(coordinate)     } } puts a pin on the Turtle Rock map using the hard-coded latitude and longitude. However, changing (latitude: 34.011286, longitude: -116.166868) to (latitude: coordinate.latitude, longitude: coordinate.longitude) results in error "Cannot use instance member 'coordinate' within property initializer; property initializers run before 'self' is available." What modifications to the project are required to access the latitude and longitude for use in the annotation?
Posted
by
Post marked as solved
1 Replies
375 Views
I am using the CloudKit cursor in my app and the cursor works because I can see it from the print (cursor code: https://controlc.com/0d42933b). However, I see nothing on the map (I am using MapKit, CloudKit, and SwiftUI in my project). Below is my View Model: … func fetchLocations() {         ckController.database.fetchRecords(with: RecordType.location) { (results, moreComing, error) in             print("fetchRecords: results.count = \(results.count), moreComing = \(moreComing), error = \(String(describing: error))")             if !moreComing {                 DispatchQueue.main.async { [self] in                     objects = results                                     }             }         }  } … Below is my implementation in the view: … .task {      if locationManager.locations.isEmpty {         viewModel.fetchLocations()      }  } … Print (I have 155 records): fetchRecords: results.count = 1, moreComing = true, error = nil fetchRecords: results.count = 2, moreComing = true, error = nil … fetchRecords: results.count = 155, moreComing = true, error = nil fetchRecords: results.count = 155, moreComing = false, error = nil Somebody knows solutions? Where is a mistake and how I can see all my elements on the map finally?
Posted
by
Post not yet marked as solved
0 Replies
265 Views
I think there is a bug in MapKit when pedestrian directions are requested. The step geometry returned in the route of the MKDirections.Response is "shifted". The attached picture shows an example of the route steps returned for pedestrian directions between two points. The geometry of the steps on iOS15 is on the left, and the expected geometry of the steps is on the right. The problem are: The geometry for the first and second steps are single points located at the beginning of the route. In the example, the geometry of the second step should cover the first two points of the route's polyline. The geometry of the remaining steps are shifted. The steps start and end one point before the expected location on the route polyline. This only happens on iOS15, and there is no problem on iOS14. Below is a unit-test to reproduce the bug. The coordinates used in the test correspond to the picture. MKStepsTests.swift The unit test pass on iOS14 and failed on iOS15. On line 74, the test will failed on iOS15 because the first and second step of the route have the same geometry. Due to this bug, our application does not provide the correct instructions on iOS15.
Posted
by
Post marked as solved
1 Replies
252 Views
Hi, I've been asked to estimate a project that would require ARKit, unfortunately I'm new to the technology and need some quick answers as to how it works. The app my customer wants to build would overlay simple graphics at street addresses, as the user pointed their camera at buildings or storefronts. For this to work, I'd need to be able to have the AR view tell me what map locations or street addresses are being seen in the camera view. Is this possible? Thanks, Frank
Posted
by