标签: mapbox

为什么我的NSMutableArray在某些索引上包含nil?

问题:

在我填充了一个NSMutableArray对象并尝试用它做某事之后,它包含(id)0x0了一些索引.我认为NSMutableArray在Objective-C中根本不可能添加nil 所以我想知道为什么会发生这种情况.

这是什么时候发生的?

不幸的是,"有时候".它可以通过下载超过5000个瓷砖来重现,只是为了获得足够高的金额以便发生这种情况.即使有超过5000个瓷砖,它有时也会完美无缺.

语境:

我的应用程序有一个按钮,可以开始下载特定区域的地图图块.下载在后台线程中并行发生,并为每个下载的磁贴报告.

为了允许取消下载,在我的下载器单例中,我有一个临时表NSMutableArray,可以保存每个下载的磁贴的哈希值.取消后,我可以使用该哈希列表删除数据库中的每个已保存的磁贴.

在下载过程中保存哈希似乎没问题,但是当我真的想要对它做任何事情时(我用[_currentTileHashes copy]它来改变它NSArray以给予删除方法),它会抛出NSInvalidArgumentException一行说:

-[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[3402]
Run Code Online (Sandbox Code Playgroud)

当我使用调试器检查_currentTileHashes可变数组时,我确实看到一个或两个索引实际上是nil或(id)0x0.这个截图说明了它:

调试器在数组中显示nil

相关代码:

此代码来自每个tile下载的回调,它会散列磁贴,将其添加到hashes数组并回调UI以获取进度:

- (void)tileCache:(RMTileCache *)tileCache didBackgroundCacheTile:(RMTile)tile withIndex:(NSUInteger)tileIndex ofTotalTileCount:(NSUInteger)totalTileCount {
    DebugLog(@"Cached tile %lu of %lu.", (unsigned long)tileIndex, (unsigned long)totalTileCount);
    if (_currentlyDownloading) {
        float progress = (float)tileIndex / (float)totalTileCount;

        NSDictionary *progressDict = @{@"progress" : [NSNumber numberWithFloat:progress],
                                       @"routeId" : _downloadingRoute.routeId};

        [_currentTileHashes addObject:[RMTileCache tileHash:tile]];

        [[NSNotificationCenter defaultCenter] …
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutablearray nsarray ios mapbox

6
推荐指数
1
解决办法
275
查看次数

Mapbox 多彩折线

我正在将我的应用程序移至 Mapbox,而我所坚持的事情之一是创建一条彩色多段线,其中段颜色根据速度动态设置。我能做的最接近的事情是创建一组不同颜色的线,并将它们添加到地图中,就像许多单独的线一样,但处理时间和帧速率下降太多,更不用说你可以看到不同的线段。使用 MapKit 或 Google 地图可以轻松实现这一点,但据我所知,Mapbox 中的折线只能有一种颜色。

这里有人问了一个非常类似的问题,但那是 3 年前的事了,答案似乎与使用方向 API 相关。

基本功能如下所示,我创建了一个自定义 MGLMulticolorPolyline 类,以便我可以设置颜色

    func locationPolyLine(locations : [Location], averageSpeed: Double, topSpeed: Double) -> [MGLMulticolorPolyline] {




    var coordinates: [(CLLocation, CLLocation)] = []
    var speeds: [Double] = []
    let smallerLocationArray = locations.enumerated().filter({ index, _ in
        index % 2 != 0
    }).map { $0.1 }




    for (first, second) in zip(smallerLocationArray, smallerLocationArray.dropFirst()) {
        //create an array of coordinates
        let start = CLLocation(latitude: first.locLatitude, longitude: first.locLongitude)
        let end = CLLocation(latitude: second.locLatitude, longitude: second.locLongitude) …
Run Code Online (Sandbox Code Playgroud)

mapbox swift mapbox-ios

6
推荐指数
1
解决办法
1597
查看次数

如何更改mapbox中的语言

我需要在 javascript 中更改地图框的语言,我只在文档中看到以下代码

map.setLayoutProperty('country-label', 'text-field', ['get', 'name_de'])
Run Code Online (Sandbox Code Playgroud)

但这行代码只会更改国家/地区名称,但我需要一切(城市、城镇等)

javascript mapbox reactjs mapbox-gl-js

6
推荐指数
1
解决办法
9533
查看次数

要使用的公共样式的 Mapbox 库

抱歉,因为我是新人...我在哪里可以找到可以在工作室上传和使用的所有公共样式的 Mapbox 库?mabox网站上只有4个样式,但是用户创建了很多公共样式,哪里可以下载?

styles mapbox

6
推荐指数
1
解决办法
4121
查看次数

Mapbox fitbounds() - 无效的 LngLat 对象:(NaN, NaN)

在过去的几个小时里,我一直用头撞桌子。

我试图让 Mapbox 放大所有标记的边界区域的负载。

但是,这是我在下面的代码中遇到的错误。

此错误出现在下面的控制台日志图像之后,因此 lat lng 坐标肯定存在。

未捕获的错误:无效的 LngLat 对象:(NaN,NaN)

  const onLoad = () => {

    let points = [];

    props.cats.forEach(cat => (
      points.push([ cat.lat, cat.lng ])
    ));

    points.length > 0 && ref.current.getMap().fitBounds(points, {
      padding: { top: 50, bottom: 50, left: 50, right: 50 },
      easing(t) {
          return t * (2 - t);
      },
    });

  };
Run Code Online (Sandbox Code Playgroud)

控制台点日志

mapbox mapbox-gl mapbox-gl-js

6
推荐指数
2
解决办法
7432
查看次数

如何使用Python禁用plotly choropleth mapbox图的缩放?

这是我的代码:

fig = px.choropleth_mapbox(district_df[['District','Confirmed','Deaths','id','province']], geojson = geo_df, locations='id', color='Confirmed',
                           color_continuous_scale="Viridis",
                           mapbox_style="carto-positron",
                           zoom=5.9, hover_name = 'District',hover_data = {'District':False, 'Confirmed':True,'Deaths':True,'province':False,'id':False},
                           opacity=0.5, center = {"lat": 28.3949, "lon": 84.1240})
Run Code Online (Sandbox Code Playgroud)

我想禁用缩放选项。有办法吗?

python data-visualization mapbox plotly choropleth

6
推荐指数
1
解决办法
3360
查看次数

尝试安装 mapbox-tileset 时使用 GDAL_CONFIG 环境变量错误提供 gdal-config 的路径

运行 pip install mapbox-tilesets 时,在收集 rasterio 过程中,我在 Windows 10 计算机上收到以下错误,特别是在构建轮子的要求时出现错误。详细信息如下。

Collecting rasterio
  Using cached rasterio-1.1.8.tar.gz (2.1 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\Users\Sandy Haaf\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\python.exe' 'C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2032.0_x64__qbz5n2kfra8p0\lib\site-packages\pip\_vendor\pep517\_in_process.py' get_requires_for_build_wheel 'C:\Users\Sandy Haaf\AppData\Local\Temp\tmp5nhr9kl_'
       cwd: C:\Users\Sandy Haaf\AppData\Local\Temp\pip-install-gj86e2z4\rasterio
  Complete output (2 lines):
  INFO:root:Building on Windows requires extra options to setup.py to locate needed GDAL files. More information is available in the README.
  ERROR: A GDAL API version …
Run Code Online (Sandbox Code Playgroud)

python gdal mapbox rasterio

6
推荐指数
1
解决办法
1111
查看次数

Mapbox GL Js,动态改变地图容器大小,无法调整地图大小

我的地图实例位于可调整大小的容器中,当我更改大小时,我应该调用map.resize()。我想知道是否有一种方法可以监听 mapbox 容器调整大小事件,以便它可以触发 map.resize() ?你能建议如何做吗?

export default function Map({ chartID, configuration, data }) {
  const classes = useStyles();
  const mapContainer = useRef(null);

  const [map, setMap] = useState(null);

  const [settings, setSettings] = useState({
    longitude: -73.935242,
    latitude: 40.73061,
    zoom: 9,
  });

  useEffect(() => {
    const geoFeatures = //...getting data

    const map = new mapboxgl.Map({
      container: mapContainer.current,
      style: 'mapbox://',
      center: [settings.longitude, settings.latitude],
      zoom: settings.zoom,
    });

    map.on('move', () => {...});

    //setting map to state if we need to reference it later
    setMap(map);
    // Clean …
Run Code Online (Sandbox Code Playgroud)

mapbox reactjs mapbox-gl-js react-map-gl

6
推荐指数
1
解决办法
4966
查看次数

Plotly - 在 Density Mapbox 顶部添加散点地理点和轨迹

Scattergeo我正在尝试在密度地图框顶部添加跟踪或叠加层white-bg,以获取通用美国各州轮廓的热图。

我使用的原因scattergeo是我想在密度地图框的顶部绘制一个星形符号,并且唯一接受的符号add_scattermapbox是一个点。如果您选择star符号,则不会添加任何符号。

mapbox_styles我还知道星号对于add_scattermapbox或 的p 是可以接受的density_scattermapbox,但目前我无法在试用金额用完后按网络负载付费。

有没有一种聪明的方法可以在图上添加星号density_mapbox

工作分散地理

fig = go.Figure(go.Scattergeo())

fig.add_scattergeo(lat = [30, 40]
                      ,lon = [-90, -80]
                      ,hoverinfo = 'none'
                      ,marker_size = 10
                      ,marker_color = 'rgb(65, 105, 225)' # blue
                      ,marker_symbol = 'star'
                      ,showlegend = False
                     )

fig.update_geos(
    visible=False, resolution=110, scope="usa",
    showcountries=True, countrycolor="Black",
    showsubunits=True, subunitcolor="Black"
)

fig.show()
Run Code Online (Sandbox Code Playgroud)

在这里添加图片

工作密度Mapbox

d = {'Location': ['Point A', 'Point B'], 'lat': [30, 40], 'long': [-90, -80], 'z': [100,200]} …
Run Code Online (Sandbox Code Playgroud)

python mapbox plotly

6
推荐指数
1
解决办法
1万
查看次数

react-map-gl 跨源请求未成功,未找到?

我正在react-map-gl中设置地图,但是在提供访问令牌后,我收到以下控制台错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://events.mapbox.com/events/v2?access_token=TOKEN. (Reason: CORS request did not succeed). Status code: (null).
Run Code Online (Sandbox Code Playgroud)

我已经安装了react-map-gl

npm install --save react-map-gl mapbox-gl
Run Code Online (Sandbox Code Playgroud)

现在我看看它,它似乎不适用于任何使用 Mapbox 的服务,包括示例页面。

有任何想法吗?

谢谢!

javascript mapbox reactjs react-map-gl

6
推荐指数
1
解决办法
581
查看次数