Axiom Location

CharlesWiltgen/Axiom/axiom-cursor/skills/axiom-location

作者 CharlesWiltgen82c7feafae634a79b4336b3381289441886c122c無授權條款1.1K 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫今天更新

Use when implementing location services, maps, geofencing, or debugging location/MapKit issues. Covers Core Location, CLMonitor, MapKit, annotations, directions.

AI 產生的概覽

指導 iOS 開發者實作 Core Location 與 MapKit,涵蓋 API 用法與疑難排解。

功能
此技能會將定位與地圖相關問題導向六份參考文件,涵蓋 Core Location 與 MapKit。它提供授權策略、監控方式、精度選擇,以及 SwiftUI Map 與 MKMapView 取捨的決策樹。它也提供 API 語法參考,以及針對定位更新未送達、地理圍欄失效、標註未顯示等常見問題的診斷指引。產出為指引與程式碼模式,而非產生檔案。
適用情境
適用於在 iOS 應用程式中實作定位服務、地圖、地理圍欄、搜尋與路線規劃時。也用於排查定位或 MapKit 問題,例如更新未送達、授權遭拒或標註未顯示。
執行需求
無需指令碼或套件,僅為說明性內容。它假定處於 iOS 開發環境並使用 Core Location 與 MapKit,並引用 axiom-performance、axiom-integration、axiom-data、axiom-build 等其他技能。

Location & Maps

You MUST use this skill for ANY location services, mapping, geofencing, or Core Location / MapKit work.

Quick Reference

Symptom / TaskReference
Authorization strategy (When In Use vs Always)See skills/core-location.md
Monitoring approach (continuous, significant-change, CLMonitor)See skills/core-location.md
Accuracy selection, background locationSee skills/core-location.md
CLLocationUpdate, CLMonitor, CLServiceSession APIsSee skills/core-location-ref.md
Authorization API patterns, geofencing APISee skills/core-location-ref.md
Compass heading, heading reference body (headingBody)See skills/core-location-ref.md (Part 12)
Location updates never arriveSee skills/core-location-diag.md
Background location stops workingSee skills/core-location-diag.md
Authorization always denied, geofence failuresSee skills/core-location-diag.md
SwiftUI Map, annotations, markers, clusteringSee skills/mapkit.md
MKMapView vs SwiftUI Map decisionSee skills/mapkit.md
Search, directions, routingSee skills/mapkit.md
MapKit API: Marker, Annotation, MKLocalSearch, MKDirectionsSee skills/mapkit-ref.md
Look Around, MKMapSnapshotter, MKMapItemSee skills/mapkit-ref.md
Annotations not appearing, region jumpingSee skills/mapkit-diag.md
Clustering not working, search failuresSee skills/mapkit-diag.md
Overlay rendering, user location not showingSee skills/mapkit-diag.md

Decision Tree

dot
digraph location {    start [label="Location / Maps task" shape=ellipse];    domain [label="Core Location or MapKit?" shape=diamond];    cl_type [label="Need what?" shape=diamond];    mk_type [label="Need what?" shape=diamond];
    start -> domain;
    domain -> cl_type [label="Core Location"];    domain -> mk_type [label="MapKit / Maps"];
    cl_type -> "skills/core-location.md" [label="authorization, monitoring\nstrategy, accuracy,\nbackground location"];    cl_type -> "skills/core-location-ref.md" [label="API syntax\n(CLLocationUpdate,\nCLMonitor, CLServiceSession)"];    cl_type -> "skills/core-location-diag.md" [label="something broken\n(no updates, denied,\ngeofence not firing)"];
    mk_type -> "skills/mapkit.md" [label="patterns, decisions\n(SwiftUI Map vs MKMapView,\nannotations, search)"];    mk_type -> "skills/mapkit-ref.md" [label="API syntax\n(Marker, Annotation,\nMKLocalSearch, MKDirections)"];    mk_type -> "skills/mapkit-diag.md" [label="something broken\n(annotations missing,\nregion jumping, clustering)"];}
  1. Authorization strategy, monitoring approach, accuracy? → skills/core-location.md 1a. Need specific API syntax (CLLocationUpdate, CLMonitor, CLServiceSession)? → skills/core-location-ref.md 1b. Location not working? → skills/core-location-diag.md
  2. Adding a map, annotations, search, directions? → skills/mapkit.md 2a. Need specific MapKit API syntax (Marker, MKLocalSearch, MKDirections)? → skills/mapkit-ref.md 2b. Map display broken? → skills/mapkit-diag.md
  3. Location draining battery? → See axiom-performance (skills/energy.md)
  4. Background task scheduling for location? → See axiom-integration
  5. Privacy manifest for location? → See axiom-integration

Conflict Resolution

location vs axiom-performance: When location is draining battery:

  1. Try location FIRST — Excessive accuracy or continuous updates are the #1 cause. skills/core-location.md covers accuracy selection and monitoring strategy.
  2. Only use axiom-performance if location settings are already correct — Profile after ruling out obvious over-tracking.

location vs axiom-integration: When implementing background location:

  • Background location configuration (Info.plist, capabilities, CLServiceSession) → use location
  • BGTaskScheduler for periodic location processing → use axiom-integration

location vs axiom-data: When storing or syncing location data:

  • Getting location updates, geofencing → use location
  • Persisting location history, CloudKit sync → use axiom-data

location vs axiom-build: When location permissions fail in simulator:

  • Authorization dialogs, Info.plist keys → use location (skills/core-location-diag.md)
  • Simulator GPS simulation, simctl location → use axiom-build

Critical Patterns

Core Location (skills/core-location.md):

  • Authorization escalation strategy (When In Use first, Always later)
  • Monitoring decision tree (continuous vs significant-change vs CLMonitor)
  • Accuracy selection with battery impact
  • Background location configuration
  • Anti-patterns with time costs (premature Always authorization, unnecessary continuous updates)

Core Location API (skills/core-location-ref.md):

  • CLLocationUpdate AsyncSequence (iOS 17+)
  • CLMonitor condition-based geofencing (iOS 17+)
  • CLServiceSession declarative authorization (iOS 18+)
  • Authorization API patterns, background mode configuration

Core Location Diagnostics (skills/core-location-diag.md):

  • Location updates never arrive
  • Background location stops working
  • Authorization always denied
  • Geofence events not triggering
  • Location accuracy unexpectedly poor

MapKit (skills/mapkit.md):

  • SwiftUI Map vs MKMapView decision tree
  • Annotation patterns (Marker, custom Annotation)
  • Search (MKLocalSearch, autocomplete)
  • Directions and routing
  • Anti-patterns (annotations in view body, no view reuse, setRegion loops)

MapKit API (skills/mapkit-ref.md):

  • SwiftUI Map API (MapCameraPosition, content builders, controls)
  • MKMapView delegate patterns
  • MKLocalSearch, MKDirections
  • Look Around, MKMapSnapshotter
  • Clustering configuration

MapKit Diagnostics (skills/mapkit-diag.md):

  • Annotations not appearing (lat/lng swapped, missing delegate)
  • Map region jumping/looping (updateUIView guard)
  • Clustering not working (missing clusteringIdentifier)
  • Search returning no results (resultTypes, region bias)
  • Overlay rendering failures

Anti-Rationalization

ThoughtReality
"Just request Always authorization upfront"30-60% denial rate. Request When In Use first, escalate later. skills/core-location.md covers the strategy.
"Continuous updates are fine for my use case"Continuous updates drain battery even when the app doesn't need sub-second location. Use significant-change or CLMonitor.
"I'll use MKMapView, it's more flexible"SwiftUI Map covers most use cases since iOS 17. MKMapView means UIViewRepresentable boilerplate. skills/mapkit.md has the decision tree.
"Annotations in the view body is fine for a few items"Annotations recreate on every view update. Even 50 items cause hitches. Move to model with @State or @Observable.
"I know how geofencing works"CLMonitor (iOS 17+) replaces legacy region monitoring with conditions. The API changed significantly.
"Background location just needs the capability"It needs Info.plist keys, capability, CLServiceSession (iOS 18+), AND correct authorization level. Missing any one silently fails.
"I'll handle location errors later"Authorization denial is not an error — it's the default state. Handle it from the start.

Example Invocations

User: "How do I request location permissions?" → Read: skills/core-location.md

User: "What's the CLLocationUpdate API?" → Read: skills/core-location-ref.md

User: "My location updates never arrive" → Read: skills/core-location-diag.md

User: "How do I add a map with pins?" → Read: skills/mapkit.md

User: "What's the SwiftUI Map API?" → Read: skills/mapkit-ref.md

User: "My annotations aren't showing on the map" → Read: skills/mapkit-diag.md

User: "How do I implement geofencing?" → Read: skills/core-location.md then skills/core-location-ref.md

User: "Location is draining battery" → Read: skills/core-location.md, then See axiom-performance (skills/energy.md)

User: "How do I add search to my map?" → Read: skills/mapkit.md then skills/mapkit-ref.md

來源與署名

來源:CharlesWiltgen/Axiom位於axiom-cursor/skills/axiom-location提交82c7fea

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架