cuốn sách gpt4 ai đã làm

ios - 确定国家多边形接触 MKMapView 的有效方法?

In lại Tác giả: Walker 123 更新时间:2023-11-29 03:13:48 26 4
mua khóa gpt4 Nike

当用户在我的应用程序中点击 MKMapView 上的一个点时,我想确定他们点击的是哪个国家/地区。速度是我的首要任务,因为用户肯定会注意到 map 触摸和以国家/地区名称开头的注释标注之间的滞后。

我拥有所有国家/地区的多边形信息,并且可以将它们解析/存储在任何必要的数据结构中。目前,它们采用 GeoJSON 格式并具有数千个顶点。我还计算并存储了每个国家/地区的边界框。

一个建议是为每个多边形的边界框存储一个 CGRect 数组,并首先对所有边界框进行 CGRectContainsPoint 搜索,以快速缩小搜索范围。如果该搜索返回多个边界框(常见于边界框可以重叠的国家/地区边界),那么我可以检查过滤后的国家/地区的完整多边形以查找相关点。即使在非常拥挤的重叠区域,此完整搜索也将检查 5 个或更少的完整国家多边形。

为了实现此目的,我需要为每个国家/地区存储 CGRect 边界框和完整、复杂的 CGPath。 (如果一个国家有领土,它可以有多个多边形)我不知道将这些存储在内存中是否是一个好主意,因为可能有数千个多边形。

由于 GEOS 的许可要求,无法选择编译 SpatiaLite。使用 R-Tree 扩展编译 SQLite 是可能的。多边形不会改变,因此我能够预先计算并将它们以建议的任何方式存储在磁盘上。

如果我遵循这个建议,存储和访问所有这些 CGRect 和 CGPath 以便快速搜索和访问的最佳方式是什么?

我愿意接受人们提出的任何其他建议。

câu trả lời hay nhất

Tôi khuyên bạn nên sử dụng Mapbox iOS SDK或者至少使用它的 RMInteractiveSourceRMMBTilesSource 部分。您可以使用 TileMill将您的源数据转换为具有基于每个像素的编码交互信息的栅格图 block 。这是一个例子:https://github.com/mapbox/mapbox-ios-example交互数据基本上是基于每个像素的高效键值存储。然后,您可以将给定 map 缩放级别和平移偏移量的 CGPoint 转换为该值。

技术背景:https://www.mapbox.com/developers/utfgrid/

关于ios - 确定国家多边形接触 MKMapView 的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21915811/

26 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress