根据字符串范围缩放圆的半径 - Mapbox
Scale radius of circle based on range of string - Mapbox
我正在尝试动态设置使用具有三列的数据集绘制的圆的半径:纬度/经度/会话数。数据导入正常,所有位置都以会话数作为标签正确绘制。
场景如下:
半径应基于会话数,因此具有 5 个会话的 lat/lon 对为 1px,具有 5,000 个会话的 lat/long 对为 10px,依此类推
有没有办法在数据集中动态设置这个?我可以通过添加数据集的多个实例并过滤到 1-10、11-100 等来自己创建层 "bands",但是设置 "min" 半径和 "max" 半径并根据可用数据自动缩放。
有没有办法在 Mapbox 中做到这一点?
假设我理解正确 - 基本上你有一些基于会话的数据类型 # 你想在那个经纬度配对上画一个更大或更小的圆圈。
您最初可以做的是导入数据,然后获取会话数并物理创建一组以在地图上呈现(某种类型的数组或其他)。您可以使用 mapbox 标记来渲染这些图标或圆圈,并为它们实际分配一个大小。
在此之前,您必须预先确定一个函数来获取会话数并将它们映射到物理半径值 - 例如 1000 个会话 = 10 的半径和 50,000 个会话 = 500 的半径。
例如,在我创建的 ios 应用程序中,这是我的代码,使用 - https://github.com/mapbox/react-native-mapbox-gl
markersArray = markersArray.concat({
coordinates:[bList[i].latitude, bList[i].longitude],
'type': 'point',
title: bList[i].bname,
subtitle: bList[i].data,
id: bList[i].o_ID.toString(),
startTime: bList[i].startTime,
endTime: bList[i].endTime,
annotationImage: {
url: (bList[i].type === 'drink') ? (drinkUrl) : (foodUrl),
height: 30,
width: 30
},
rightCalloutAccessory: {
url: 'image!info-icon',
height: 20,
width: 20
}
});
我正在尝试动态设置使用具有三列的数据集绘制的圆的半径:纬度/经度/会话数。数据导入正常,所有位置都以会话数作为标签正确绘制。
场景如下:
半径应基于会话数,因此具有 5 个会话的 lat/lon 对为 1px,具有 5,000 个会话的 lat/long 对为 10px,依此类推
有没有办法在数据集中动态设置这个?我可以通过添加数据集的多个实例并过滤到 1-10、11-100 等来自己创建层 "bands",但是设置 "min" 半径和 "max" 半径并根据可用数据自动缩放。
有没有办法在 Mapbox 中做到这一点?
假设我理解正确 - 基本上你有一些基于会话的数据类型 # 你想在那个经纬度配对上画一个更大或更小的圆圈。
您最初可以做的是导入数据,然后获取会话数并物理创建一组以在地图上呈现(某种类型的数组或其他)。您可以使用 mapbox 标记来渲染这些图标或圆圈,并为它们实际分配一个大小。
在此之前,您必须预先确定一个函数来获取会话数并将它们映射到物理半径值 - 例如 1000 个会话 = 10 的半径和 50,000 个会话 = 500 的半径。
例如,在我创建的 ios 应用程序中,这是我的代码,使用 - https://github.com/mapbox/react-native-mapbox-gl
markersArray = markersArray.concat({
coordinates:[bList[i].latitude, bList[i].longitude],
'type': 'point',
title: bList[i].bname,
subtitle: bList[i].data,
id: bList[i].o_ID.toString(),
startTime: bList[i].startTime,
endTime: bList[i].endTime,
annotationImage: {
url: (bList[i].type === 'drink') ? (drinkUrl) : (foodUrl),
height: 30,
width: 30
},
rightCalloutAccessory: {
url: 'image!info-icon',
height: 20,
width: 20
}
});