zoukankan      html  css  js  c++  java
  • Android GIS开发系列-- 入门季(10) MapView快速定位到Geometry

    我们知道某个Geometry的坐标,但不知道具体的位置,该如何使地图快速定位呢?这时需要用到MapView.setExtent方法,来看下这个方法的介绍:Zooms the map to the given geometry so that geometry fits within the bounds of the map.大体的意思即缩小地图定位到Geometry。上代码:

    public class MainActivity extends Activity {
    
        private MapView mapView;
        private GraphicsLayer graphicsLayer;
        private static final String TILED_WORLD_STREETS_URL = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mapView = (MapView) findViewById(R.id.map_view);
            mapView.addLayer(new ArcGISTiledMapServiceLayer(TILED_WORLD_STREETS_URL));
    
            findViewById(R.id.location).setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    //快速定位到线
                    Polyline polyline = new Polyline();
                    polyline.startPath(new Point(110, 23));
                    polyline.lineTo(new Point(115, 25));
                    //由于加载的地图是墨卡托坐标,这里需要转坐标
                    Polyline polyline2 = (Polyline) GeometryEngine.project(polyline,
                            SpatialReference.create(SpatialReference.WKID_WGS84),
                            SpatialReference
                                    .create(SpatialReference.WKID_WGS84_WEB_MERCATOR));
                    mapView.setExtent(polyline2);
                }
            });
            initLayer();
        }
    
    
        /**
         * 添加一条线
         */
        private void initLayer() {
            graphicsLayer = new GraphicsLayer();
            mapView.addLayer(graphicsLayer);
            Polyline polyline = new Polyline();
            polyline.startPath(new Point(110, 23));
            polyline.lineTo(new Point(115, 25));
            //由于加载的地图是墨卡托坐标,这里需要转坐标
            Polyline polyline2 = (Polyline) GeometryEngine.project(polyline,
                    SpatialReference.create(SpatialReference.WKID_WGS84),
                    SpatialReference
                            .create(SpatialReference.WKID_WGS84_WEB_MERCATOR));
            graphicsLayer.addGraphic(new Graphic(polyline2, new SimpleLineSymbol(
                    Color.RED, 3, SimpleLineSymbol.STYLE.SOLID)));
        }
    
    
    
    }

    定位效果图

  • 相关阅读:
    Python基础学习九 数据库备份
    Python基础学习八 写日志
    Python 小练习三 发邮件
    Python基础补充(二) 多核CPU上python多线程并行的一个假象【转】
    pat 1118 Birds in Forest (25分) 并查集
    Java Map实现按value从大到小排序
    java实现排列组合(通俗易懂)
    java实现24点游戏代码
    eclipse搭建struts2环境及所遇到的问题
    java非常好用的读取文件的流的代码
  • 原文地址:https://www.cnblogs.com/arxive/p/7751971.html
Copyright © 2011-2022 走看看