Создание Box Control над областью карты с помощью 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 Create a Box» контролировать и использовать область, выбранную в качестве интересующей меня области. Однако значения возвращаются в виде пикселей. Но мне нужны долгота и широта, а не пиксели. Положение мыши элемент управления показывает правильное длинное & лат. Мне действительно все равно, как создается бокс, я просто хочу, чтобы пользователь мог легко выбрать область карты, и мне нужно получить широту и длину области. (Коробка, Круг, не имеет значения)


person Bernie Perez    schedule 01.05.2009    source источник


Ответы (2)


Проверьте: http://garmin.na1400.info/routable.php

У него есть флажок, чтобы установить его «Включить выбор плитки».

Теперь, когда вы перетаскиваете прямоугольник на карту, он выбирает нижележащие объекты.

Вы можете повторно использовать исходный код. Вся магия в: http://garmin.na1400.info/routable.js

person milovanderlinden    schedule 23.07.2009

Очень поздний ответ, но я помогу другим в будущем!

Мне удалось получить десятичные градусы от пикселей, выполнив следующие действия:

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 и ll2!

person ScottFree    schedule 23.10.2013