java - 为什么动态添加的符号在 Mapbox 中显示为灰色

标签 java android mapbox mapbox-android

当我点击屏幕时,一个标记会添加到 Mapbox map 的中间。第一个标记按预期显示。但是,一旦我添加第二个标记,标记就会显示为灰色。

First marker Second marker turns them grey

这是我用来创建符号源和符号图层以及 onMapClickListener 的代码,其中符号源的功能使用新标记进行更新。所有这些代码都在 onStyleLoaded 方法中。

            //Create the symbol source
            Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_map_marker_blue, null);
            Bitmap marker = BitmapUtils.getBitmapFromDrawable(drawable);
            style.addImage(BLUE_MARKER_IMAGE, marker);
            GeoJsonSource geoJsonSourceSymbol = new GeoJsonSource(SYMBOL_SOURCE_ID);
            style.addSource(geoJsonSourceSymbol);

            //Create the symbol layer
            symbolLayer = new SymbolLayer(SYMBOL_LAYER_ID, SYMBOL_SOURCE_ID);
            symbolLayer.setProperties(iconImage(BLUE_MARKER_IMAGE), iconOffset(new Float[] {0f, -10f}));
            style.addLayer(symbolLayer);

            mapboxMap.addOnMapClickListener(new MapboxMap.OnMapClickListener() {
                @Override
                public boolean onMapClick(@NonNull LatLng point) {

                    final LatLng mapTargetLatLng = mapboxMap.getCameraPosition().target;
                    Point mapTarget = Point.fromLngLat(mapTargetLatLng.getLongitude(),mapTargetLatLng.getLatitude());
                    pointList.add(mapTarget);
                    featureList.add(Feature.fromGeometry(mapTarget));

                    if (style.getLayer(SYMBOL_LAYER_ID) != null) {
                        GeoJsonSource geoJsonSourceSymbol = style.getSourceAs(SYMBOL_SOURCE_ID);
                        if (geoJsonSourceSymbol != null) {
                            geoJsonSourceSymbol.setGeoJson(FeatureCollection.fromFeatures(featureList));
                        }
                    }

                    return true;
                }
            });

我是否做错了什么,或者是否无法使用数据驱动样式动态添加符号?

最佳答案

您使用模拟器吗? Mapbox 团队已经知道模拟设备上的 SymbolLayer 渲染问题:

https://github.com/mapbox/mapbox-gl-native/issues/10829

https://github.com/mapbox/mapbox-plugins-android/issues/1082

关于java - 为什么动态添加的符号在 Mapbox 中显示为灰色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60017232/

相关文章:

java - 获取 map 子图的最快方法是什么

java - AspectJ Weaver & java 模块系统(spring + gradle),编译问题

java - 在Java中,如何使用Path对象复制目录中的所有文件?

android - 使用 Retrofit 和 autovalue 初始化属性

android - 加载凭据时更新到 SDK 4.1.0 后 MapBox Android 应用程序崩溃

ios - Mapbox iOS SDK 折线,swift 3

java - 如何使用 `Collections.binarySearch()` 通过对象的 ArrayList 进行二分搜索?

android - Android 中每个 dex 文件的方法限制为 64K

java - 根据当前位置Android从最近到最远对Java中的列表进行排序

node.js - GeoJSON 在 Node.js 中与 Mongoose/Mongodb 配合使用