It appears that starting with macOS Sequoia, Quick Look Preview extension no longer loads MapKit maps correctly anymore. Map tiles do not appear, leaving users with a beige background.
Users report that polylines do render correctly, but annotations appears black.
This was previously working fine in prior macOS versions including Sonoma.
STEPS TO REPRODUCE
Create a macOS app project, with an associated document.
Ensure project has a Quick Look preview extension, with necessary basic setups.
Ensure that the extension mentioned in (2) must have a MKMapView. Any other cosmetic changes, etc, does not need to be implemented to observe the base issue. Do note that it has been reported that in addition to the map tiles not loading, annotations don't render correctly as well.
MapKit
RSS for tagDisplay 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
76 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hello, thanks for your effort!
I found that when showsUserLocation is set to true (by default), the pulsing blue dot user location annotation is shown, which is cool and beautiful.
However, it will automatically and periodically attempt to call the Apple Server API GET https://api.apple-mapkit.com/v1/reverseGeocode within userLocationDidChange() and updateUserLocationAnnotation() to display, I assume, the user's current address when single-tapping on the blue dot.
It will significantly use the MapKit service calls quota since the user location is automatically updated. It almost runs out of quota even though the map initialization is plenty enough.
Is there any way to disable the bubble behavior but preserve the user location blue dot, which is lovely and better than drawing my own user location dot? It seems I can only turn off all user location features.
Many thanks!
Topic:
App & System Services
SubTopic:
Maps & Location
Tags:
MapKit JS
MapKit
Maps and Location
Apple Maps Server API
I have a problem when applying rotationEffect to a map in in SwiftUI. The legal text in the map is transformed as shown in this image:
The following code is part of a much larger and complex view; it is a minimal example to reproduce the error:
import SwiftUI
import MapKit
struct ContentView: View {
@State private var offset = CGSize.zero
var body: some View {
ZStack {
let drag = DragGesture()
.onChanged { g in
offset.width = g.translation.width
offset.height = g.translation.height
}
Map(interactionModes: [.zoom])
.frame(width: 320, height: 220)
.rotationEffect(.degrees(Double(offset.width / 12)))
.highPriorityGesture(drag)
}
}
}
I hope you can help me with this problem.
I have a desktop application that shows some real estate properties chosen by the user. The application shows those GPP locations on the map. The SwiftUI code is something like the following.
import SwiftUI
import MapKit
struct ContentView: View {
var body: some View
ZStack {
mapView
}
}
private var mapView: some View {
Map(position: $propertyViewModel.mapPosition) {
ForEach(propertyViewModel.properties) { property in
Annotation("", coordinate: CLLocationCoordinate2D(latitude: property.lat, longitude: property.lon)) {
Button {
} label: {
VStack {
Image(systemName: "house.circle.fill")
.resizable()
.scaledToFit()
.frame(width: 48)
.foregroundStyle(colorScheme == .light ? .white : .black)
...
}
}
.buttonStyle(.borderless)
}
}
UserAnnotation()
}
.mapControls {
MapUserLocationButton()
}
.mapControlVisibility(.visible)
.onAppear {
CLLocationManager().requestWhenInUseAuthorization()
}
}
}
The application only wants to use the CLLocationManager class so that it can show those locations on the map relative to your current GPS position. And I'm hit with two review rejections.
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
Issue Description
One or more purpose strings in the app do not sufficiently explain the use of protected resources. Purpose strings must clearly and completely describe the app's use of data and, in most cases, provide an example of how the data will be used.
Guideline 5.1.5 - Legal - Privacy - Location Services
The app uses location data for features that are not relevant to a user's location.
Specifically, the app is not functional when Location Services are disabled.
So I wonder if the application is even required to have 'NSLocationWhenInUseUsageDescription' and/or 'NSLocationUsageDescription'? just in order to show user's current location so that they can see property locations relative to it? The exact location privacy statement is the following.
The application needs your permission in accessing your current location so that it will appear on the map
Topic:
App & System Services
SubTopic:
Maps & Location
Tags:
MapKit
Privacy
SwiftUI
Maps and Location
I’ve notice that in Maps, some pins contain images and do not have the little triangle at the bottom of it, yet they still animate the same when clicked. How could this be achieved? I believe the name of this annotation is MKMapFeatureAnnotation.
I've tried this and it did not give the same result. I'm able to create a custom MKMarkerAnnotationView but it does not animate the same (balloon animation like the MKMapFeatureAnnotation). I was looking forward to create a custom MKMapFeatureAnnotation similar in design which would animate the same. Unfortunately, I cannot create a custom MKMapFeatureAnnotation because everything is privated
I want to update coordinate of the lookaround instance object.
But mapkit.js does not have LookAroundSceneRequest class,
how am I going to do.
In swift, there is MKLookAroundSceneRequest class,
you can specify a new coordinate with this class, to get a new LookAroundScene object,
then attach new LookAroundScene to the existing lookAround object,
But how am I going to do the same with mapkit.js ??
it missing LookAroundSceneRequest class in js
My app is currently using CLGeocoder to get a CLPlacemark, then using placemark.postalAddress with CNPostalAddressFormatter to get an attributed string for the full address, I then enumerate its attributes to pull out specific elements like just the street or state or zip etc.
This is deprecated in iOS 26 with MKReverseGeocodingRequest being the intended replacement. This API returns an MKMapItem which doesn’t provide a CNPostalAddress - you can get a full address as a String but not structured address data that I’m seeing. Am I missing some way to get the postal address? Or is it a non-goal to provide that anymore? Thanks!
I have an existing iOS app with MapKit. It always shows the current user location with UserAnnotation. But the same isn't true for macOS. I have this sample macOS application in SwiftUI. In the following, the current user location with a large blue dot appears only occasionally. It won't, 19 of 20 times. Why is that? I do have a location privacy key in Info.plist. And the Location checkbox is on under Signing & Capabilities.
import SwiftUI
import MapKit
struct ContentView: View {
@State private var markerItems: [MarkerItem] = [
MarkerItem(name: "Farmers Market 1", lat: 35.681, lon: 139.691),
MarkerItem(name: "Farmers Market 2", lat: 35.685, lon: 139.695),
MarkerItem(name: "Farmers Market 3", lat: 35.689, lon: 139.699)
]
@State private var position: MapCameraPosition = .automatic
var body: some View {
Map(position: $position) {
UserAnnotation()
ForEach(markerItems, id: \.self) { item in
Marker(item.name, coordinate: CLLocationCoordinate2D(latitude: item.lat, longitude: item.lon))
}
}
.mapControlVisibility(.hidden)
.mapStyle(.standard(elevation: .realistic))
.ignoresSafeArea()
}
}
#Preview {
ContentView()
}
struct MarkerItem: Hashable {
let name: String
let lat: Double
let lon: Double
}
As title says. Surely rendering bitmaps is something the hardware could handle, right? Please enable MKTileOverlay for watchOS.
Hi team, I've been trying to extend the animation when we call the function setVisibleMapRect, we can use UIView.animate to lengthen the animation time, but one thing that I found not working is that when I extend the animation to 3, 5, or 10 seconds, and the changes is still ongoing and there's a gesture performed, the map will completely ignore the gesture. Causing the map to be having this kind of like "delayed" or "freeze" experience for the user. The map will immediately move to the final rect and ignores the user gesture.
I've been checking on this problem for a week now and I'm quite stuck. I've tried using CADisplayLink to manually animate the camera per system fresh rate, it works very well, I can stop the camera movement anytime there are touches, but it causes the resource CPU spikes.
Removing the animation layers recursively on sublayers and subviews also doesn't help. While storing the animation into a UIViewPropertyAnimator and use stopAnimation will always ignores user first interactions too while also animating the camera to the final position (which is not expected).
The documentation for CLGeocoder states
Geocoding requests are rate-limited for each app, so making too many requests in a short period of time may cause some of the requests to fail. (When the maximum rate is exceeded, the geocoder returns an error object with the CLError.Code.network error to the associated completion handler.)
And it provides helpful guidance on how and when to submit geocoding requests.
The documentation for MKReverseGeocodingRequest does not mention requests are rate-limited. Does this mean it is not rate-limited? If it is rate-limited, is it similar to CLGeocoder, what is its behavior?
It is important to understand behavior of the API in order to understand impact on my app’s use case and how users will be affected should I change the implementation. Thanks!
In MapKit, the MKAnnotation takes a CLLocationCoordinate2D. However, in 3D/Flyover mode, the user marker has a height position on the map.
We are currently plotting points which have altitude, speed, heading, etc, and I have a method for creating a CLLocation with this information. What I'm trying to figure out is if there's a way to pass that information along to the MapKit rendering engine / annotations / AnnotationViews to recognize and show when in 3D mode. Is there any support for that currently?
hi,
When changing the map to Satellite in Apple Maps and centering it on Ōmuta City, Fukuoka Prefecture, Japan (as shown in the image), the app crashes when swiping to the right. This issue also occurs in MapKit, and I confirmed it happens in Apple Maps as well. It seems that either the satellite map tiles are missing or an error is occurring.
Our application is experiencing a crash, and this has become a serious issue.
Since September 1, crashes have increased significantly. Initially, we suspected that the issue was due to our application’s implementation, but our investigation revealed that the problem lies with the map tiles being called through MapKit.
Could you please investigate this issue and provide a fix?
My app uses SwiftUI Map and draws Markers, MapPolyline and MapPolygons over it. These all work on actual devices. On the iOS 26.0.1 Simulator running on macOS 26.0.1 Polylines and Polygons do now show.
Do others see the same thing?
"Use location, address and addressRepresentations instead"
Is it possible to know what kind of "Address" a MapItem is representing (State, County, Neighborhood etc) after a MKGeocodingRequest?
Is it possible to find out the CLRegion or similar of an map item. (Now when we cannot read it from the Placemark)
Hi,
On a SwiftUI map I render a mix of MapPolygon and MapPolyline. All overlays must use the same overlay level (.aboveLabels).
Goal:
Ensure MapPolyline always renders on top of MapPolygon.
Issue:
I order data so polylines are last and even render in two passes (polygons first, polylines second), all at .aboveLabels.
Despite that, after polygons change (items removed/added based on zoom levels), I see polygons visually on top of polylines. It seems MapKit may batch/reorder rendering internally.
Questions:
Is there a reliable way in SwiftUI Map to enforce z-order within the same overlay level so MapPolyline always appears above MapPolygon?
If not, any known workarounds or best practices? (e.g. different composition patterns, using annotations with zIndex, or other techniques compatible with SwiftUI Map)
I know you can do this with UIKit, but first looking for a solution compatible with SwiftUI's version of MapKit.
Thanks
Hello developers,
atm im developing a small app focused on hiking. A core pice of the app is a Map() from MapKit. I only want a few points of interest to be visible on the map (e.g. no stores, no clubs etc.).
My question now is what modifier includes mountain Peaks? I tried .rockClimbing, .nationalPark, .landmark, .skiing & .hiking. However none of them makes mountain Peaks visible on the map.
The complete code would be:
Map()
.mapStyle(.standard(pointsOfInterest: .including([.rockClimbing, .nationalPark, .landmark, .skiing, .hiking])))
Hi,
I’m a member of the Apple Developer Program and I’m planning to use Apple Maps Server API together with MapKit JS for a production, customer-facing web service.
I have reviewed the Apple Developer Program License Agreement (including Schedule 6 – Apple Maps Services) and the documentation, but I still need clarification on several points to ensure that our usage fully complies with Apple’s policies.
Daily quota and additional capacity
From the documentation, I understand that there is a daily limit of 250,000 map views and 25,000 service calls per Apple Developer Program membership, shared between MapKit JS and Apple Maps Server API.
When the 25,000 service calls are exceeded, the API returns HTTP 429.
Should this limit be considered a hard limit for production use?
The wording “For additional capacity needs, contact us” is unclear.
Is there any official channel or program to request a higher quota,
or should we assume this is not practically available and design our system to always stay within the documented limit?
Caching of geocoding / reverse-geocoding results
Schedule 6 section 2.5 restricts caching, prefetching, or storing map data except when temporary and only as necessary for Apple Maps Services, and any cached data must be deleted after use.
To understand what “temporary” means in practice, I would like to confirm whether the following scenarios are acceptable:
(a) In-memory cache during a single page or tab session:
- Store geocoding results (latitude/longitude and normalized address) only in a JavaScript in-memory structure (e.g., a Map object) during the lifetime of the browser tab.
- Delete all cached results when the tab is closed or after a short TTL (for example, a few minutes).
(b) sessionStorage with a short TTL:
- Store geocoding results in window.sessionStorage on a per-tab basis.
- Apply a short TTL (for example, a few minutes), and delete the data when the TTL expires or the tab is closed.
Are both (a) and (b) considered acceptable forms of “temporary caching” under section 2.5,
or should we avoid sessionStorage and limit ourselves to purely in-memory (non-persistent) caching?
Use on a commercial customer-facing website
Our intended use case is a public website that:
Displays store locations on a map
Allows users to search for nearby stores
Optionally shows routing directions
We do not do fleet management, asset tracking, enterprise route optimization, or insurance risk scoring.
Is this type of consumer-facing store-locator use case permitted under the Apple Maps Services terms?
Any clarification from the Maps or MapKit teams would be greatly appreciated.
Thank you.
Best regards,
Naoto Omori
Hello,
I'm trying to figure out the behavior of AssetPackManager.shared.remove(assetPackWithID: ).
I'm working with MapKit tiles and currently working on trying projecting them correctly which involves serving the AssetPack locally, downloading, checking alignment, and then deleting and changing.
My question is that remove(assetPackWithID: ) completes successfully and the asset pack is removed. This is confirmed by trying to remove the AssetPack again which throws an error.
However, the asset is still appearing on MapKit after the removal. This is a bit odd as this persists not only with force killing, but also restarting the device.
Please advise on how to properly remove an AssetPack.
Thank you
iPhone 15 Pro Max (iOS 26.0.1)
iPhone 17 Pro Max (iOS 26.0.1)
I have a UIViewController that uses MKMapview to display the motion history trajectory. Repeatedly entering and exiting UIViewController will cause a crash, and the crash stack is as follows:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000014bfc0fc8
Exception Codes: 0x0000000000000001, 0x000000014bfc0fc8
VM Region Info: 0x14bfc0fc8 is not in any region. Bytes after previous region: 217033 Bytes before following region: 61496
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
VM_ALLOCATE 14bf88000-14bf8c000 [ 16K] rw-/rwx SM=PRV
---> GAP OF 0x44000 BYTES
VM_ALLOCATE 14bfd0000-14bfd4000 [ 16K] rw-/rwx SM=PRV
Termination Reason: SIGNAL 11 Segmentation fault: 11
Terminating Process: exc handler [1881]
Triggered by Thread: 8
Thread 8 name: Dispatch queue: com.apple.root.background-qos
Thread 8 Crashed:
0 CoreFoundation 0x19e36ac40 CFRelease + 44
1 VectorKit 0x1ce16af6c md::TileGroupNotificationManager::~TileGroupNotificationManager() + 132
2 VectorKit 0x1cd6f7178 <deduplicated_symbol> + 76
3 VectorKit 0x1cdba8d74 -[VKSharedResources .cxx_destruct] + 32
4 libobjc.A.dylib 0x19b3321f8 object_cxxDestructFromClass(objc_object*, objc_class*) + 116
5 libobjc.A.dylib 0x19b32df20 objc_destructInstance_nonnull_realized(objc_object*) + 76
6 libobjc.A.dylib 0x19b32d4a4 _objc_rootDealloc + 72
7 VectorKit 0x1cdba93fc -[VKSharedResources dealloc] + 476
8 VectorKit 0x1cdafa3fc -[VKSharedResourcesManager _removeResourceUser] + 68
9 VectorKit 0x1cdafa380 +[VKSharedResourcesManager removeResourceUser] + 44
10 VectorKit 0x1cdafa2fc __37-[VKIconManager _internalIconManager]_block_invoke + 168
11 libdispatch.dylib 0x1d645b7ec _dispatch_client_callout + 16
12 libdispatch.dylib 0x1d6446664 _dispatch_continuation_pop + 596
13 libdispatch.dylib 0x1d6459528 _dispatch_source_latch_and_call + 396
14 libdispatch.dylib 0x1d64581fc _dispatch_source_invoke + 844
15 libdispatch.dylib 0x1d6453f48 _dispatch_root_queue_drain + 364
16 libdispatch.dylib 0x1d64546fc _dispatch_worker_thread2 + 180
17 libsystem_pthread.dylib 0x1f9b7e37c _pthread_wqthread + 232
18 libsystem_pthread.dylib 0x1f9b7d8c0 start_wqthread + 8
I have checked the code and did not find any issues. I have also tested on iOS 15, 16, and 18 without any issues. Could this be an error in the iOS 26 system? Have you ever met any friends? I hope to receive an answer. Thank you.