我现在想实现对一个图层在map上缩放到整块显示,导入的经纬度坐标系的shp数据可以显示,但是2000投影坐标系的shp数据获取的的Rectangle2D的值都是投影坐标的,由于在线图是经纬度的天地图,定位也是经纬度的。怎么转换到一起,让他们落到一起去啊。具体如下图
这个是能正常显示的shp数据的
这个是投影的不能正常显示的
这俩方法我用过了,现在这个投影数据放上是没有问题的,可以正常展示出来,但是我要获取到Rectangle2D,然后用
Map().setViewBounds()给他设置个范围,我是不是需要把整块数据进行转换
你说的用CoordinateConvert类需要密钥才行,我用的是正常坐标转换转换过来了,代码如下,这种方法也能实现哪个效果,因为我里面塞了2个point2D,我放入point2Ds里面,里面就俩组数据我直接用getitem0和1应该没问题吧。
PrjCoordSys prjCoordSys = m_mapControl.getMap().getLayers().get(name).getDataset().getPrjCoordSys(); PrjCoordSys map_prjCoordSys = m_mapControl.getMap().getPrjCoordSys(); if (prjCoordSys.isSame(map_prjCoordSys)){ Rectangle2D bounds = m_mapControl.getMap().getLayers().get(name).getDataset().getBounds(); m_mapControl.getMap().setViewBounds(bounds); m_mapControl.getMap().refresh(); }else { Rectangle2D bounds = m_mapControl.getMap().getLayers().get(name).getDataset().getBounds(); Point2D leftbottom = new Point2D(bounds.getLeft(), bounds.getBottom()); Point2D righttop = new Point2D(bounds.getRight(), bounds.getTop()); Point2Ds bound_2Ds = new Point2Ds(); bound_2Ds.add(leftbottom); bound_2Ds.add(righttop); if (bound_2Ds!=null){ boolean inverse = CoordSysTranslator.inverse(bound_2Ds, prjCoordSys); if (inverse){ Rectangle2D new_bounds = new Rectangle2D(bound_2Ds.getItem(0).getX(),bound_2Ds.getItem(0).getY(), bound_2Ds.getItem(1).getX(),bound_2Ds.getItem(1).getY()); m_mapControl.getMap().setViewBounds(new_bounds); m_mapControl.getMap().refresh(); } } }