MapXtreme for java MapJ操作地图

来源:互联网 发布:手机怎么退淘宝保证金 编辑:程序博客网 时间:2024/05/21 06:23

一、如何控制地图显示,比如缩小,放大。查看地图整体还是部分。通过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/mapxtremelayers.add(dataProviderRef, tableDescHelper, "otherLayer");