【问题标题】:How do I add marker to a ArcGIS map on android?如何将标记添加到 Android 上的 ArcGIS 地图?
【发布时间】:2014-12-04 01:01:07
【问题描述】:

我正在尝试在我的 Android 应用程序的 ArcGIS 地图上添加一个标记。但是,添加图形图层后,我的地图没有出现。我是 Android 应用程序编程的新手,非常感谢任何帮助。我不确定我在这里做错了什么。提前致谢。

这是我的代码:

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

}

【问题讨论】:

  • 如果地图没有出现那是由于 api 键。
  • 回复:@Abdellah 但如果我删除 mMapView.addLayer(graphicsLayer); 地图就会出现点点 = 新点(1.3799775, 103.84877200000005); graphicsLayer.addGraphic(new Graphic(point,new SimpleMarkerSymbol(Color.RED,10,STYLE.CIRCLE)));

标签: android map arcgis marker


【解决方案1】:

解决办法:

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

【讨论】:

  • 这里 xy 的值是多少?
  • @Nikhil X 的值是经度,Y 是纬度
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
相关资源
最近更新 更多