使用 MapBox 添加和显示本地存储的 GeoJSON 文件中的数据
Adding and displaying data from a locally stored GeoJSON file using MapBox
我正在尝试从已添加到 "asset" 文件夹的 GeoJSON 文件向地图添加标记。
我已尝试遵循 the documentation 但是无法获得预期的结果,因为在 运行 应用程序时无法找到标记。
我的尝试:
public void onMapReady(@NonNull final MapboxMap mapboxMap) {
this.mapboxMap = mapboxMap;
mapboxMap.setStyle(Style.MAPBOX_STREETS,
new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
enableLocationComponent(style);
GeoJsonSource source = null;
try {
source = new GeoJsonSource("geojson-source", new URI("asset://markerdata.geojson"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
style.addSource(source);
Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.marker);
style.addImage("marker", icon);
SymbolLayer symbolLayer = new SymbolLayer("layer-id", "source-id"); // ?
symbolLayer.setProperties(PropertyFactory.iconImage("marker"));
style.addLayer(symbolLayer);
}
});
}
我注意到 SymbolLayer
需要 layer-id
和 source-id
但是不明白它们是什么。
如果您将 GeoJsonSource
id 作为 SymbolLayer
源 id,应该会出现标记:
SymbolLayer symbolLayer = new SymbolLayer("layer-id", "geojson-source");
层id是层的标识符,源id是要显示的数据源的id,在你的例子中是"geojson-source"。
我正在尝试从已添加到 "asset" 文件夹的 GeoJSON 文件向地图添加标记。
我已尝试遵循 the documentation 但是无法获得预期的结果,因为在 运行 应用程序时无法找到标记。
我的尝试:
public void onMapReady(@NonNull final MapboxMap mapboxMap) {
this.mapboxMap = mapboxMap;
mapboxMap.setStyle(Style.MAPBOX_STREETS,
new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
enableLocationComponent(style);
GeoJsonSource source = null;
try {
source = new GeoJsonSource("geojson-source", new URI("asset://markerdata.geojson"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
style.addSource(source);
Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.marker);
style.addImage("marker", icon);
SymbolLayer symbolLayer = new SymbolLayer("layer-id", "source-id"); // ?
symbolLayer.setProperties(PropertyFactory.iconImage("marker"));
style.addLayer(symbolLayer);
}
});
}
我注意到 SymbolLayer
需要 layer-id
和 source-id
但是不明白它们是什么。
如果您将 GeoJsonSource
id 作为 SymbolLayer
源 id,应该会出现标记:
SymbolLayer symbolLayer = new SymbolLayer("layer-id", "geojson-source");
层id是层的标识符,源id是要显示的数据源的id,在你的例子中是"geojson-source"。