问题标签 [mapbox-ios]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1035 浏览

ios - 在创建 Mapbox MGLShape 之前验证 geojson

我正在使用 iOS Mapbox SDK从来自 3rd 方 APIMGLShapeCollectionFeature的 goejson数据创建一个。FeatureCollection

问题是 API 有时会返回一个无效的 geojson,其中单个Feature不包含有效坐标(见下文),并使用正确MGLShape的 a 初始化失败。'NSInvalidArgumentException', reason: 'A multipoint must have at least one vertex.'

有没有办法在手动解析和修复geojson的过程中过滤掉并删除那些无效Features的?FeatureCollection

0 投票
1 回答
281 浏览

objective-c - 如何在mapbox ios中显示源中添加的折线?

我试图显示取自 GeoJson 的折线,然后添加到同一源但结果不佳。

我记录了源对象,里面有两条折线。但为什么它们没有显示?我究竟做错了什么?

我为 ios 使用 mapbox sdk 3.7.6。

0 投票
0 回答
451 浏览

mapbox - 使用现有的离线栅格 mbtiles 在 mapbox 地图上显示

我想将我的应用程序中的地图从当前的 Apple-Maps-SDK 转换为 Mapbox。我的用户已经将大量离线地图下载到.mbtiles包含栅格数据的多个图块中。

我现在的问题是,在用户过渡到新地图时是否仍然可以使用这些地图?我只是不想简单地删除所有离线地图并告诉用户他现在需要再次下载所有内容,而是给他们一个时间窗口来做到这一点......

我正在查看MGLRasterTileSource/MGLSource并认为我可以创建一个子类并以某种方式将我自己的数据提供给地图,但这似乎不受支持。为此目的没有数据源方法...

如果有人能指出我如何归档我想要的东西,那就太好了。

编辑:所以我认为它可能会这样工作......我将现有的栅格图块迁移到 mapbox 离线数据库中的下载包中。所以我看了一下,caches.db但至少那里的数据不仅仅是一个普通的 png/jpg (尝试使用 mapbox 卫星图像,它应该是光栅)。

因为那里没有用于获取现有光栅图块的公共接口,是吗?

我见过另一种解决方案,其中有人在应用程序内托管网络服务器......但这对我来说似乎有点矫枉过正?!? https://gist.github.com/namannik/3b7c8b69c2d0768d0c2b48d2ed5ff71c

0 投票
1 回答
607 浏览

ios - Mapbox WMS 对 iOS 的支持

mapbox 是否支持 WMS 服务?我在 iOS 文档中什么也没找到,但在 Android 部分我发现了这个:https ://docs.mapbox.com/android/maps/examples/add-a-wms-source/ 。我已经将此代码应用于 iOS 平台,但我的解决方案不起作用。我遇到的第一个问题是 URL 的构建问题。

Url 构造函数在传递的字符串中遇到 {bbox-epsg-3857} 问题。

我通过允许非法字符省略了问题:

然后我尝试将 wms 源添加到地图,但这提供了一些错误

错误:[ERROR] {}[Style]:无法加载源 test1:

0 投票
1 回答
681 浏览

mapbox-ios - 通过颜色特征属性设置 MGLFillStyleLayer 的 FillColor

我们正在开发一个 iOS 应用程序,并且在设置 MGLFillStyleLayer(MapBox iOS SDK)的填充颜色时遇到问题。

我们有一个大的 .geojson 文件,它被解析并添加到标准 MapBox 地图中。geojson 中的每个特征都有一个“颜色”属性来设置特征的背景颜色。颜色保存为十六进制代码。

是否可以通过使用 MapBox 表达式或类似“forEach 功能 -> 设置填充颜色”的方式单独设置每个功能的颜色?

我们试图通过使用 MapBox 为样式提供的表达式(https://docs.mapbox.com/ios/api/maps/4.1.1/for-style-authors.html)来更改颜色,但无法弄清楚如何将特征属性加载到快速函数中以生成颜色。在 Mapbox 的热图示例(https://docs.mapbox.com/ios/maps/examples/heatmap-example/)中,我们看到可以通过 NSNumber-Value 设置填充颜色

也许我们需要定义一些固定值,比如 1 = #db7851, 2 = .... 等等来做到这一点?

为了添加geojson数据,我们使用以下代码

出于测试目的,我们添加了一个触摸事件来更改所选功能的颜色(仅用于测试 MapBox 表达式)。

我们希望,有人可以给我们一个提示或一些文档来帮助我们为每个功能着色。谢谢 :)

0 投票
1 回答
1451 浏览

ios - Mapbox iOS 集群工作,但圆形样式层和数字层没有出现/反映集群的标记密度

我正在使用 Mapbox 创建一个 iOS 应用程序。应用程序向我的 API 发出请求,该请求以 JSON 格式返回地图边界框内发生的许多事件。

我以前没有使用聚类,所以一些地图注释只是覆盖了其他的。我正在使用这个 Mapbox 教程,它MGLShapeCollectionFeature从 GeoJSON 文件创建一个MGLShapeSource,从形状集合特征创建一个,然后将标记层创建为MGLSymbolStyleLayer,将圆形层创建为MGLCircleStyleLayer,将数字层创建为MGLSymbolStyleLayer. 标记层在地理上显示每个单独的事件,圆形层和数字层一起表示每个集群的标记计数。

最终产品应该类似于 Mapbox 示例:

在此处输入图像描述

这是示例用于在世界地图上显示集群海港的 GeoJSON 文件。

以下是该示例用于将所述 GeoJSON 转换为相关源和图层以填充地图的相关代码:

这是我的事件从我的 API 返回的 GeoJSON 格式。这种格式应该是正确的,因为 Mapbox 正在接受它并MGLShapeCollectionFeature从它的数据中创建一个。

我的代码与 Mapbox 示例中的代码非常相似。我首先创建 GeoJSON 文件

我知道这个 GeoJSON 正在被转换为MGLShapeCollectionFeature,因为如果没有,应用程序会崩溃,并且MGLShapeCollectionFeature创建的成功创建了一个源,该源正在从/填充地图创建图层。MGLShapeSource所以我从这个创建一个MGLShapeCollectionFeature

然后我从“源”创建图层并将它们添加到我的地图样式中。

所以代码本质上是完全相同的,只是输入的 GeoJSON 不同。然而,当事件标记聚集时,圆圈层和数字层没有出现。见下文:

在此处输入图像描述

我知道问题不在于 Mapbox 示例的源是从 URL 加载的,而我的实现的源是从加载MGLShapeCollectionFeatureMGLShapeCollectionFeature聚类时的层数。

0 投票
0 回答
117 浏览

ios - MapBox 快照程序失败并显示 HTTP 状态代码 404

我已集成MapBox到我的应用程序中,并正在尝试使用MGLMapSnapshotter. 我直接从网站上复制了该功能。选项绘制的样式正确显示在地图上。谁能告诉我为什么它无法创建快照?

错误

0 投票
3 回答
162 浏览

c# - 基于聚类点数的颜色聚类特征

我正在使用 Xamarin.iOS 和 Mapbox iOS SDK 开发一个应用程序(这里是 Naxam.Mapbox.iOS NuGet 包。我在 MapBox iOS SDK 网站中遵循这个示例:https ://docs.mapbox.com/ios/maps /示例/集群/

我在将这部分代码转换为 C# 时遇到问题:

和:

如果我这样做,我可以为集群设置一个独特的颜色:

但是,如果我按照示例进行操作,我将无法做到这一点,在其中,表达式格式采用 3 个参数:字符串UiColor数组

但是在 C#NSExpression.FromConstant中,最多接受 2 个参数:字符串和一个NSObject[],所以我创建了这个:(以匹配示例中的数组“stops”)

但它没有成功,我应该怎么做呢?

0 投票
1 回答
111 浏览

ios - 步骤里程碑 | 里程碑听众 | Mapbox iOS 等价物

在 Mapbox Android SDK 中,我们可以设置/自定义 StepMilestone,即我们可以在到达当前步骤的 Maneuver 之前获得回调。

iOS Mapbox sdk 中是否有任何等效选项可用于监听 StepMilestone 进度?

0 投票
1 回答
156 浏览

mapbox - 加载WMS服务,url太长无法获取数据

加载WMS服务,url太长无法获取数据

加载一个WMS服务,不加“CQL_FILTER”参数可以请求数据,加“CQL_FILTER”参数不能获取,谁能帮我分析一下?非常感谢!

" http://192.168.8.254:8080/geoserver/workspaceTest/wms?service=WMS&version=1.1.0&request=GetMap&styles=&bbox= {bbox-epsg-3857}&width=256&height=256&transparent=true&srs=EPSG:3857&format=image/ png&layers=workspaceTest:accMV03&CQL_FILTER=WITHIN(GEOM, SRID = 3857; MULTIPOLYGON(((12255325.69509 3791918.95510, 12616926.21400 3762599.99411, 12646245.17499 3547594.28016, 12284644.65608 3547594.28016, 12255325.69509 3791918.95510))))"

可以使用 post 请求吗?