在我填充了一个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.这个截图说明了它:
此代码来自每个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) 我正在将我的应用程序移至 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) 我需要在 javascript 中更改地图框的语言,我只在文档中看到以下代码
map.setLayoutProperty('country-label', 'text-field', ['get', 'name_de'])
Run Code Online (Sandbox Code Playgroud)
但这行代码只会更改国家/地区名称,但我需要一切(城市、城镇等)
抱歉,因为我是新人...我在哪里可以找到可以在工作室上传和使用的所有公共样式的 Mapbox 库?mabox网站上只有4个样式,但是用户创建了很多公共样式,哪里可以下载?
在过去的几个小时里,我一直用头撞桌子。
我试图让 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)
这是我的代码:
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)
我想禁用缩放选项。有办法吗?
运行 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) 我的地图实例位于可调整大小的容器中,当我更改大小时,我应该调用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) 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) 我正在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 的服务,包括示例页面。
有任何想法吗?
谢谢!
mapbox ×10
mapbox-gl-js ×3
python ×3
reactjs ×3
javascript ×2
plotly ×2
react-map-gl ×2
choropleth ×1
gdal ×1
ios ×1
mapbox-gl ×1
mapbox-ios ×1
nsarray ×1
objective-c ×1
rasterio ×1
styles ×1
swift ×1