Search code examples
androiddictionaryarcgismarker

How do I add marker to a ArcGIS map on android?


I am trying to add a marker on the ArcGIS map on my Android application. However, after adding the graphics layer, my map does not appear. I'm new to Android application programming and would really appreciate any help. I'm not sure what I'm doing wrong here. Thanks in advance.

Here are my codes:

public class SuggestionsFragment extends Fragment {
    MapView mMapView;
    GraphicsLayer graphicsLayer = new GraphicsLayer();
    Point point;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_suggestions,
            container, false);

    //Retrieve the map and initial extent from XML layout
    mMapView = (MapView)rootView.findViewById(R.id.map);

    //Create the layer
    final Layer oneMapLayer = new   ArcGISTiledMapServiceLayer("http://e1.onemap.sg/arcgis/rest/services/BASEMAP/MapServer");

    mMapView.addLayer(graphicsLayer);
    Point point = new Point(1.3799775, 103.84877200000005);
    graphicsLayer.addGraphic(new Graphic(point,new  SimpleMarkerSymbol(Color.RED,10,STYLE.CIRCLE)));

    //Know when the map layer loaded
    mMapView.setOnStatusChangedListener(new OnStatusChangedListener() {
        private static final long serialVersionUID = 1L;

        public void onStatusChanged(Object source, STATUS status) {
            if (source == oneMapLayer && status == STATUS.LAYER_LOADED) {

                mMapView.centerAt(1.3799775, 103.84877200000005, false);
                mMapView.setScale(1500,false);


            }
        }
    });



    //Add dynamic layer to MapView
    mMapView.addLayer(oneMapLayer);




    return rootView;
}

@Override
public void onDestroy() {
    super.onDestroy();
}

@Override
public void onPause() {
    super.onPause();
    mMapView.pause();
}

@Override
public void onResume() {
    super.onResume();
    mMapView.unpause();
}

}

Solution

  • The solution:

    public class SuggestionsFragment2 extends Fragment {
    MapView mMapView;
    GraphicsLayer graphicsLayer = new GraphicsLayer();
    Point point;
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_suggestions2,
                container, false);
    
    
    
        //Retrieve the map and initial extent from XML layout
        mMapView = (MapView)rootView.findViewById(R.id.map);
    
        //Create the layer
        final Layer oneMapLayer = new ArcGISTiledMapServiceLayer("http://e1.onemap.sg/arcgis/rest/services/BASEMAP/MapServer");
    
        //Know when the map layer loaded
        mMapView.setOnStatusChangedListener(new OnStatusChangedListener() {
            private static final long serialVersionUID = 1L;
    
            public void onStatusChanged(Object source, STATUS status) {
                if (source == oneMapLayer && status == STATUS.LAYER_LOADED) {
    
                    mMapView.centerAt(1.3799775, 103.84877200000005, false);
                    mMapView.setScale(1500,false);
    
                    mMapView.addLayer(graphicsLayer);
                    Point point = GeometryEngine.project(x, y, mMapView.getSpatialReference());
                    graphicsLayer.addGraphic(new Graphic(point,new    SimpleMarkerSymbol(Color.RED,10,STYLE.CIRCLE)));
    
                }
            }
    
        });
    
        //Add dynamic layer to MapView
        mMapView.addLayer(oneMapLayer);
    
        return rootView;
    }
    
    @Override
    public void onDestroy() {
        super.onDestroy();
    }
    
    @Override
    public void onPause() {
        super.onPause();
        mMapView.pause();
    }
    
    @Override
    public void onResume() {
        super.onResume();
        mMapView.unpause();
    }