一、如何控制地图显示,比如缩小,放大。查看地图整体还是部分。通过MapJ类来操作。
// 生成图片尺寸 myMap.setDeviceBounds(new DoubleRect(0, 0, 800, 600)); // 设置地图的横向跨度,单位有地图的距离单位决定,如果当前距离单位是千米,则表示地图跨越1000千米 myMap.setZoom(1000); // 设置地图中心,将地图中心定位在鼠标点击的某一点 // 创建屏幕坐标的Point对象,屏幕上x:event.getX(),屏幕上y:event.getY() DoublePoint screenpoint = new DoublePoint(event.getX(),event.getY()); // 将屏幕坐标转换为地理坐标 DoublePoint worldpoint = myMap.transformScreenToNumeric(screenpoint); // 设置地图中心 myMap.setCenter(worldpoint); //设置地图的边界,所有的地图操作都在这个边界内进行 //方法1:给定边界的左下角和右上角,设定边界。 DoubleRect bounds = new DoubleRect(-180,-90,180,90); myMap.setBounds(bounds); //方法2:给定地图的中心,宽度和高度,设定边界。 DoubleRect bounds = new DoubleRect(new DoublePoint(0,0),360,180); myMap.setBounds(bounds); //设置地图投影 坐标数据存储在server\mapinfow.prj文件中,包含上百种投影。 String csProj = new String("\"Azimuthal Equidistant(North Pole)\", 5, 62, 7, 0, 90, 90"); CoordSys ts = CoordSys.createFromPRJ(csProj); //设置地图距离单位 LinearUnit distUnit = LinearUnit.kilometer; myMap.setDistanceUnits(distUnit);
二、添加图层
也可以使用 Layers.addLayer 或 Layers.addNamedLayer 方法单独添加图层。这些方法会将图层置于
集合的末端。位于集合末端的图层是底层图层,会最先绘制。Layers.insertLayer 或 insertNamedLayer
用于控制图层的位置。
Layers 集合中的地图图层将按照从 0 开始的索引以升序显示。FeatureLayer(0) 是顶层的图层,
FeatureLayer(1) 是 FeatureLayer(0) 下面的图层,依此类推,底层图层最先绘制,顶层图层最后绘制。
数据提供方定义图层
要将图层添加到 Layers 集合,必须先对其进行定义。每个图层均有一个负责数据访问的内部对象,这个对象就是数据提供方。
TableDescHelper — 说明数据
DataProviderHelper — 定义数据源
DataProviderRef — 说明如何获取数据
Layers layers = mapj.getLayers(); TableDescHelper tableDescHelper = new TABTableDescHelper(new File("Query22.TAB").getName()); DataProviderHelper dataProviderHelper = new TABDataProviderHelper(dataDir);//dataDir:.TAB文 件存放目录 DataProviderRef dataProviderRef = new MapXtremeDataProviderRef(dataProviderHelper, mapxtremeurl);//mapxtremeurl:http://localhost:8090/MapXtreme/servlet/mapxtreme layers.add(dataProviderRef, tableDescHelper, "otherLayer");