java 地图渲染_MapXtreme for java 地图渲染
地图渲染特指生成地图图像的过程。
1、三种渲染方式一、MapXtremeImageRenderer 远程渲染使用 MapXtremeImageRenderer 来处理。
远程渲染表示包含 MapJ 对象的应用程序将服从 MapXtremeServlet 的实例来创建地图。MapJ 客户
机将其请求(如何渲染和渲染什么)发送到 MapXtremeServlet,由后者处理请求,然后将结果返回
给 MapXtremeImageRenderer.
(1)、本地系统上使用toFile()的位图文件(GIF、JPEG 等)— 通常用于在中间层上存储图像,然后
令浏览器从服务器请求文件。
(2)、使用 toStream() 的 Java 输出流对象 — 流可以表示为文件(与以上相同)或者内存存储的信息
(作为 Java 图像对象,如下);两层结构使用 toStream,客户机可将图像存储在内存中。
(3)、使用 toImage() 的 Java 图像对象 — 将栅格保存在内存中,可直接用于显示。
由于要依赖于客户机系统可能没有的 JVM 和字体等系统资源,因此 MapXtremeImageRenderer 是
渲染地图最普通的方式。
二、LocalRenderer
LocalRenderer 将地图渲染为 Java2D Graphics2D 或 BufferedImage 对象。Graphics2D 对象通常源
自 BufferedImage 或 Swing 组件。所有的渲染均在客户端计算机完成。由于所有渲染均在客户端计算
机完成,渲染地图所需资源必须驻留在客户端计算机(字体、视频卡等)。
三、EncodedImageRenderer
MapXtreme Java 提供特殊渲染器来帮助用户使用动画图像创建地图。
2、数据的输出
一、栅格数据输出
MapXtreme Java 支持多种栅格输出格式,其中包括 GIF、JPEG、PNG 和 WBMP。栅格图像的输
出格式在 ImageRequestComposer 中通过 MIME 类型指定。MIME 是一种用于图像数据等非文本数
据的格式标准。以下指南将帮助您确定最适合具体需求的格式类型。
image/jpeg — JPEG — 适用于多于 256 色的图层。
image/gif — GIF — 适用于最多 256 色的图层。
image/png — PNG — 是 GIF 格式的替代格式,适用于多于 256 色的图层。
image/wbmp — WBMP — 用于在类似手机和 PDA 的手持设备中生成图形的专用格式。
image/svg+xml — SVG — 用于在 XML 中说明二维向量图形的格式。
例如,要输出 JPEG,可使用如下所示的 ImageRequestComposer:
ImageRequestComposer.create(mapj, maxColors, bgColor, "image/jpeg");
maxColors:低位 256
bgColor:图片底色 Color.blue
在使用栅格文件时,建议使用 PNG 输出。GIF 输出限定为最高 256 色,但栅格文件通常至少具有
256 RGB 或灰度颜色。添加向量图层可能会引入 256 种以上的颜色,
二、SVG输出
可缩放矢量图形(英语:scalable vector graphics,SVG)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。
好处
(1)、图像文件可读,易于修改和编辑
(2)、与现有技术可以互动融合。SVG文件还可嵌入JavaScript)脚本来控制SVG对象
(3)、SVG图形格式可以方便的建立文字索引,从而实现基于内容的图像搜索
(4)、SVG图形格式支持多种滤镜和特殊效果,在不改变图像内容的前提下可以实现位图格式中类似文字阴影的效果
(5)、SVG图形格式可以用来动态生成图形。例如,可用SVG动态生成具有交互功能的地图,嵌入网页中,并显示给终端用户
示例
/p>
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
width="467" height="462">
stroke="black" stroke-width="2px" />
stroke="black" stroke-width="2px" fill-opacity="0.7" />
MapXtreme Java Edition 支持采用 SVG 格式导出地图图像,要将导出格式指定为 SVG,可在 ImageRequestComposer 中设置 MIME 类型。
例如:ImageRequestComposer.create(myMap, ImageRequestComposer.MAX_COLORS_256, Color.WHITE, "image/svg+xml");
也可以向SVG添加JavaScript 事件
SVG 文档还具有一个与 HTML 文档中的事件处理程序类似的事件处理程序工具。SVG 文档可以提供
若干种事件类型的信号,例如鼠标移动、重新调整大小等。这一特性可用于实现交互操作。
3、渲染器的介绍(1)、复合渲染器
MapXtreme Java 的渲染器称为复合渲染器,可用于指定在图形更新时需要重画的图层。这在只有部
分图层包含更改信息的时候尤为实用。CompositeRenderer 可用于将 MapJ 中的图层划分为静态和
动态渲染的图层。静态图层将只能重画一次,并在本地存储为位图。动态图层将根据每个渲染请求
重画。
复合渲染器提供实用的应用程序,例如显示沿公路移动的车辆等功能。
在地图上显示移动的对象。GPS 应用程序可以显示一辆沿地图上的高速公路移动的卡车。基础地图
只需绘制一次,而卡车符号将在需要时随时绘制(如每个位置改变)。
使用 CompositeRenderer 时切记以下信息:
静态图层将绘制为本地存储的位图。此时将使用大量内存,一个 640 x 480 的图像将至少占用 2.7MB
内存。
更改 MapJ 上的缩放将导致静态图层变形。直线将显示为阶梯状或锯齿状。
更改 MapJ 的中心将导致静态图层的边缘平移。此时,可以重新生成静态图层。
(2)、渐进渲染
渐进渲染是 MapXtreme Java 提供的强大功能之一,用于先将部分地图图像发送到客户机,并随之
在指定的时间间隔之内,发送更加完全的图像,直至完整图像接收完毕。与在整个地图图像完成渲
染之后再发送图像相比,这一特性可以更快地实现接收图像的某些部分。
渐进渲染在需要重新生成花费大量时间访问底层数据的图层时非常实用。那么采用渐进渲染与发送
一个最终的图像相比,显示整个图像所用的总时间会略有增加。
客户机控制图像是否采用渐进渲染,以及采用多长的时间间隔来通过 ImageRequestComposer 使用
的特殊 MIME 类型返回。这一 MIME 类型采取以下形式:multipart/image;imagetype=xxx;interval=yyy
其中 xxx 是要返回的图像的 MIME(如 image/gif、image/jpg 等),yyy 是以毫秒为单位的更新时间
间隔。渐进渲染由 MapXtremeImageReneder 类上的 isDone() boolean 方法启用。若将 isDone() 设置为
ture,那么 MapXtremeImageRenderer 上的 toStream()、toFile() 和 toImage() 方法在流中返回下一
图像数据块。isDone() 方法可用于遍历并检索流中的每个后续图像,直至检索不到为止。
String mime = "multipart/image;imagetype=image/png;interval=750";
ImageRequestComposer irc = ImageRequestComposer.create(mapj, ImageRequestComposer.MAX_COLORS_256, Color.WHITE,
mime);
MapXtremeImageRenderer renderer = new MapXtremeImageRenderer("http://localhost:8090/MapXtreme/servlet/mapxtreme");
while (!renderer.isDone()) {
Image image = renderer.toImage();
//do something with the image
}
java 地图渲染_MapXtreme for java 地图渲染相关推荐
- java开发surface,World Wind Java开发之十――AnalyticSurface栅格渲染
1.AnalyticSurfaceDemo ArcGIS下对栅格的各种分级渲染效果是非常好的,可以做出很漂亮的图,现在在WW下也能够做出一样的效果了,看到这里是否是有点小兴奋呢.先看下WW自带的Ana ...
- 如何解决地图已加载却不能渲染的问题?
Stack Overflow问题分享 Stack Overflow上有一个海外开发者提问:我在我的项目中使用华为Map Kit,地图已加载但未渲染? 解决方案 一般来说引起地图加载未渲染可能的原因有很 ...
- java根据经纬度获取地址(百度地图)
先创建HttpClientUtils工具类 package cn.crenative.lockinlife.util;import com.google.common.base.Function; i ...
- Java 保姆级教程——3.添加地图,地图根据人物移动
Java 保姆级教程--3.添加地图,地图根据人物移动 注:经过上期的学习,我们学习了如何创建JFrame窗体.如何添加监听事件.根据大家给我的反馈,这一期给大家讲述:如何添加地图.地图如何根据人物移 ...
- 地图下载器工具-Java
地图下载器工具-Java 瓦片下载 要点1 使用瓦片的访问地址直接下载瓦片 主要用到的是HttpURLConnection去访问,为了避免被封杀ip,设置了两个请求参数referer,User-Age ...
- java 微信 百度地图_[Java教程]H5微信通过百度地图API实现导航方式二
[Java教程]H5微信通过百度地图API实现导航方式二 0 2017-08-01 23:53:20 要有服务器才行哦 body, html {width: 100%;height: 100%;mar ...
- Tiled Map Editor(瓦片地图编辑器)的Java和QT版本区别
尊重作者劳动,转载时请标明文章出处. 作者: Bugs Bunny 地址: http://www.cnblogs.com/cocos2d-x/archive/2012/05/03/2479469.ht ...
- android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换
android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换 前言: 由于项目需要,很多时候都需要地图经纬度直接的转换 ...
- java地图文件的编辑器_地图编辑器的选择1
对于一些小游戏来说,规则就是它的全部,这类游戏使用的场景几乎都是随机生成的.比如,俄罗斯方块.泡泡龙.斗地主.水果忍者之类的. 稍微上一些规模的游戏,随机场景可能不满足其游戏难度,这时开发商就会选择使 ...
- java百度地图坐标_java腾讯地图与百度地图坐标转换
/** * 坐标转换,腾讯地图转换成百度地图坐标 * @param lat 腾讯纬度 * @param lon 腾讯经度 * @return 返回结果:经度,纬度 */ public String m ...
最新文章
- 马斯克“做空”特斯拉
- 基于OHCI的USB主机 —— 前言
- windows聚焦壁纸不更新_技术编辑示范win10系统锁屏壁纸聚焦不更新的处理教程
- linux tcp socket 请求队列大小参数 backlog 简介
- CentOS中升级openssl与卸载重装以及提示:error while loading shared libraries: libssl.so.1.1: cannot open shared ob
- 神清气爽,小妹妹,先给她示范了一遍红色警戒
- HTML,CSS,JavaScript学习笔记--导航
- (12)FPGA时钟设计原则
- jQuery和CSS3炫酷滚动页面内容元素动画特效
- app = Flask(__name__) 是个什么东西
- html tooltip 换行,echarts在tooltip中换行操作
- 解决Request method 'GET' not supported问题
- Java打印输出print和prinntln
- 计算机出现蓝屏怎么恢复,电脑蓝屏怎么解决,小编教你如何恢复正常
- c/c++语言实现登陆界面
- 两年嵌入式软件开发的工作感想
- 计算机二进制祖宗是西方人?中国道教一张八卦图千年前早已解释!
- 酒店预订系统web端Android端,基于WEB的酒店客房预订系统的设计与实现
- 腾讯QQ、新浪微博第三方登录接口申请说明
- docker初学记录--运行应用程序