使用OpenLayers在地图区域上创建Box控件

时间:2009-05-01 22:48:36

标签: javascript map openlayers

我正在使用OpenLayers为我的程序创建一个感兴趣的框。我正在使用此代码:

var control = new OpenLayers.Control();
OpenLayers.Util.extend(control, {
    draw: function () {
        this.box = new OpenLayers.Handler.Box( control,
            {"done": this.notice},
            {keyMask: OpenLayers.Handler.MOD_SHIFT});
        this.box.activate();
    },
    notice: function (bounds) {
        areaSelected(bounds);
    }
});
map.addControl(control);

捕获“Shift创建框”control并使用选定的区域作为我感兴趣的区域。但是值会以像素的形式返回。但我想要经度和纬度,而不是像素。鼠标位置control确实显示正确的长度& LAT。我真的不在乎如何创建盒子,我只想要一个简单的方法让用户选择一个区域的地图,我需要得到lat&该地区的多头。 (Box,Circle,无所谓)

2 个答案:

答案 0 :(得分:0)

退房:http://garmin.na1400.info/routable.php

它有一个复选框,可以设置“启用磁贴选择”设置它。

现在,当您在地图上拖动一个框时,它将选择基础对象。

您可以重复使用源代码。所有的魔力都在:http://garmin.na1400.info/routable.js

答案 1 :(得分:0)

很晚才回复,但我将来帮助别人!

我设法通过执行以下操作从像素中获取小数度数:

var point1 = new OpenLayers.Pixel(bounds.left, bounds.bottom);
var point2 = new OpenLayers.Pixel(bounds.right, bounds.top);

var ll1 = map.getLonLatFromPixel(point1);
var ll2 = map.getLonLatFromPixel(point2);

将其放入通知功能中,您将获得ll1&中的lat / long对。 LL2!