?? mapperservlet.java
字號:
package com.oyc.mapxtreme.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.mapinfo.mapj.MapJ;
import com.mapinfo.unit.LinearUnit;
import com.mapinfo.util.DoublePoint;
import com.mapinfo.util.DoubleRect;
import com.oyc.mapxtreme.util.MapConfig;
import com.oyc.mapxtreme.util.RenderMap;
/**
* servlet:根據客戶端Applet的請求生成相應的地圖,包括放大處理,縮小處理等
* @author 三峽大學理學院 歐陽超
*
*/
public class MapperServlet extends BaseHttpServlet {
//地圖屬性對象
private MapConfig mapCfg = MapConfig.getInstance();
//地圖的原始視野值
private double oldZoom;
/**
* 全圖顯示
*
*/
public void fullMap(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//取出MapJ對象,如果不存在,則創建一個
HttpSession session = request.getSession(true);
MapJ myMap = (MapJ) session.getAttribute("mapj");
if (myMap == null) { //等于null,說明是第一次訪問
//加載地圖配置文件
this.mapCfg.config();
//初始化地圖
myMap = initMapJ();
} else {
myMap.setZoomAndCenter(oldZoom, new DoublePoint(0, 0));
}
//渲染MapJ,輸出
RenderMap render = new RenderMap();
render.renderMap(myMap, response);
//將MapJ對象存入Session
session.setAttribute("mapj", myMap);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 用放大或縮小按鈕單擊或拖動Applet中的地圖時,縮放地圖
*
*/
public void zoom(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//存儲Applet傳過來的參數
double ptx = Double.parseDouble(request.getParameter("ptx"));
double pty = Double.parseDouble(request.getParameter("pty"));
double zoom = Double.parseDouble(request.getParameter("zoom"));
//取出MapJ對象
HttpSession session = request.getSession();
MapJ myMap=(MapJ) session.getAttribute("mapj");
//創建地圖中心坐標
DoublePoint point=new DoublePoint(ptx, pty);
DoublePoint newpoint=myMap.transformScreenToNumeric(point);
//重置地圖視野和中心
myMap.setZoomAndCenter(zoom, newpoint);
//渲染MapJ,輸出
RenderMap render = new RenderMap();
render.renderMap(myMap, response);
//將MapJ對象存入Session
session.setAttribute("mapj", myMap);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 平移地圖
*
*/
public void pan(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//存儲Applet傳過來的參數
double ptx=Double.parseDouble(request.getParameter("ptx"));
double pty=Double.parseDouble(request.getParameter("pty"));
//取出MapJ對象
HttpSession session = request.getSession();
MapJ myMap=(MapJ) session.getAttribute("mapj");
//創建地圖中心坐標
DoublePoint point=new DoublePoint(ptx, pty);
DoublePoint newpoint=myMap.transformScreenToNumeric(point);
//重置地圖中心
myMap.setCenter(newpoint);
//渲染MapJ,輸出
RenderMap render = new RenderMap();
render.renderMap(myMap, response);
//將MapJ對象存入Session
session.setAttribute("mapj", myMap);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 初始化MapJ
*
*/
private MapJ initMapJ() throws Exception {
MapJ myMap = new MapJ();
myMap.setDeviceBounds(new DoubleRect(0, 0, this.mapCfg.getMapwidth(), this.mapCfg.getMapheight()));
//加載地圖
try {
if (this.mapCfg.getFiletoload().endsWith(".gst")) {
myMap.loadGeoset(this.mapCfg.getFiletoload(), this.mapCfg.getMappath(), null);
} else {
myMap.loadMapDefinition(this.mapCfg.getFiletoload());
}
} catch (Exception e) {
System.out.println("Can't load geoset: " + this.mapCfg.getFiletoload() + "\n");
throw e;
}
myMap.setDistanceUnits(LinearUnit.kilometer);
//記下地圖的初始zoom值
this.oldZoom = myMap.getZoom();
System.out.println("map old zoom: " + this.oldZoom);
return myMap;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -