刚学GIS,做个设置地图中点就出了麻烦 !但是一直就是设置不正确,搞了N久;后来发现问题在于设置的地图边界高度及宽度要与页面对应的输出处的高度及宽度要一致。
也就是:
myMap.setDeviceBounds(new DoubleRect(0, 0, m_mapWidth, m_mapHeight));
m_mapWidth, m_mapHeight 的值要与下面的width,height一致;
为什么这样呢?不知道谁能解释,以前都没接触GIS这方面的东西什么都不知道;反正暂时问题解决了,可以继续往前走了……
设置中点也就如下代码: DoublePoint newPoint = myMap.getCenter();
if ((reqParam = request.getParameter("ptx"))!=null) {
xStr = new Double(reqParam);
}
if ((reqParam = request.getParameter("pty"))!=null) {
yStr = new Double(reqParam);
}
if(xStr != null && yStr != null)
{
// Transform GIF coordinate to real world coordinate
DoublePoint screenPoint = new DoublePoint(xStr,yStr);
newPoint = myMap.transformScreenToNumeric(screenPoint);
}
myMap.setCenter(newPoint);
resImg(myMap,response); // 输出地图
private void resImg(MapJ myMap, HttpServletResponse response) {
ServletOutputStream sos = null;
try
{
sos = response.getOutputStream();
myMap.setDeviceBounds(new DoubleRect(0, 0, m_mapWidth, m_mapHeight));
MapXtremeImageRenderer rr = new MapXtremeImageRenderer(m_mxtURL);
rr.render(ImageRequestComposer.create(myMap, NUM_OF_COLORS, BACKGROUND_COLOR, "image/gif"));
rr.toStream(sos);
rr.dispose();
}
catch(Exception e)
{
System.out.println("使用数据流输出图片时异常");
System.out.println(e.getMessage());
}
try {
if (sos != null) {
sos.close();
}
}catch(Exception e){
e.printStackTrace();
}
}