欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问一个map中心缩放算法

更新时间: 2014-01-05 02:58:25 责任编辑: Author_N1

 

请教一个地图中心缩放算法
现已知一幅地图的坐标数据(包括WKB_Geometry,以及这幅图的外接矩形的左下角和右上角的坐标),在和前台的交互过程中,前台传回窗口的大小width和height,通过width、height和地图的实际宽高计算出显示全图的比例尺scale,然后前台通过滚动鼠标滚轮缩放地图,后台实时根据新的比例尺生成地图,但有一个要求,就是不能按照坐标原点换算,而是按照前台地图窗口的中心换算,也就是说始终保持当前地图窗口的中心在缩放后仍然是地图窗口的中心,我现在有些想不明白如何计算新地图的xOffset和yOffset,才能够实现以地图中心点缩放的需求,所有的中间数据都保存在内存中,忘高手指点迷津。

我的显示全图的java代码如下


//获得地图离原点最远处坐标(maxX, maxY)和最近处坐标(minX, minY)
MapMinMax mmm = getMapMinMax(conn, oid);

//获得地图窗口宽高
int width = Integer.parseInt(request.getParameter("width"));
int height = Integer.parseInt(request.getParameter("height"));

//宽度比例尺(地图窗口宽度/图幅实际宽度)
double widthScale = width / (mmm.getMaxX() - mmm.getMinX());
//长度比例尺(地图窗口高度/图幅实际高度)
double heightScale = height / (mmm.getMaxY() - mmm.getMinY());
//为了显示全图,因此取两个比例尺中最小的一个
double scale = Math.min(widthScale, heightScale);

session.setAttribute("COM_PRE_SCALE", scale);
int xOffset = 0;
int yOffset = 0;
//如何计算新地图的xOffset和yOffset?


//获得地图中的多边形列表
List<CombineTable> clist = ProjectUtils.getCombineTableList(conn, oid, null, null);
BinaryParser bp = new BinaryParser();
Geometry geometry = null;
Point point = null;

for (int i = 0; i < clist.size(); i++) {
    geometry = bp.parse(clist.get(i).getWKB_Geometry());
    if (geometry.dimension == 2) {
        if (geometry.getType() == Geometry.POLYGON) {
        Polygon ploygon = (Polygon) geometry;
        int numPoints = ploygon.numPoints();
        int[] x = new int[numPoints];
        int[] y = new int[numPoints];
        for (int j = 0; j < numPoints; j++) {
            point = ploygon.getPoint(j);
            x[j] = xOffset + NumberUtils.doubleToInt((point.getX() - mmm.getMinX()) * scale);
            y[j] = yOffset + NumberUtils.doubleToInt((point.getY() - mmm.getMinY()) * scale);
        }
    }
}

--参考方法--
http://hi.baidu.com/geochenyj/blog/item/45bfc1c2967218190ef477ff.html
gis中控制地图显示的几个参数,也许对你有点帮助
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:58:25
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/16799/
本文WWW.DOC100.NET DOC100.NET版权所有。