【问题标题】:android show multi point on esri mapandroid在esri地图上显示多点
【发布时间】:2015-07-09 00:05:20
【问题描述】:

我是 arcgis 环境中的新开发人员,也是一名 android 开发人员。对于我的培训,我遵循了 arcgis 教程。我想在我的地图上添加多点,但是当我尝试时,地图上只显示最后一个点。
我需要你的帮助来解决它。

这是我当前的代码:

 MapView mMapview;
  GraphicsLayer graphicsLayer = new GraphicsLayer();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_map);
        mMapview = (MapView) findViewById(R.id.map);
        mMapview.addLayer(graphicsLayer);

        SimpleMarkerSymbol sms = new SimpleMarkerSymbol(Color.RED,10, SimpleMarkerSymbol.STYLE.CIRCLE);

        MultiPoint multiPoint =  new MultiPoint();
        multiPoint.add(-5.2769,6.8169);
        multiPoint.add(-3.0195,8.7057);
        multiPoint.add(-0.0195,9.7057);


        int len = multiPoint.getPointCount();
        Graphic[] graphics = new Graphic[len];
        for(int i = 0; i<len; i++){
            Point pt = multiPoint.getPoint(i);
            graphics[i] = new Graphic(pt,sms);
           graphicsLayer.addGraphic(graphics[i]);
        }
        //graphicsLayer.addGraphics(graphics);
        Toast.makeText(getApplicationContext(),"Count "+graphicsLayer.getNumberOfGraphics(),Toast.LENGTH_LONG).show();

    }

【问题讨论】:

    标签: android dictionary arcgis


    【解决方案1】:

    您的代码使用 ArcGIS Runtime 10.2.4 对我来说可以正常工作,但我必须放大很远才能看到三个不同的点,因为如果您使用的是标准 ArcGIS 底图之一,坐标以米为单位。也许那是你的问题。如果这些值应该是经度和纬度,则必须投影它们,并且只能在初始化 MapView 之后执行此操作,您可以使用 OnStatusChangedListener 执行此操作。试试这个:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_map);
        mMapview = (MapView) findViewById(R.id.map);
        mMapview.addLayer(graphicsLayer);
    
        final SimpleMarkerSymbol sms = new SimpleMarkerSymbol(
                Color.RED, 10, SimpleMarkerSymbol.STYLE.CIRCLE);
    
        final MultiPoint multiPoint =  new MultiPoint();
        multiPoint.add(-5.2769,6.8169);
        multiPoint.add(-3.0195,8.7057);
        multiPoint.add(-0.0195,9.7057);
    
        final int len = multiPoint.getPointCount();
        final Graphic[] graphics = new Graphic[len];
        mMapview.setOnStatusChangedListener(new OnStatusChangedListener() {
            public void onStatusChanged(Object source, STATUS status) {
                if (STATUS.INITIALIZED.equals(status)) {
                    for (int i = 0; i < len; i++){
                        Point pt = multiPoint.getPoint(i);
                        pt = (Point) GeometryEngine.project(
                                pt.getX(),
                                pt.getY(),
                                mMapview.getSpatialReference());
                        graphics[i] = new Graphic(pt,sms);
                        graphicsLayer.addGraphic(graphics[i]);
                    }
                }
            }
        });
    
        //graphicsLayer.addGraphics(graphics);
        Toast.makeText(getApplicationContext(),"Count "+graphicsLayer.getNumberOfGraphics(),Toast.LENGTH_LONG).show();
    
    }
    

    仅供参考,如果您愿意,您可以使用 MultiPoint 几何创建单个图形,而不是现在使用 Point 几何创建的三个图形。再一次,您需要将MultiPoint 投影到地图的空间参考。

    【讨论】:

      猜你喜欢
      • 2013-11-09
      • 2012-05-25
      • 1970-01-01
      • 2012-07-05
      • 2015-05-30
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2013-03-24
      相关资源
      最近更新 更多