Mapxtreme Java 地图缩放,平移操作的原理和实现

要想实现Mapxtreme Java 地图的缩放,平移操作,那么必须了解下Mapj这个对象,这个是官方文档对MapJ的名词解释:MapJ 是一个便捷小巧的组件,提供了通过 MapXtremeServlet 或通过其本身来创建地图的界面。由此可见,我们可以通过操作Mapj的对象,进而控制整个地图。

 

现在通过放大操作来进行一下讲解,要实现放大操作需要以下几个步骤

1、得到当前坐标点的屏幕坐标

2、转换成mapJ使用的坐标

3、设置该坐标为地图中心点

4、设置地图缩放比

5、再次渲染地图并刷新

 

首先,我们通过javascript得到当前鼠标点的坐标(这个取得坐标的操作,我就不进行代码演示了,因为每个javascript框架得到坐标的方式都不同),我们需要在servlet里面把取到的屏幕坐标转换成MapJ地图使用的坐标,通过调用MapJ的transformScreenToNumeric方法就可以实现,具体代码如下:

//x,y是我们从屏幕取到的坐标点
	DoublePoint screenDoublePoint = new DoublePoint(x, y);
	DoublePoint numericDoublePoint =mapj.transformScreenToNumeric(screenDoublePoint);

现在,我们得到了numericDoublePoint这个坐标之后,把他设置为当前地图的中心点,然后再设置缩放比,通过mapJ的setZoomAndCenter方法可以一次性的设置中心点和缩放比,代码如下

mapj.setZoomAndCenter(mapj.getZoom() * 0.5, doublePoint);
 

最后,再通过Mapxtreme Java的渲染器渲染之后,刷新整个地图就可以看到效果了

整个放大操作的完整代码如下:

//x,y是我们从屏幕取到的坐标点
	DoublePoint screenDoublePoint = new DoublePoint(x, y);
	DoublePoint numericDoublePoint = mapj.transformScreenToNumeric(screenDoublePoint);
	mapj.setZoomAndCenter(mapj.getZoom() * 0.5, doublePoint);
	response.reset();
	response.setContentType("image/gif");
	ServletOutputStream sos = response.getOutputStream();
	ImageRequestComposer irc = ImageRequestComposer.create(mapj,
			ImageRequestComposer.MAX_COLORS_TRUECOLOR, Color.white,
			"image/gif");
	// renderer = new
	// MapXtremeImageRenderer("http://localhost:9090/cablegis/mapxtreme");
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
	String url = basePath + "mapxtreme";
	//logger.info("url = " + url);
	MapXtremeImageRenderer renderer = new MapXtremeImageRenderer(url);
	renderer.render(irc);
	renderer.toStream(sos);
	renderer.dispose();

 

缩小相对于放大来说,需要修改的就是他的缩放比,而平移只需要修改中心点坐标即可

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://my.oschina.net/durendong/blog/489895

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值