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

Posts under MapKit tag

200 Posts

Post

Replies

Boosts

Views

Activity

addSubview slows down with sibling count, process-wide, once a MapKit location view has been in a window
Filed as FB25405148 with a small sample project. Posting here in case anyone else has hit this or knows a better workaround. Once a MapKit location view has been in a window, addSubview: anywhere in the process takes time proportional to the number of subviews the parent already has. The parent doesn't have to belong to the map. On iPhone Air with iOS 27.2, in a clean app, adding 8,000 plain UIViews to a plain UIView took 85 ms without a location view and 4,992 ms with one. You won't see this with a few hundred views. Up to about 1,000 siblings, the whole batch costs less than 100 ms extra. Map apps can hit it because annotation views are siblings under one container. On the same phone, adding 5,000 annotation views in batches took the longest frame from 25 ms to 208 ms. It happens with the default location view, with an MKUserLocationView returned from mapView(_:viewFor:), and with a bare MKUserLocationView added to a window by hand. A plain MKAnnotationView doesn't cause it. From LLDB on the simulator, it looks like MapKit's first call to _accessibilitySetInterfaceStyleIntent: installs _UIAccessibilityInterfaceStyleVisitor, and that's what slows later adds. Returning a plain MKAnnotationView for MKUserLocation avoids it, but gives up the system view. Only iOS 27.2 has been tested so far. Has anyone seen this on other versions, or found a way to keep the system location view without the cost?
0
0
34
1d
MKMapSnapshotter in personal PDF photo albums — clarification of permitted use and appropriate Apple contact
Hello, I am developing Partance, a native iOS/iPadOS application for planning trips and keeping a personal travel journal. The application already generates PDF souvenir albums containing the user’s photographs, captions and journal entries. Before adding static maps, I would like to identify official Apple guidance covering the intended use. Proposed feature The user would explicitly choose to include: one overview map showing the locations represented in their album; smaller maps accompanying individual journal entries. The maps would be generated using MKMapSnapshotter, with markers added by the application. The marker coordinates come from the user’s photographs already stored in their journal, rather than from saved Apple geocoding or search results. This would not be an offline-navigation feature, a downloadable map collection, a map database or a substitute mapping service. Personal use of the resulting PDF Each participant in a trip has their own personal journal and generates their own album. The resulting PDF: is intended as a personal souvenir, not for sale, publication or public distribution; may be retained indefinitely in Partance until the user explicitly deletes it; may also be saved in Files or transferred to the user’s own computer; may be printed at home or uploaded to a commercial photo-book printing service solely to manufacture the user’s personal physical album. Intermediate map images could be deleted after PDF generation. However, the map images embedded in the PDF would remain part of the user’s album. Documentation and uncertainty Apple’s archived “Location and Maps Programming Guide,” under “Creating a Snapshot of a Map,” explicitly describes using MKMapSnapshotter to implement printing: https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/LocationAwarenessPG/MapKit/MapKit.html However, Attachment 6 of the Apple Developer Program License Agreement, particularly sections 2.1, 2.3 and 2.5, leaves me uncertain about retaining the generated images permanently inside a personal PDF: https://developer.apple.com/support/terms/apple-developer-program-license-agreement/ My questions are: Is there official Apple guidance confirming whether this specific use is permitted, including indefinite retention of the personal PDF? Is there a documented distinction between retaining map data as an application cache and retaining a snapshot within a user-generated document? What attribution, logos or legal notices must accompany the maps in the PDF and printed album, including any requirements relating to Apple’s data providers? Does using a commercial printing service solely to produce the user’s personal photo book require any additional permission? If these questions cannot be answered here, which Apple team or contact channel should handle them? I have already submitted a request through Apple’s Rights and Permissions form and received an automatic acknowledgement only. The map-export feature has not been implemented. I am seeking an official documentation reference or the appropriate Apple contact, rather than asking other developers to provide a legal opinion. Thank you for your help.
0
0
37
4d
Feature Request - MapKit JS: Add "above roads or labels" OverlayLevel to TileOverlay
The MapKit Framework for Swift lets a developer control where a raster/tile overlay is drawn relative to other map content using MKOverlayLevel (.aboveRoads | .aboveLabels) passed to MKMapView.addOverlay(). MapKit JS has no equivalent. There is no level parameter to say "draw this above roads" or "draw this above labels." Please add an overlay-level option to MapKit JS 1️⃣ MapKit JS with TileOverlay Opacity=1 An opacity slider is implemented to help the map viewer to orient themselves with the MapKit JS Hybrid style with a sample raster TileOverlay. 2️⃣ MapKit JS with opacity via slider 3️⃣ MapKit for Swift demonstrates the options for above roads or labels
1
0
249
3w
Opening Hours for Map Routing
I'm looking to access Apple Maps place metadata, particularly opening hours to route a user between 3 points. Suppose point C opens in the morning and B in the evening, I'd make sure to route the user based on which place is open at the time, eg A => C => B I understand from this thread that opening hours is not something app integrations can export. I was also checking out the batch endpoint. While its not necessary to export the data or display it inline, I'm looking for ways that my app can consume or consider this when routing between multiple places.
0
0
190
Oct ’26
Can MKDirections route geometry drive a custom guidance view without an MKMapView?
I'm building a cycling navigation app. Route calculation uses MDirections with transportType = „cycling (ioS 26). During navigation I want to render guidance on a custom, high-contrast Canvas view designed for glanceability on a handlebar-mounted phone: the route polyline drawn as a simple ribbon, plus turn instructions derived from the route steps. There is a standard Map/MKMapView elsewhere in the app for route preview and selection. The Program License Agreement (Attachment 6) says Map Data may be displayed "only on an Apple map provided through the Apple Maps Service". My questions: Does rendering the MKRoute polyline in my own view, without an underlying Apple map, comply with the Mapkit terms? Does it matter that an Apple map view is used for the preview screen, just not during turn-by-turn guidance? If drawing the polyline itself is not permitted, is displaying only derived guidance (my map-matched position, distance to next turn, instruction text/arrow from MKRoute.Step) permitted without an Apple map? I'd like to know the compliant design before building. Thank you.
0
0
296
Sep ’26
Disable showing bikesharing POI pins in Maps
We have a micromobility / scooter sharing app. Apple apparently introduced some sort of new feature some bikesharing apps' vehicles are shown in Maps. Similar to car rental services or public transports, we now see those bikes inside our app. Which we don't like. Because they are our competitor company. We tried disabling .carRental, .parking, .publicTransport etc options for mapView's pointOfInterestFilter option. None of them worked. We had to do .excludeAll and provided a version to our client to test with this. I just don't understand how this ridesharing app information comes and how it is shown in our app. But we need to find a solution to this. This feature doesn't make any sense to our company.
1
0
627
Aug ’26
Optimizing MapKit performance for high-frequency dynamic annotations / large datasets in Swift
Hi everyone, I am currently working on a SwiftUI / Swift client project that visualizes live, distributed infrastructure nodes across a dynamic map interface using MapKit. As the dataset scales and coordinates update dynamically, I want to ensure rendering performance stays smooth and memory overhead remains low. I would appreciate some guidance from the community on best practices for this scenario: Clustering vs. Custom Overlays: For frequently updating data points, is native annotation clustering (MKClusterAnnotation / clusteringIdentifier) the standard recommendation, or does heavy clustering introduce recalculation overhead during rapid state changes? Visible Region Filtering: What is the recommended pattern in modern MapKit (SwiftUI Map vs. MKMapViewRepresentable) for culling off-screen data points vs. letting MapKit handle view recycling? High-Frequency Updates: When coordinates or statuses update frequently (e.g., via polling or streaming data), what are the best practices to avoid unnecessary view rebuilds and maintain 60/120 FPS panning and zooming? Any architectural tips, performance benchmarks, or WWDC sessions you recommend reviewing for large-scale dynamic rendering would be greatly appreciated! Thanks in advance.
0
0
559
Aug ’26
MKDirections returns "Directions Not Available" when A and B are outside mainland China (e.g. Tokyo–Osaka)
I use MapKit and MKDirections for driving directions. The error "Directions Not Available" appears when the two points (A and B) are outside mainland China (e.g. Tokyo → Osaka). For routes inside China (e.g. Shanghai → Beijing), the same code works. let req = MKDirections.Request() req.source = MKMapItem(placemark: MKPlacemark(coordinate: origin)) req.destination = MKMapItem(placemark: MKPlacemark(coordinate: destination)) req.transportType = .automobile MKDirections(request: req).calculate { response, error in // Tokyo–Osaka (outside China): "Directions Not Available" // Shanghai–Beijing (inside China): works } Questions: Is MKDirections intended to support only routes within the device’s region (e.g. China)? When A/B are abroad, is "Directions Not Available" expected? Is this documented? For cross-country or overseas routes (e.g. Tokyo–Osaka), what is the recommended approach—third-party routing API + drawing on MapKit? Thanks.
1
1
713
Aug ’26
Apple Maps Server API: Documentation and current Developer Portal authentication workflow
Hi everyone, I'm integrating Apple Maps Server API into the backend of a production iOS application (Java / Spring Boot). Before posting, I reviewed the following Apple documentation: Apple Maps Server API Creating and using tokens with Maps Server API Integrating the Apple Maps Server API into Java Server Applications Try Maps Server API I also verified the current Developer Portal behavior and inspected the network requests made by the Try Maps Server API page. What I verified Using the current Apple Developer Portal: Certificates, Identifiers & Profiles → Services → Maps → Configure Tokens I can successfully create a Server API token. I verified the following behavior: A Server API token can be created successfully. The token only supports the None restriction type. The token expires after 7 days. The Try Maps Server API page first calls GET /v1/token using the Server API token. The /v1/token endpoint returns a short-lived Maps access token. That Maps access token is then used to call Apple Maps Server API endpoints such as /v1/place, /v1/search, and /v1/reverseGeocode. Documentation vs. Developer Portal The current Apple Maps Server API documentation describes a production authentication flow in which developers: Create a Maps Identifier Create a Maps Private Key (.p8) Generate a signed authentication JWT Exchange that JWT for a Maps access token via GET /v1/token Use the Maps access token to call Apple Maps Server API However, in my current Apple Developer account: There is no Maps IDs section under Certificates, Identifiers & Profiles → Identifiers. There is no Maps or Apple Maps Server API key available under Certificates, Identifiers & Profiles → Keys. My account information: Apple Developer Program: Active Account Type: Individual Role: Account Holder Based on these observations, I'm not sure how the authentication flow described in the documentation relates to the authentication flow currently supported by the Developer Portal. Questions What is the currently recommended production authentication flow for Apple Maps Server API? Is the Server API token created from Certificates, Identifiers & Profiles → Services → Maps → Configure Tokens intended only for development and testing, or is it also the recommended authentication mechanism for long-running production backend services? If the production authentication flow described in the documentation is still the recommended approach, how can developers create a Maps Identifier and Maps Private Key using the current Developer Portal? Any clarification from Apple or from developers who have recently deployed Apple Maps Server API in production would be greatly appreciated. Thank you!
0
0
626
Aug ’26
Place Card API - SwiftUI
Hello everyone, I have a question regarding the Place Card API I'm using .mapFeatureSelectionAccessory(.automatic) to get information about a POI on the Map The trouble I have is that it forces me to use Apple Maps for directions, which isn't ideal for my use case For example, I support commercial navigation, including large units such as trucks, and I have my own routing engine for this Is there a way to handle the directions via my routing engine instead? Is there a modifier I'm missing, or should I suggest this as an enhancement? Thanks, great work MapKit team
2
0
838
Aug ’26
MapKit/VectorKit Crash – NSMallocException During Map Rendering
Dear Apple Developer Support Team, We are experiencing a crash in our iOS application that appears to originate within Apple's MapKit/VectorKit framework. Based on the crash logs, the failure occurs during map rendering operations inside VectorKit. The crash stack contains only Apple framework calls and does not include any application business logic methods. Crash Summary: Exception Type: NSMallocException Framework: MapKit / VectorKit Crash Location: VectorKit map rendering pipeline Observed Behavior: Application crashes while rendering map-related data Our analysis indicates that the crash occurs within Apple's native map rendering engine. Since the stack trace does not contain any application-specific code, we are unable to determine whether the issue is caused by framework behavior, an OS/device-specific condition, or a framework-level defect. We would appreciate your assistance in reviewing this issue and advising whether there are any known MapKit/VectorKit issues related to this crash signature. We can provide additional crash logs, device details, and reproduction information if required. Thank you for your support. Kind Regards, Yogesh Raj Ushyaku Software Solutions LLP
1
2
1k
Aug ’26
How to use the Map Server API over the long term?
我想使用苹果地图Api,我需要地图长期令牌或密钥 1.如果创建地图令牌仅7天到期(p1),我需要一个长寿命令牌。 2.如果像p2那样创建地图金鑰,則沒有MapKit 3.如果创建地图密钥需要首先创建一个标识符,如p3和p4,没有地图ID 那么,从长远来看,我到底应该如何有效地使用Map Server API呢? p1 : linkText p2: linkText p3: linkText p4: linkText
0
0
687
Jul ’26
SwiftUI Map Marker monogram replaces its title when Map is embedded in a List
SwiftUI Marker monogram replaces title inside List Marker(_:monogram:coordinate:) renders incorrectly when the Map is embedded in a List. Expected: LDN inside the marker pin London below the pin Actual inside List: LDN appears in the title position London is missing The pin has no monogram Screenshots With List — incorrect rendering Without List — expected rendering With List import SwiftUI import MapKit struct MapListView: View { let position = CLLocationCoordinate2D( latitude: 51.5074, longitude: -0.1278 ) var body: some View { List { Map( initialPosition: .region( MKCoordinateRegion( center: position, span: .init( latitudeDelta: 0.2, longitudeDelta: 0.2 ) ) ) ) { Marker( "London", monogram: Text("LDN"), coordinate: position ) } .frame(height: 260) } } } Without List struct MapView: View { let position = CLLocationCoordinate2D( latitude: 51.5074, longitude: -0.1278 ) var body: some View { Map( initialPosition: .region( MKCoordinateRegion( center: position, span: .init( latitudeDelta: 0.2, longitudeDelta: 0.2 ) ) ) ) { Marker( "London", monogram: Text("LDN"), coordinate: position ) } .frame(height: 260) } } The marker renders correctly when the Map is not inside a List. Is this a known SwiftUI or MapKit bug?
0
0
169
Jul ’26
Full Keyboard Access support for custom MKAnnotationView in MKMapView
We’re working on improving the accessibility of a MKMapView that displays custom MKAnnotationView instances. Our implementation is fully accessible with VoiceOver: The custom annotation views expose the correct accessibility information. Users can navigate between annotations using custom accessibility rotors. The overall VoiceOver experience works as expected. However, we’re unable to make the custom MKAnnotationView instances accessible through Full Keyboard Access (FKA). Despite configuring the annotation views as accessibility elements and experimenting with focus-related APIs, the annotations never become reachable through keyboard navigation. They appear to be skipped entirely by the FKA focus system. Is there a supported way to make custom MKAnnotationView instances participate in Full Keyboard Access navigation? If this scenario is currently unsupported, is there a recommended approach or any plans to expose public APIs that would allow developers to provide a keyboard-accessible experience for custom annotations in MKMapView? Any guidance would be greatly appreciated.
4
0
1.3k
Jul ’26
CarPlay handoff to MapKit fails on n+1 attempts
A CarPlay app with the carplay-fueling entitlement displays a list of stations. Tapping a station hands off to the Maps app for directions and navigation. Sometimes the handoff will return unsuccessful from the open call. The first attempt will succeeed. I immedediately return to my app and select a different station. The second attemp may succeed or it may fail. If the handoff attempt fails I can switch to the Maps app, return to MyApp, tap the same station row that just failed and the handoff will succeed. The issue is across multiple iOS versions (18 and 26) and multiple devices. Looking at the sysdiagnose logs, a successful handoff looks like this: 2026-06-26 15:56:27.762040 lsd: pid 14570 requests to open URL with scheme <private> 2026-06-26 15:56:27.768475 lsd: [FBSSystemService][0xee43] Sending request to open "com.apple.Maps" 2026-06-26 15:56:27.782145 lsd: [FBSSystemService][0xee43] Request successful: <BSProcessHandle ... Maps:17170; valid: YES> A failed handoff looks like this: 2026-06-26 17:05:00.162432 lsd: pid 14570 requests to open URL with scheme <private> 2026-06-26 17:05:00.171618 lsd: [FBSSystemService][0x3d16] Sending request to open "com.apple.Maps" 2026-06-26 17:05:00.173776 SpringBoard: Received request to open "com.apple.Maps" with url "maps:<private>" from lsd:122 on behalf of MyApp:14570. 2026-06-26 17:05:00.174110 SpringBoard: Received untrusted open application request for "com.apple.Maps" from <FBApplicationProcess ... app<au.com.philk.MyApp>:14570> 2026-06-26 17:05:00.175103 SpringBoard: Open "com.apple.Maps" request from lsd:122 failed with error: FBSOpenApplicationServiceErrorDomain; code: 1 ("RequestDenied") Reason: Application au.com.philk.MyApp is neither visible nor entitled, so may not perform un-trusted user actions. Underlying: FBSOpenApplicationErrorDomain; code: 3 ("Security") Looking more closely at the logs, the template UI is brought forward: CarPlay: DBApplicationSceneHostViewController; au.com.philk.MyApp; proxy: com.apple.CarPlayTemplateUIHost RunningBoard briefly grants MyApp foreground / render assertions: Foreground Template App FBWorkspace (ForegroundFocal) Set darwin role to: UserInteractiveFocal visibility is yes However, SpringBoard also records MyApp as background: 2026-06-26 17:04:53.709527 SpringBoard: Application process state changed for au.com.philk.MyApp: taskState: Running; visibility: Background The denied open at 17:05:00 appears to use SpringBoard's application visibility/trust decision, not the fact that the user is actively interacting with MyApp's CarPlay template UI. The following is logged: Application au.com.philk.MyApp is neither visible nor entitled, so may not perform un-trusted user actions. I have tried two different ways to pass/open the URL, and both will fail, usually after the first attempt. A plain maps:// URL Creating a MapItem and using: MKMapItem.openInMaps(launchOptions:from:completionHandler:) I wonder if this is the same or similar bug to the one reported here? https://developer.apple.com/forums/thread/787788?answerId=843556022#843556022 What is the root cause of the random failures? Any help or pointers will be appreciated.
5
0
917
Jul ’26
addSubview slows down with sibling count, process-wide, once a MapKit location view has been in a window
Filed as FB25405148 with a small sample project. Posting here in case anyone else has hit this or knows a better workaround. Once a MapKit location view has been in a window, addSubview: anywhere in the process takes time proportional to the number of subviews the parent already has. The parent doesn't have to belong to the map. On iPhone Air with iOS 27.2, in a clean app, adding 8,000 plain UIViews to a plain UIView took 85 ms without a location view and 4,992 ms with one. You won't see this with a few hundred views. Up to about 1,000 siblings, the whole batch costs less than 100 ms extra. Map apps can hit it because annotation views are siblings under one container. On the same phone, adding 5,000 annotation views in batches took the longest frame from 25 ms to 208 ms. It happens with the default location view, with an MKUserLocationView returned from mapView(_:viewFor:), and with a bare MKUserLocationView added to a window by hand. A plain MKAnnotationView doesn't cause it. From LLDB on the simulator, it looks like MapKit's first call to _accessibilitySetInterfaceStyleIntent: installs _UIAccessibilityInterfaceStyleVisitor, and that's what slows later adds. Returning a plain MKAnnotationView for MKUserLocation avoids it, but gives up the system view. Only iOS 27.2 has been tested so far. Has anyone seen this on other versions, or found a way to keep the system location view without the cost?
Replies
0
Boosts
0
Views
34
Activity
1d
MKMapSnapshotter in personal PDF photo albums — clarification of permitted use and appropriate Apple contact
Hello, I am developing Partance, a native iOS/iPadOS application for planning trips and keeping a personal travel journal. The application already generates PDF souvenir albums containing the user’s photographs, captions and journal entries. Before adding static maps, I would like to identify official Apple guidance covering the intended use. Proposed feature The user would explicitly choose to include: one overview map showing the locations represented in their album; smaller maps accompanying individual journal entries. The maps would be generated using MKMapSnapshotter, with markers added by the application. The marker coordinates come from the user’s photographs already stored in their journal, rather than from saved Apple geocoding or search results. This would not be an offline-navigation feature, a downloadable map collection, a map database or a substitute mapping service. Personal use of the resulting PDF Each participant in a trip has their own personal journal and generates their own album. The resulting PDF: is intended as a personal souvenir, not for sale, publication or public distribution; may be retained indefinitely in Partance until the user explicitly deletes it; may also be saved in Files or transferred to the user’s own computer; may be printed at home or uploaded to a commercial photo-book printing service solely to manufacture the user’s personal physical album. Intermediate map images could be deleted after PDF generation. However, the map images embedded in the PDF would remain part of the user’s album. Documentation and uncertainty Apple’s archived “Location and Maps Programming Guide,” under “Creating a Snapshot of a Map,” explicitly describes using MKMapSnapshotter to implement printing: https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/LocationAwarenessPG/MapKit/MapKit.html However, Attachment 6 of the Apple Developer Program License Agreement, particularly sections 2.1, 2.3 and 2.5, leaves me uncertain about retaining the generated images permanently inside a personal PDF: https://developer.apple.com/support/terms/apple-developer-program-license-agreement/ My questions are: Is there official Apple guidance confirming whether this specific use is permitted, including indefinite retention of the personal PDF? Is there a documented distinction between retaining map data as an application cache and retaining a snapshot within a user-generated document? What attribution, logos or legal notices must accompany the maps in the PDF and printed album, including any requirements relating to Apple’s data providers? Does using a commercial printing service solely to produce the user’s personal photo book require any additional permission? If these questions cannot be answered here, which Apple team or contact channel should handle them? I have already submitted a request through Apple’s Rights and Permissions form and received an automatic acknowledgement only. The map-export feature has not been implemented. I am seeking an official documentation reference or the appropriate Apple contact, rather than asking other developers to provide a legal opinion. Thank you for your help.
Replies
0
Boosts
0
Views
37
Activity
4d
Feature Request - MapKit JS: Add "above roads or labels" OverlayLevel to TileOverlay
The MapKit Framework for Swift lets a developer control where a raster/tile overlay is drawn relative to other map content using MKOverlayLevel (.aboveRoads | .aboveLabels) passed to MKMapView.addOverlay(). MapKit JS has no equivalent. There is no level parameter to say "draw this above roads" or "draw this above labels." Please add an overlay-level option to MapKit JS 1️⃣ MapKit JS with TileOverlay Opacity=1 An opacity slider is implemented to help the map viewer to orient themselves with the MapKit JS Hybrid style with a sample raster TileOverlay. 2️⃣ MapKit JS with opacity via slider 3️⃣ MapKit for Swift demonstrates the options for above roads or labels
Replies
1
Boosts
0
Views
249
Activity
3w
Opening Hours for Map Routing
I'm looking to access Apple Maps place metadata, particularly opening hours to route a user between 3 points. Suppose point C opens in the morning and B in the evening, I'd make sure to route the user based on which place is open at the time, eg A => C => B I understand from this thread that opening hours is not something app integrations can export. I was also checking out the batch endpoint. While its not necessary to export the data or display it inline, I'm looking for ways that my app can consume or consider this when routing between multiple places.
Replies
0
Boosts
0
Views
190
Activity
Oct ’26
Offline Maps for App via MapKit
I’m building an iOS app using MapKit that allows users to create and navigate trails. I need offline map functionality, I was wondering if MapKit supports that. If not I was wondering if MapBox is a viable alternative to MapKit though I would prefer using MapKit. Thanks!
Replies
3
Boosts
3
Views
1.3k
Activity
Sep ’26
Can MKDirections route geometry drive a custom guidance view without an MKMapView?
I'm building a cycling navigation app. Route calculation uses MDirections with transportType = „cycling (ioS 26). During navigation I want to render guidance on a custom, high-contrast Canvas view designed for glanceability on a handlebar-mounted phone: the route polyline drawn as a simple ribbon, plus turn instructions derived from the route steps. There is a standard Map/MKMapView elsewhere in the app for route preview and selection. The Program License Agreement (Attachment 6) says Map Data may be displayed "only on an Apple map provided through the Apple Maps Service". My questions: Does rendering the MKRoute polyline in my own view, without an underlying Apple map, comply with the Mapkit terms? Does it matter that an Apple map view is used for the preview screen, just not during turn-by-turn guidance? If drawing the polyline itself is not permitted, is displaying only derived guidance (my map-matched position, distance to next turn, instruction text/arrow from MKRoute.Step) permitted without an Apple map? I'd like to know the compliant design before building. Thank you.
Replies
0
Boosts
0
Views
296
Activity
Sep ’26
Disable showing bikesharing POI pins in Maps
We have a micromobility / scooter sharing app. Apple apparently introduced some sort of new feature some bikesharing apps' vehicles are shown in Maps. Similar to car rental services or public transports, we now see those bikes inside our app. Which we don't like. Because they are our competitor company. We tried disabling .carRental, .parking, .publicTransport etc options for mapView's pointOfInterestFilter option. None of them worked. We had to do .excludeAll and provided a version to our client to test with this. I just don't understand how this ridesharing app information comes and how it is shown in our app. But we need to find a solution to this. This feature doesn't make any sense to our company.
Replies
1
Boosts
0
Views
627
Activity
Aug ’26
Optimizing MapKit performance for high-frequency dynamic annotations / large datasets in Swift
Hi everyone, I am currently working on a SwiftUI / Swift client project that visualizes live, distributed infrastructure nodes across a dynamic map interface using MapKit. As the dataset scales and coordinates update dynamically, I want to ensure rendering performance stays smooth and memory overhead remains low. I would appreciate some guidance from the community on best practices for this scenario: Clustering vs. Custom Overlays: For frequently updating data points, is native annotation clustering (MKClusterAnnotation / clusteringIdentifier) the standard recommendation, or does heavy clustering introduce recalculation overhead during rapid state changes? Visible Region Filtering: What is the recommended pattern in modern MapKit (SwiftUI Map vs. MKMapViewRepresentable) for culling off-screen data points vs. letting MapKit handle view recycling? High-Frequency Updates: When coordinates or statuses update frequently (e.g., via polling or streaming data), what are the best practices to avoid unnecessary view rebuilds and maintain 60/120 FPS panning and zooming? Any architectural tips, performance benchmarks, or WWDC sessions you recommend reviewing for large-scale dynamic rendering would be greatly appreciated! Thanks in advance.
Replies
0
Boosts
0
Views
559
Activity
Aug ’26
MKDirections returns "Directions Not Available" when A and B are outside mainland China (e.g. Tokyo–Osaka)
I use MapKit and MKDirections for driving directions. The error "Directions Not Available" appears when the two points (A and B) are outside mainland China (e.g. Tokyo → Osaka). For routes inside China (e.g. Shanghai → Beijing), the same code works. let req = MKDirections.Request() req.source = MKMapItem(placemark: MKPlacemark(coordinate: origin)) req.destination = MKMapItem(placemark: MKPlacemark(coordinate: destination)) req.transportType = .automobile MKDirections(request: req).calculate { response, error in // Tokyo–Osaka (outside China): "Directions Not Available" // Shanghai–Beijing (inside China): works } Questions: Is MKDirections intended to support only routes within the device’s region (e.g. China)? When A/B are abroad, is "Directions Not Available" expected? Is this documented? For cross-country or overseas routes (e.g. Tokyo–Osaka), what is the recommended approach—third-party routing API + drawing on MapKit? Thanks.
Replies
1
Boosts
1
Views
713
Activity
Aug ’26
Apple Maps Server API: Documentation and current Developer Portal authentication workflow
Hi everyone, I'm integrating Apple Maps Server API into the backend of a production iOS application (Java / Spring Boot). Before posting, I reviewed the following Apple documentation: Apple Maps Server API Creating and using tokens with Maps Server API Integrating the Apple Maps Server API into Java Server Applications Try Maps Server API I also verified the current Developer Portal behavior and inspected the network requests made by the Try Maps Server API page. What I verified Using the current Apple Developer Portal: Certificates, Identifiers & Profiles → Services → Maps → Configure Tokens I can successfully create a Server API token. I verified the following behavior: A Server API token can be created successfully. The token only supports the None restriction type. The token expires after 7 days. The Try Maps Server API page first calls GET /v1/token using the Server API token. The /v1/token endpoint returns a short-lived Maps access token. That Maps access token is then used to call Apple Maps Server API endpoints such as /v1/place, /v1/search, and /v1/reverseGeocode. Documentation vs. Developer Portal The current Apple Maps Server API documentation describes a production authentication flow in which developers: Create a Maps Identifier Create a Maps Private Key (.p8) Generate a signed authentication JWT Exchange that JWT for a Maps access token via GET /v1/token Use the Maps access token to call Apple Maps Server API However, in my current Apple Developer account: There is no Maps IDs section under Certificates, Identifiers & Profiles → Identifiers. There is no Maps or Apple Maps Server API key available under Certificates, Identifiers & Profiles → Keys. My account information: Apple Developer Program: Active Account Type: Individual Role: Account Holder Based on these observations, I'm not sure how the authentication flow described in the documentation relates to the authentication flow currently supported by the Developer Portal. Questions What is the currently recommended production authentication flow for Apple Maps Server API? Is the Server API token created from Certificates, Identifiers & Profiles → Services → Maps → Configure Tokens intended only for development and testing, or is it also the recommended authentication mechanism for long-running production backend services? If the production authentication flow described in the documentation is still the recommended approach, how can developers create a Maps Identifier and Maps Private Key using the current Developer Portal? Any clarification from Apple or from developers who have recently deployed Apple Maps Server API in production would be greatly appreciated. Thank you!
Replies
0
Boosts
0
Views
626
Activity
Aug ’26
Place Card API - SwiftUI
Hello everyone, I have a question regarding the Place Card API I'm using .mapFeatureSelectionAccessory(.automatic) to get information about a POI on the Map The trouble I have is that it forces me to use Apple Maps for directions, which isn't ideal for my use case For example, I support commercial navigation, including large units such as trucks, and I have my own routing engine for this Is there a way to handle the directions via my routing engine instead? Is there a modifier I'm missing, or should I suggest this as an enhancement? Thanks, great work MapKit team
Replies
2
Boosts
0
Views
838
Activity
Aug ’26
MapKit/VectorKit Crash – NSMallocException During Map Rendering
Dear Apple Developer Support Team, We are experiencing a crash in our iOS application that appears to originate within Apple's MapKit/VectorKit framework. Based on the crash logs, the failure occurs during map rendering operations inside VectorKit. The crash stack contains only Apple framework calls and does not include any application business logic methods. Crash Summary: Exception Type: NSMallocException Framework: MapKit / VectorKit Crash Location: VectorKit map rendering pipeline Observed Behavior: Application crashes while rendering map-related data Our analysis indicates that the crash occurs within Apple's native map rendering engine. Since the stack trace does not contain any application-specific code, we are unable to determine whether the issue is caused by framework behavior, an OS/device-specific condition, or a framework-level defect. We would appreciate your assistance in reviewing this issue and advising whether there are any known MapKit/VectorKit issues related to this crash signature. We can provide additional crash logs, device details, and reproduction information if required. Thank you for your support. Kind Regards, Yogesh Raj Ushyaku Software Solutions LLP
Replies
1
Boosts
2
Views
1k
Activity
Aug ’26
How to use the Map Server API over the long term?
我想使用苹果地图Api,我需要地图长期令牌或密钥 1.如果创建地图令牌仅7天到期(p1),我需要一个长寿命令牌。 2.如果像p2那样创建地图金鑰,則沒有MapKit 3.如果创建地图密钥需要首先创建一个标识符,如p3和p4,没有地图ID 那么,从长远来看,我到底应该如何有效地使用Map Server API呢? p1 : linkText p2: linkText p3: linkText p4: linkText
Replies
0
Boosts
0
Views
687
Activity
Jul ’26
SwiftUI Map Marker monogram replaces its title when Map is embedded in a List
SwiftUI Marker monogram replaces title inside List Marker(_:monogram:coordinate:) renders incorrectly when the Map is embedded in a List. Expected: LDN inside the marker pin London below the pin Actual inside List: LDN appears in the title position London is missing The pin has no monogram Screenshots With List — incorrect rendering Without List — expected rendering With List import SwiftUI import MapKit struct MapListView: View { let position = CLLocationCoordinate2D( latitude: 51.5074, longitude: -0.1278 ) var body: some View { List { Map( initialPosition: .region( MKCoordinateRegion( center: position, span: .init( latitudeDelta: 0.2, longitudeDelta: 0.2 ) ) ) ) { Marker( "London", monogram: Text("LDN"), coordinate: position ) } .frame(height: 260) } } } Without List struct MapView: View { let position = CLLocationCoordinate2D( latitude: 51.5074, longitude: -0.1278 ) var body: some View { Map( initialPosition: .region( MKCoordinateRegion( center: position, span: .init( latitudeDelta: 0.2, longitudeDelta: 0.2 ) ) ) ) { Marker( "London", monogram: Text("LDN"), coordinate: position ) } .frame(height: 260) } } The marker renders correctly when the Map is not inside a List. Is this a known SwiftUI or MapKit bug?
Replies
0
Boosts
0
Views
169
Activity
Jul ’26
Full Keyboard Access support for custom MKAnnotationView in MKMapView
We’re working on improving the accessibility of a MKMapView that displays custom MKAnnotationView instances. Our implementation is fully accessible with VoiceOver: The custom annotation views expose the correct accessibility information. Users can navigate between annotations using custom accessibility rotors. The overall VoiceOver experience works as expected. However, we’re unable to make the custom MKAnnotationView instances accessible through Full Keyboard Access (FKA). Despite configuring the annotation views as accessibility elements and experimenting with focus-related APIs, the annotations never become reachable through keyboard navigation. They appear to be skipped entirely by the FKA focus system. Is there a supported way to make custom MKAnnotationView instances participate in Full Keyboard Access navigation? If this scenario is currently unsupported, is there a recommended approach or any plans to expose public APIs that would allow developers to provide a keyboard-accessible experience for custom annotations in MKMapView? Any guidance would be greatly appreciated.
Replies
4
Boosts
0
Views
1.3k
Activity
Jul ’26
CarPlay handoff to MapKit fails on n+1 attempts
A CarPlay app with the carplay-fueling entitlement displays a list of stations. Tapping a station hands off to the Maps app for directions and navigation. Sometimes the handoff will return unsuccessful from the open call. The first attempt will succeeed. I immedediately return to my app and select a different station. The second attemp may succeed or it may fail. If the handoff attempt fails I can switch to the Maps app, return to MyApp, tap the same station row that just failed and the handoff will succeed. The issue is across multiple iOS versions (18 and 26) and multiple devices. Looking at the sysdiagnose logs, a successful handoff looks like this: 2026-06-26 15:56:27.762040 lsd: pid 14570 requests to open URL with scheme <private> 2026-06-26 15:56:27.768475 lsd: [FBSSystemService][0xee43] Sending request to open "com.apple.Maps" 2026-06-26 15:56:27.782145 lsd: [FBSSystemService][0xee43] Request successful: <BSProcessHandle ... Maps:17170; valid: YES> A failed handoff looks like this: 2026-06-26 17:05:00.162432 lsd: pid 14570 requests to open URL with scheme <private> 2026-06-26 17:05:00.171618 lsd: [FBSSystemService][0x3d16] Sending request to open "com.apple.Maps" 2026-06-26 17:05:00.173776 SpringBoard: Received request to open "com.apple.Maps" with url "maps:<private>" from lsd:122 on behalf of MyApp:14570. 2026-06-26 17:05:00.174110 SpringBoard: Received untrusted open application request for "com.apple.Maps" from <FBApplicationProcess ... app<au.com.philk.MyApp>:14570> 2026-06-26 17:05:00.175103 SpringBoard: Open "com.apple.Maps" request from lsd:122 failed with error: FBSOpenApplicationServiceErrorDomain; code: 1 ("RequestDenied") Reason: Application au.com.philk.MyApp is neither visible nor entitled, so may not perform un-trusted user actions. Underlying: FBSOpenApplicationErrorDomain; code: 3 ("Security") Looking more closely at the logs, the template UI is brought forward: CarPlay: DBApplicationSceneHostViewController; au.com.philk.MyApp; proxy: com.apple.CarPlayTemplateUIHost RunningBoard briefly grants MyApp foreground / render assertions: Foreground Template App FBWorkspace (ForegroundFocal) Set darwin role to: UserInteractiveFocal visibility is yes However, SpringBoard also records MyApp as background: 2026-06-26 17:04:53.709527 SpringBoard: Application process state changed for au.com.philk.MyApp: taskState: Running; visibility: Background The denied open at 17:05:00 appears to use SpringBoard's application visibility/trust decision, not the fact that the user is actively interacting with MyApp's CarPlay template UI. The following is logged: Application au.com.philk.MyApp is neither visible nor entitled, so may not perform un-trusted user actions. I have tried two different ways to pass/open the URL, and both will fail, usually after the first attempt. A plain maps:// URL Creating a MapItem and using: MKMapItem.openInMaps(launchOptions:from:completionHandler:) I wonder if this is the same or similar bug to the one reported here? https://developer.apple.com/forums/thread/787788?answerId=843556022#843556022 What is the root cause of the random failures? Any help or pointers will be appreciated.
Replies
5
Boosts
0
Views
917
Activity
Jul ’26