android-studioarcgisarcgis-android-api

avoid reload arcgis map on android


I am moving a point every so often, the problem is that to keep the point inside the map and not get lost as it moves, I have to reload the map. How could you avoid recharging it, since the movement occurs every two seconds and the map is reloaded every two seconds is too uncomfortable.

Here the code:

  cont++;
        final long EXECUTION_TIME = 2000;
        final Handler handler = new Handler();

       handler.postDelayed(new Runnable() {
            int aux = 0;               
            @Override
            public void run() {

                        GraphicsOverlay graphicsOverlay1 = new GraphicsOverlay();
                        Graphic g1 = new Graphic(getLatLong(aux), attributes, sms);
                        graphicsOverlay1.getGraphics().add(g1);

                        mMap.getGraphicsOverlays().add(graphicsOverlay1);
                        map = new ArcGISMap(basemapType, getLatLong(aux).getY(), getLatLong(aux).getX(), 17);

                        mMap.setMap(map);  //Here is where the map is reloaded, some other way to avoid this burden


                        handler.postDelayed(this, EXECUTION_TIME);
    }
)};

Solution

  • You must use the method: SetViewpointCenterAsync in your mMap and thus avoid loading the map when updating points on the map.

    The code would look like this:

    map = new ArcGISMap(basemapType, getLatLong(aux).getY(), getLatLong(aux).getX(), 17);
    
    mMap.setMap(map); 
    cont++;
    final long EXECUTION_TIME = 2000;
    final Handler handler = new Handler();
    
      handler.postDelayed(new Runnable() {
    int aux = 0;               
    @Override
    public void run() {
    
                GraphicsOverlay graphicsOverlay1 = new GraphicsOverlay();
                Graphic g1 = new Graphic(getLatLong(aux), attributes, sms);
                graphicsOverlay1.getGraphics().add(g1);
    
                mMap.getGraphicsOverlays().add(graphicsOverlay1);
    
                mMap.setViewpointCenterAsync(new Point( getLatLong(aux).getX(), getLatLong(aux).getY(),SpatialReferences.getWgs84()),6000.0) ;
                handler.postDelayed(this, EXECUTION_TIME);   }   )};