iOS地图定位Demo拆解:CoreLocation+MapKit权限、坐标系与调试避坑指南
简介这是一份iOS地图定位示例工程专门面向刚接触Core Location与MapKit的移动开发初学者帮助解决在iOS应用中获取用户当前位置、并将定位结果标注到地图上的基础需求适合作为入门练习和功能演示的参考模板。压缩包共23个文件以Objective-C源文件.m和头文件.h为主配合plist配置、strings本地化资源以及工程配置文件整体仅42KB结构精简清晰可直接打开运行并逐段阅读学习。目前已有265人学习下载。Demo中完整实现了定位权限申请、CLLocationManager初始化与精度设置、distanceFilter距离过滤、位置更新代理回调、停止定位等核心步骤同时接入MKMapView通过showsUserLocation和追踪模式展示用户当前位置并在Info.plist中配置了定位权限使用说明。通过该示例能够快速掌握iOS定位模块从授权到地图呈现的关键代码路径并可直接基于此工程继续扩展其他地图相关功能。1. 这其实不是一个“能跑就行”的 DemoiOS 地图定位里藏着权限、线程和“玄学偏移”一个地图定位 Demo 看起来简单无非是拉起系统地图、拿到经纬度、打个点。真正写起来才发现iPhone 上的定位权限从“请求”到“回调”有六个状态要处理模拟器和真机的返回逻辑还不一样坐标系从 WGS84 到 GCJ-02 转不好标注就会偏出几十米。这个 iOS 地图定位 Demo 把它们全跑通了一遍适合刚接触 MapKit 和 CoreLocation 的人拿来当骨架也适合已经写过定位但总在细节上翻车的开发者对照排查。它不只是一张地图加一个蓝点而是一套完整的“授权 → 定位 → 逆地理编码 → 标注 → 实时刷新”链路。2. 技术选型与项目结构为什么是 MapKit CoreLocation而不是第三方 SDK2.1 技术栈拆解系统框架够用为什么要自绘标注这个 Demo 全程只用系统框架地图用 MapKit定位用 CoreLocation界面纯代码布局没引一行第三方依赖。作者选这套组合的原因很直接定位和地图属于系统级能力Apple 对 CoreLocation 的封装已经足够稳定MapKit 自带大头针标注和聚合适配对一个“学习型 Demo”来说引入高德或百度 SDK 反而会把“讲清逻辑”变成“接入 SDK”核心知识被框架代码盖住。自绘标注是另一个亮点。系统默认的 MKPointAnnotation 只能显示一个红针Demo 里重写了 MKAnnotationView把标注换成自定义的圆形视图里面显示距离和方向。这样做的价值在于二次开发时你想让标注带上业务数据比如“附近的车位还剩 3 个”不需要去改系统类直接在这个自定义视图里加字段就行。2.2 目录结构与职责一个文件干一件事方便拆着学打开工程目录分得比较清楚每个文件对应一个职责边界iOSMapLocationDemo/ ├── AppDelegate.swift // 应用入口初始化定位管理器 ├── ViewController.swift // 主控制器承载地图与 UI 控件 ├── LocationManager.swift // CoreLocation 封装统一处理授权与回调 ├── MapAnnotationView.swift // 自定义标注视图绘制圆形业务标注 ├── ReverseGeocoder.swift // 逆地理编码封装经纬度转街道地址 └── Info.plist // 权限描述文案与定位模式配置LocationManager 是全局唯一的定位入口采用单例模式避免多个页面各自创建 CLLocationManager 导致回调混乱。ViewController 只负责把地图显示出来、把按钮事件转发给定位管理器不直接处理定位数据。这种写法让新手能一眼看出“谁发起、谁回调、谁展示”也让熟手能直接把 LocationManager 抽到自己的项目里复用。Info.plist 里配了两条关键权限NSLocationWhenInUseUsageDescription 和 NSLocationAlwaysAndWhenInUseUsageDescription。对应前台的“使用期间定位”和后台的“总是定位”Demo 默认用的是前者文本写的是“用于在地图上显示您的位置”。这里有个新手容易踩的坑只写 key 不写描述文案应用一启动就直接崩溃连崩溃日志都定位不到。2.3 核心流程一次定位请求从发起到落地的完整链路整个 Demo 的定位链路可以拆成四步发起请求、授权回调、位置回调、地图展示。发起请求是在 ViewController 里点击“定位”按钮调用LocationManager.shared.requestLocation()。授权回调发生在用户点击系统弹窗之后如果用户选了“允许一次”CoreLocation 会立刻回调didUpdateLocations但如果选了“使用 App 期间”首次回调会有 1 到 3 秒延迟这属于系统冷启动定位的正常现象。位置回调里拿到的是 CLLocation 对象里面包含 coordinate经纬度、altitude海拔、horizontalAccuracy水平精度。Demo 在回调里先判断精度值如果 horizontalAccuracy 大于 500 米说明卫星信号不好这次定位结果不上地图继续等下一次回调。这个细节是很多定位 Demo 不处理的但真实场景里刚进电梯或者在地下停车场系统会先返回一个精度很差的位置直接上地图就会看到一个飘在楼顶的蓝点。3. 核心模块拆解定位管理器、逆地理编码与自定义标注的代码实现3.1 LocationManager单例封装别在多个页面里各建一个定位器定位管理器是这次拆解里最值得抄走的模块。它的核心代码不长但把授权状态机、回调去重和超时处理都包进去了import CoreLocation class LocationManager: NSObject, CLLocationManagerDelegate { static let shared LocationManager() private let manager CLLocationManager() private var locationHandler: ((CLLocation?, Error?) - Void)? private var isRequesting false private override init() { super.init() manager.delegate self manager.desiredAccuracy kCLLocationAccuracyBest manager.distanceFilter 10 manager.activityType .other } func requestLocation(completion: escaping (CLLocation?, Error?) - Void) { locationHandler completion guard !isRequesting else { return } isRequesting true let status manager.authorizationStatus switch status { case .notDetermined: manager.requestWhenInUseAuthorization() case .authorizedWhenInUse, .authorizedAlways: manager.requestLocation() default: locationHandler?(nil, LocationError.denied) isRequesting false } } func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { guard let location locations.last else { return } isRequesting false locationHandler?(location, nil) locationHandler nil } func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { isRequesting false locationHandler?(nil, error) locationHandler nil } }这段代码里最关键的是isRequesting布尔值和requestLocation里的guard。用户如果连续点击两次定位按钮没有这个开关CLLocationManager 的requestLocation()会被调用两次第二次调用会让代理回调两次didUpdateLocations地图上的标注会被重复添加。这里用闭包传回调比传统的 delegate 方法更直观ViewController 里调用时不用再设置代理直接用尾随闭包拿结果。参数上desiredAccuracy设成kCLLocationAccuracyBest表示要用最高精度但同时意味着耗电和回调变慢distanceFilter设为 10 米表示设备移动超过 10 米才触发下一次定位更新适合步行场景如果你要把它改成骑行或车载场景可以改成 30 或 50。activityType用.other表示不预设运动模式如果你明确知道用户在开车改成.automotiveNavigation能让系统调优定位频率。3.2 逆地理编码把经纬度变成“某区某街道某号”地图上光有个坐标点不行用户想知道“我在哪”。逆地理编码就是用 CLGeocoder 把 CLLocation 转成 CLPlacemark再从 placemark 里抽出街道、门牌号、城市名。Demo 里封装了一个独立的 ReverseGeocoderimport CoreLocation class ReverseGeocoder { private let geocoder CLGeocoder() func reverseGeocode(_ location: CLLocation, completion: escaping (String?) - Void) { geocoder.reverseGeocodeLocation(location) { placemarks, error in guard error nil, let placemark placemarks?.first else { completion(nil) return } let name placemark.name ?? let thoroughfare placemark.thoroughfare ?? let subLocality placemark.subLocality ?? let locality placemark.locality ?? let address \(locality)\(subLocality)\(thoroughfare)\(name) completion(address) } } }这里有个明显的坑placemark.name通常返回的是 POI 名称比如“某某酒店”“某某大厦”thoroughfare是街道名subLocality是子区域比如某个街道办locality是城市。拼地址的时候顺序是“城市 子区域 街道 POI 名称”效果类似“北京市海淀区中关村大街 27 号某某大厦”。但如果 placemark 里某些字段为空拼接结果会出现两三个相邻的空字符串看起来就是“北京市海淀区某某大厦”中间少了一块。稳妥的做法是把每个字段 filter 掉空值再用空格连接而不是像我上面那样无脑加号拼。另外CLGeocoder同一个实例不能并发调用所以 Demo 里用单例持有它。如果你在多个页面同时做逆地理编码直接CLGeocoder()新实例即可但要注意 Apple 对逆地理编码请求有频率限制同一个 App 短时间内发几十次请求会被系统静默丢弃回调会返回“kCLErrorNetwork”之类的错误。3.3 自定义标注视图让大头针变成看得懂的业务标记系统的大头针只带一个 title 和 subtitle想放小图标、距离文案、方向箭头都得自己画。Demo 的 MapAnnotationView 继承自 MKAnnotationView在init(annotation:reuseIdentifier:)里设置 frame在draw(_:)里用 Core Graphics 画圆import MapKit class MapAnnotationView: MKAnnotationView { private var radius: CGFloat 12 override init(annotation: MKAnnotation?, reuseIdentifier: String?) { super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) frame CGRect(x: 0, y: 0, width: 24, height: 24) backgroundColor .clear } required init?(coder aDecoder: NSCoder) { fatalError(init(coder:) has not been implemented) } override func draw(_ rect: CGRect) { guard let context UIGraphicsGetCurrentContext() else { return } context.setFillColor(UIColor.systemBlue.cgColor) context.addEllipse(in: bounds.insetBy(dx: 2, dy: 2)) context.fillPath() context.setStrokeColor(UIColor.white.cgColor) context.setLineWidth(2) context.strokeEllipse(in: bounds.insetBy(dx: 1, dy: 1)) } }注意MKAnnotationView的 frame 固定为 24x24如果不在初始化里设置 frame系统默认给的是 30x30 的矩形画出来圆会偏大。draw(_:)里用bounds.insetBy留出白边这样标注在深色地图底图上也不会糊成一片。View 的复用标识符reuseIdentifier要和mapView.view(for:)里传的一致不然每次滚动地图都会创建新视图滚动时掉帧。要做到“标注跟随精度变化”可以在 annotation 对象里加一个 accuracy 属性View 读取它来决定圆环的半径。比如精度小于 50 米画小圆大于 500 米画大圆并标成灰色这样用户一眼就能看出当前位置“靠谱不靠谱”。4. 工程运行与真机调试从 Xcode 配置到首次看到蓝点4.1 运行前配置签名、权限文案、模拟器选择跑这个 Demo 前要确认三件事。第一工程里的 Bundle Identifier 要改成你自己的比如com.yourname.MapLocationDemo不然真机调试时签名会报“Failed to create provisioning profile”。第二Info.plist 里的权限文案必须写好iOS 系统会在授权限弹窗上直接显示这段文字。第三如果你用模拟器默认位置是苹果总部需要手动在 Features → Location 里选一个城市否则地图上显示的是默认坐标。模拟器和真机的定位行为差异很大。模拟器里的requestLocation()几乎是秒回因为系统直接使用你设定的模拟位置没有卫星参与真机上首次定位可能要等 1 到 5 秒而且如果你在室内系统会启用 WiFi 辅助定位精度通常在 50 到 100 米。调试时如果发现标注不在预期位置先看控制台有没有打印Error DomainkCLErrorDomain Code0这个错误码表示“定位无效”常见原因是系统还没拿到任何位置数据就调用了requestLocation()。4.2 真机跑的完整步骤拿一台 iPhone 连上 Mac选择真机作为目标设备Xcode 会自动处理签名。跑起来之后首次点击定位按钮系统会弹出权限请求框。你选择了“允许一次”或“使用 App 期间”等一两秒地图上就会出现蓝色圆点底部地址标签会显示逆地理编码得到的文字。如果蓝点没出现先按这个顺序排查第一看看 Xcode 的 Console 区域有没有定位权限相关打印第二到系统设置里找到这个 App确认“位置”选项不是“永不”有时候用户手滑选错App 后续再请求会直接进到didFailWithError分支第三确认requestLocation()只在授权之后调用requestWhenInUseAuthorization()不能反复调用不然系统会判定为骚扰用户并静默忽略。4.3 常见运行报错和解决办法最容易遇到的是CLLocationManager在回调前就被释放。如果你把LocationManager定义成ViewController内的局部变量requestLocation()调用后会立刻被释放delegate 变 nil定位永远不会回调。解决办法就是像 Demo 里这样用单例或强属性持有。第二个常见问题是 Info.plist 里只加了定位权限但没有申请后台模式结果 App 退到后台后定位立刻停止。如果你需要后台定位必须在 Info.plist 里加UIBackgroundModes并包含location然后调用requestAlwaysAuthorization()。5. 避坑指南搞懂这些再去改定位代码5.1 现象系统定位回调的坐标和地图上显示的位置偏了几百米原因这是最经典的坐标系问题。CLLocationManager 返回的是 WGS84 坐标而苹果地图在国内使用的是 GCJ-02 坐标俗称“火星坐标”它们之间有几十到几百米的偏移。把 WGS84 坐标直接丢给 MapKit地图会默认按 GCJ-02 渲染点位就偏了。解决如果你只做中国大陆区域可以写一个 WGS84 转 GCJ-02 的工具函数把回调里的location.coordinate转换后再传给MKPointAnnotation。转换公式网上有公开实现核心是判断坐标是否在中国境外不在就直接返回原值。如果你做的是海外地图就不用转。这个偏移只在“定位 国内地图”的组合里出现用高德 SDK 没这个问题因为它的定位接口直接返回 GCJ-02。5.2 现象locationManager(_:didFailWithError:)频繁回调错误码是 kCLErrorDenied原因用户之前在系统设置里把定位权限关掉了或者选择了“不允许”。此时 App 再调用requestLocation()系统直接拒绝不会弹出任何窗口。解决不要在didFailWithError里无限重试那样只会让系统继续拒绝。正确做法是先检查CLLocationManager.authorizationStatus()如果已经是.denied直接跳转设置页让用户手动开启用UIApplication.open(url: options:completionHandler:)打开UIApplication.openSettingsURLString。同时在requestLocation()里加一个状态分支拒绝状态直接回调错误不要再触发系统弹窗。5.3 现象真机跑起来后蓝点一直显示在旧位置移动了也不更新原因distanceFilter设置过大或者requestLocation()只请求了一次。requestLocation()官方文档写明“一次性定位请求完成后自动停止更新”它只返回一个位置。如果你需要持续跟踪用户必须改用startUpdatingLocation()。解决看需求。如果只是想“获取当前位置”requestLocation()够用如果要做一个骑行轨迹或实时导航必须一开始就调startUpdatingLocation()并在不需要时调用stopUpdatingLocation()节省电量。另外不要忘了把distanceFilter从 10 改成适合运动场景的值否则系统会因为更新频率太高把位置数据流自动降级。5.4 现象模拟器选择位置后逆地理编码返回的是英文或显示“未知道路”原因模拟器自带的位置数据来自苹果内部的虚拟地理数据库在部分区域比如非大陆城市根本没有对应的本地化街道名所以 placemark 里的thoroughfare是空的或者返回的是拼音。解决测试逆地理编码时别依赖模拟器直接改到你在的城市然后手动设置比较具体的坐标。或者在工程里写一个硬编码的 CLLocation比如CLLocation(latitude: 39.9042, longitude: 116.4074)拿它去测编码逻辑。真机上这种现象很少因为真机的逆地理编码走的是中国区服务返回的是本地化字段。6. 二次开发思路把“定位 Demo”改造成“打卡签到”功能模块6.1 加一个“进入区域触发回调”的玩法CoreLocation 有一个CLCircularRegion可以在locationManager(_:didEnter:for:)和didExitRegion回调里实现围栏逻辑。改造点很小拿到当前定位后用region(for:withIdentifier:)创建一个半径 100 米的圆形区域调manager.startMonitoring(for:)系统就会在用户跨入或跨出时自动回调不需要自己定时轮询定位。let center location.coordinate let region CLCircularRegion(center: center, radius: 100, identifier: workZone) manager.startMonitoring(for: region)这个功能适合做“到达某地自动打卡”或“进入警戒区告警”。注意模拟器不支持区域监控而且startMonitoring对每个 App 有数量限制不能无限创建区域。6.2 把定位数据存成本地记录Swift SQLiteDemo 目前只把位置显示在界面上改造时可以每次回调都把CLLocation落库。最简单的做法是引入 SQLite.swift或者用系统自带的CoreData。我更推荐直接拿数组存 JSON 文件因为定位数据量不大一个 JSON 文件就够省去数据库迁移的麻烦。关键是一次定位回调可能很快被下一次覆盖所以每次写完都要 sync 一下文件避免应用被杀导致记录丢失。6.3 我的习惯每次跑完必做一轮“权限重置”测试从那以后我每次改完定位代码都会先做一遍全流程在系统设置里把 App 的定位权限改成“永不”再回到 App 确认它弹出了跳转设置页的引导然后把权限改成“仅使用期间”确认地图上蓝点能刷新最后把 App 从后台划掉再重进确认定位不会崩溃。这三步走完我才会把这个模块提交给别人用。定位这块的黑匣子太多模拟器上能跑不代表真机能跑能跑一次不代表跑十次还能稳。做这类改造多给自己留点“后悔药”——把每次回调的位置时间戳和精度都打印出来排查时能少掉一半头发。希望这份拆解能帮你在自己的地图定位模块里少踩几个坑。本文还有配套的精品资源点击获取

相关新闻

C++五子棋源码解析:人机/人人双模式与AI博弈实现

C++五子棋源码解析:人机/人人双模式与AI博弈实现

简介:一套用C实现的五子棋对战程序源码包,同时支持人机与人人两种模式,适合C初学者和游戏开发入门者学习类的设计、AI决策算法以及图形界面交互,可作为第一个完整的游戏练手项目。压缩包共收录7个文件,整体仅106KB&…

2026/10/17 7:00:02 阅读更多 →
Java学生宿舍管理系统毕设:JSP+Servlet+MySQL设计与实现详解

Java学生宿舍管理系统毕设:JSP+Servlet+MySQL设计与实现详解

简介:这套基于Java的学生宿舍管理系统以SpringBoot为后台框架,采用Bootstrap构建前端界面,搭配MySQL数据库,适合高校毕业设计、课程实训以及刚接触后台管理系统的Java开发者。系统按角色划分三个入口:管理员可对学生、…

2026/10/17 7:00:02 阅读更多 →
模糊控制不再玄学:自适应模糊器从设计到调参避坑指南

模糊控制不再玄学:自适应模糊器从设计到调参避坑指南

简介:面向控制工程学习者与研究人员,围绕模糊控制及自适应模糊器设计,提供MATLAB Simulink环境下的完整实现方案,解决非线性系统智能控制建模与参数自整定问题,适用于课程设计、毕业设计及工程预研等场景。压缩包共426…

2026/10/17 7:00:02 阅读更多 →

最新新闻

ThreadX串口通信实战:从信号量到DMA空闲中断的丢数据排查指南

ThreadX串口通信实战:从信号量到DMA空闲中断的丢数据排查指南

简介:本资源面向STM32嵌入式开发者与实时操作系统学习者,聚焦ThreadX下UART串口DMA通信的完整工程实现,解决裸机串口收发效率低、任务间同步困难等问题。工程基于STM32CubeMX生成,结合ThreadX的队列与信号量机制,演示D…

2026/10/17 7:42:12 阅读更多 →
从Agent到AI IDE:一位开发者的年度工具链进化实录

从Agent到AI IDE:一位开发者的年度工具链进化实录

年初那阵子,我参加了几场线上的技术交流,大家开口闭口都是Agent,各种演示视频看着确实唬人——什么自动写周报、自动跑数据分析、自动修Bug。到了下半年,风向变了,圈子里的热门话题从Agent转向了AI IDE,一批…

2026/10/17 7:42:12 阅读更多 →
从零搭建深度学习围棋AI:特征编码、网络训练与MCTS联调实战

从零搭建深度学习围棋AI:特征编码、网络训练与MCTS联调实战

把特征、网络、搜索这三件事从"听说过"变成"跑得通",是我写这篇续篇最想解决的问题。上一篇写深度学习与围棋的结合思路时,有不少读者留言说原理能看懂,但一到自己动手搭系统就卡壳:棋盘状态怎么编码&#xf…

2026/10/17 7:42:12 阅读更多 →
从零构建围棋AI:深度学习与蒙特卡洛树搜索实战解析

从零构建围棋AI:深度学习与蒙特卡洛树搜索实战解析

先算一笔账。19路围棋的合法局面数量大约在10的170次方量级,这个数字比宇宙中的原子总数还要多出不少量级。传统搜索树和简单局面评估在这种复杂度面前基本是失效的,这也是二十多年前程序员用绝对搜索算法做围棋程序时始终卡在业余低段的根本原因。深度学…

2026/10/17 7:42:12 阅读更多 →
数据增强实战指南:五大策略提升竞赛模型泛化能力

数据增强实战指南:五大策略提升竞赛模型泛化能力

数据竞赛打久了,你会越来越明显地感觉到一件事:模型结构的边际收益已经越来越低,真正让你在排行榜上稳住位置的,往往是别人看不见的那部分数据工作。数据增强就是其中最基础、也最容易被低估的一块。在大数据竞赛里,数…

2026/10/17 7:42:12 阅读更多 →
【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集

【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集

做 Agent 应用最怕的不是「写不出第一版」,而是「改了第三版之后,发现第一版明明答对的题现在答错了」。大模型有随机性、提示词有耦合、工具调用有边界,靠人肉聊天抽查既覆盖不全又无法回放。这一篇我们给 Agent 配上一套离线评测集&#xf…

2026/10/17 7:41:11 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →