MapXtreme java 远程渲染使用 MapXtremeImageRenderer 来处理。
远程渲染表示包含 MapJ 对象的应用程序将服从 MapXtremeServlet 的实例来创建地图。MapJ 客户机将其请求(如何渲染和渲染什么)发送到 MapXtremeServlet,由后者处理请求,然后将结果返回给 MapXtremeImageRenderer,可能的三种结果如下所示:
• 本地系统上使用 toFile() 的位图文件(GIF、JPEG 等)— 通常用于在中间层上存储图像,然后令浏览器从服务器请求文件。
• 使用 toStream() 的 Java 输出流对象 — 流可以表示为文件(与以上相同)或者内存存储的信息(作为 Java 图像对象,如下);两层结构使用 toStream,客户机可将图像存储在内存中。
• 使用 toImage() 的 Java 图像对象 — 将栅格保存在内存中,可直接用于显示。由于要依赖于客户机系统可能没有的 JVM 和字体等系统资源,因此 MapXtremeImageRenderer 是渲染地图最普通的方式。
以下是这三种方法的具体实现
这个是tofile生成的方式
try {
//这里是你的mapxtreme的路径
String url = request.getScheme() +"://"+ request.getServerName() +":"+ request.getServerPort() + request.getContextPath() + "/mapxtreme";
MapXtremeImageRenderer renderer = new MapXtremeImageRenderer(url);
//注意这里设置的文件类型要和生成的图片的类型一致
//这里是gif文件,那么生成出来的图片也就是gif的
ImageRequestComposer composer = ImageRequestComposer.create(mapj, ImageRequestComposer.MAX_COLORS_TRUECOLOR, Color.yellow, "image/gif");
//这里就是生成的图片的路径,而你的页面就要导入这个路径就可以了
renderer.toFile("c://test.gif");
}catch(Exception ex) {
ex.printStackTrace();
}
这个是tostream生成的方式
try {
//这里是你的mapxtreme的路径
String url = request.getScheme() +"://"+ request.getServerName() +":"+ request.getServerPort() + request.getContextPath() + "/mapxtreme";
MapXtremeImageRenderer renderer = new MapXtremeImageRenderer(url);
//注意这里设置的文件类型要和生成的图片的类型一致
//这里是gif文件,那么生成出来的图片也就是gif的
ImageRequestComposer composer = ImageRequestComposer.create(mapj, ImageRequestComposer.MAX_COLORS_TRUECOLOR, Color.yellow, "image/gif");
//这种生成方式直接返回图片
response.setContentType("image/gif");
renderer.toStream(response.getOutputStream());
}catch(Exception ex) {
ex.printStackTrace();
}
这个是toimage生成的方式
try {
//这里是你的mapxtreme的路径
String url = request.getScheme() +"://"+ request.getServerName() +":"+ request.getServerPort() + request.getContextPath() + "/mapxtreme";
MapXtremeImageRenderer renderer = new MapXtremeImageRenderer(url);
//注意这里设置的文件类型要和生成的图片的类型一致
//这里是gif文件,那么生成出来的图片也就是gif的
ImageRequestComposer composer = ImageRequestComposer.create(mapj, ImageRequestComposer.MAX_COLORS_TRUECOLOR, Color.yellow, "image/gif");
//这种生成方式生成图片,然后可以通过处理该图片,再返回
response.setContentType("image/gif");
Image image = renderer.toImage();
BufferedImage bfimage = (BufferedImage)image;
ImageIO.write(bfimage, "GIF", response.getOutputStream());
}catch(Exception ex) {
ex.printStackTrace();
}
这3种方式各有各的用处,在项目里面可以根据自己的情况使用