目前我正在尝试实现一种使用 React-Native 在存储在用户设备上的 Mapbox 地图上显示自定义图标的方法。我认为这里找到的示例(官方文档的 ShapeSourceIcon 示例作为起点。
因此,按照示例,我来到了以下渲染方法:
render() {
return (
<MapboxGL.MapView
ref={map => { this.map = map; }}
style={styles.map}
logoEnabled={false}
onPress={this.onPress}
onDidFinishLoadingMap={this.finishedLoadingMap}
styleURL={'custom_url'}>
<MapboxGL.Camera
animationMode={'flyTo'}
animationDuration={2000}
centerCoordinate={[ 6.16389,52.255 ]}
zoomLevel={8}/>
<MapboxGL.Images
images={{example: exampleIcon}}
/>
<MapboxGL.ShapeSource
id="routes"
shape={featureCollection}>
<MapboxGL.SymbolLayer
id="routes"
style={exampleStyles.icon}/>
</MapboxGL.ShapeSource>
)
}
下面是代表 shapesource 中使用的变量的特征集合。与上面链接中的修改相比,它有一些小的修改。
const featureCollection = {
type: 'FeatureCollection',
features: [
{
type: 'Feature',
id: '9d10456e-bdda-4aa9-9269-04c1667d4552',
properties: {
icon: 'example',
},
geometry: {
type: 'Point',
coordinates: [6.1552165, 52.2660751],
},
},
{
type: 'Feature',
id: '9d10456e-bdda-4aa9-9269-04c1667d4552',
properties: {
icon: 'example',
},
geometry: {
type: 'Point',
coordinates: [26.542969, -30.221102],
},
},
{
type: 'Feature',
id: '9d10456e-bdda-4aa9-9269-04c1667d4552',
properties: {
icon: 'example',
},
geometry: {
type: 'Point',
coordinates: [-117.206562, 52.180797],
},
},
],
};
示例样式如下所示:
const exampleStyles = {
icon: {
iconImage: '{icon}',
},
};
并且 exampleIcon 变量现在只是一个简单的 png 导入到项目中。这实际上会根据 featureCollection 在指定位置显示图标。下一步是我使用 RNFS(React Native File Storage)加载一个文件,这样做是这样的:
'file://' + RNFS.DocumentDirectoryPath + `/Icons/336.png`
然后上面的代码将替换渲染方法的 MapboxGL.Images 部分中的 exampleIcon。这将不再在地图上显示图标。所以我想可能无法显示这样的图像,但作为一种冰雹玛丽,我决定执行以下操作:
这将再次在地图上显示图标,所以我认为必须可以根据这些策略之一显示动态图标,但我不再确定,而且文档对我的特定情况没有任何帮助。
慕森卡
相关分类