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();
}
}
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();
}