代码之家  ›  专栏  ›  技术社区  ›  asmasyakirah

如何在Android中查看ArcGIS图层图例?

  •  1
  • asmasyakirah  · 技术社区  · 8 年前

    ArcGISmap ,并基于复选框勾选设置层可见性。我正在使用ArcGIS Runtime SDK for Android(100.1版)。

    我的问题是,有没有可能 在“我的图层”对话框中查看要素服务器中的图层图例 ? 意味着替换3个可爱的图标。

    Android应用程序(中间的图层对话框)

    enter image description here

    enter image description here

    提前谢谢!


    更新

    幸亏 falldownhill 's suggestion 使用 Create Swatch

    // Loop each layer
    for (int x=0; x<featureLayer.length; x++)
    {
        try
        {
            // Try get each layer legend
            final ListenableFuture<List<LegendInfo>> layerLegend = featureLayer[x].fetchLegendInfosAsync();
    
            final int finalX = x;
            layerLegend.addDoneListener(new Runnable()
            {
                @Override
                public void run()
                {
                    try
                    {
                        // Get each layer legend
                        List<LegendInfo> legendInfo = layerLegend.get();
                        Symbol legendSymbol = legendInfo.get(0).getSymbol();
                        ListenableFuture<Bitmap> symbolSwatch = legendSymbol.createSwatchAsync(MainActivity.this, Color.TRANSPARENT);
    
                        // Set each layer legend
                        Bitmap symbolBitmap = symbolSwatch.get();
                        ImageView swatchImg = (ImageView) drawerDialog.findViewById(layerImageViewId[finalX]);
                        swatchImg.setImageBitmap(symbolBitmap);
                    }
                    catch (InterruptedException e)
                    {
                        //showMessage("Animation interrupted");
                    }
                    catch (ExecutionException e)
                    {
                        // Deal with exception during animation...
                    }
                }
            });
        }
        catch (Exception e)
        {
            // Ignore changing layer legend
        }
    }
    

    Android应用程序(更新层对话框,中间有所需的图例)

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  0
  •   falldownhill    8 年前

    Create Swatch

    只是为了展示一种使用方法:

    float density = InstrumentationRegistry.getContext().getResources().getDisplayMetrics().density;
    for (FeatureType type : featureTable.getFeatureTypes()) {
      for (FeatureTemplate template : type.getTemplates()) {
        Geometry geometry = //create whatever shape you want the swatch to be
        Feature feature = featureTable.createFeature(template, geometry);
        Symbol symbol = featureLayer.getRenderer().getSymbol(feature);
        ListenableFuture<Bitmap> symbolSwatch = symbol.createSwatchAsync(24, 24,
            density,color,feature.getGeometry());
    
        Bitmap swatch = symbolSwatch.get();
      }
    }