Создание Box Control над областью карты с OpenLayers - PullRequest
1 голос
/ 02 мая 2009

Я использую 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» control и использовать область, выбранную в качестве моей области интересов. Однако значения возвращаются в виде пикселей. Но я хочу Долгота и Широта , а не пикселей. Положение мыши control показывает правильные значения long & lat. Меня действительно не волнует, как создается прямоугольник, я просто хочу, чтобы пользователь легко выбрал область карты, и мне нужно узнать ее длину и длину. (Коробка, круг, не имеет значения)

Ответы [ 2 ]

0 голосов
/ 23 октября 2013

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

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

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);

пропустите это в вашей функции уведомления, и вы получите пары lat / long в ll1 & ll2!

0 голосов
/ 23 июля 2009

Выезд: http://garmin.na1400.info/routable.php

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

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

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

...