Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > вычисление координат от радиуса


Автор: kovalenko123 24.4.2012, 13:32
Всем привет! 
Задача. показать все объекты на карте гугл мап в заданной окружности.

в базе данных есть отдельные поля для lat lng 

Изначально решение (как мне казалось)было таким что беру координаты круга через getBounds(); получаю верхнюю точку и нижнюю и отправляю в запрос. даже начало что то возвращать но при детальном тестинге выяснилось что работает как то не точно.

не стал особо разбираться потому как время не терпит пришел ко второму варианту зная радиус и центр отсчета можно как то вычислить диапазоны координат же? 

Кто сталкивался с такой задачей отзовитесь плиз. подскажите как лучше решить эту задачу.



Код
   

function show(latt,longg)
    {
        $.post("index.php", {latt: latt, longg: longg }, function(data) {
            $('#home_ret').html(data);
        });
     }

    function addObjects() {
        var circle_option = {
            strokeColor: "#ff0000",
            strokeOpacity: 0.8,
            strokeWeight: 1,
            fillColor: "#ff0000",
            fillOpacity: 0.20,
            map: map,
            center: map.getCenter(),
            radius: 16090*2,
            editable: true
            
        };  
        var drawCirle =  new google.maps.Circle(circle_option); 
        drawCirle.setMap(map); 
             
        google.maps.event.addListener(drawCirle, 'radius_changed', function () {
            // radius = drawCirle.getRadius();
            // latt = drawCirle.getCenter().lat();
            //  longg = drawCirle.getCenter().lng();

            //  latlng = drawCirle.getCenter();

            var bounds = drawCirle.getBounds();
            var ne = bounds.getNorthEast();
            var sw = bounds.getSouthWest();
          console.log(lat+'<>'+lng);
            show(sw.lat(),sw.lng());
        });
        
              
    }

Автор: iff 24.4.2012, 18:32
Цитата(kovalenko123 @  24.4.2012,  13:32 Найти цитируемый пост)
зная радиус и центр отсчета можно как то вычислить диапазоны координат же? 

Для координат должно выполняться условие:
(X - Xo)^2 + (Y - Yo)^2 <= R^2
Если Googe Map требует указать диапозон координат в формате "y от такого до такого, x от такого до такого", то нужно запросить все объекты с координатой x от (Xo - R) до (Xo + R) и координатой y от (Yo - R) до (Yo + R), а затем выбрать только те объекты, для которых истинно вышеприведенное неравенство.

Автор: kovalenko123 25.4.2012, 08:10
Вот решение http://maps.forum.nu/gm_drag_polygon.html 
Кому нужна помощь в этом вопросе пишите скину реальный работающий код

iff Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)