Android ARCGIS Shape文件标注折线

时间:2015-10-05 22:27:38

标签: android label arcgis shapefile polyline

我的ARCGIS android应用程序显示了折线shapefile文件 - 在这种情况下是一个漫游网络。

形状文件的字段包含道路名称" ROAD_NAME' - 我的问题是如何创建一个图层来自动显示道路名称?

欢呼声

1 个答案:

答案 0 :(得分:0)

我还尝试在地图上显示标签。 根据我的实验,有两种方法。我意识到了。一种方法是在地图上以编程方式绘制这些标签。但它需要付出很多努力。我做到了,它不漂亮。我想是的。

public class LabelLayer extends GraphicsLayer {
...
 private void showLabel(final FeatureLayer fly, final QueryParameters query,final String labelField) {
 new Thread(new Runnable() {
        @Override
        public void run() {
        fly.getFeatureTable().queryFeatures(query, new CallbackListener<FeatureResult>() {
         @Override
         public void onCallback(FeatureResult objects) {
           Iterator<Object> fet=objects.iterator();
              while (fet.hasNext()){
                Feature f=(Feature) fet.next();
                Geometry geom= f.getGeometry();
                Point    p=null;
                        switch (geom.getType()){
                            case POINT:p=(Point)geom;break;
                            case POLYLINE: Polyline polyline=(Polyline)geom;break;
                            case POLYGON:  p= GeometryEngine.getLabelPointForPolygon((Polygon)geom,mapView.getSpatialReference());break;
                            default:break;

                        }
               txtSymbol.setFontWeight(FontWeight.BOLD);
               txtSymbol.setColor(Color.DKGRAY);
               txtSymbol.setText(f.getAttributeValue(labelField).toString());
                        Graphic gr = new Graphic(p, txtSymbol);
                        LabelLayer.this.addGraphic(gr);

                    }

                }

                @Override
                public void onError(Throwable throwable) {

                }
            });
        }
    }).start();


}
...
}

这个类应该在onDraw()方法中实现。 第二个是使用ArcGIS的tpk。 我认为会更好。