How do I add a marker to an ArcGIS map on Android?
I am trying to add a marker to an ArcGIS map in my android app. However, after adding a graphics layer, my map is not displayed. I'm new to Android programming and really appreciate any help. I'm not sure what I am 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();
}
}
+3
source to share
1 answer
Decision:
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();
}
+1
source to share