一、如何控制地圖顯示,比如縮小,放大。查看地圖整體還是部分。通過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");