Загрузка XML через Javascript и OSM API

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Загрузка XML через Javascript и OSM API

Сообщение Максим Дубинин » 09 окт 2009, 05:47

Хочу для ошибок приделать возможность получения кусочка данных OSM и экстракции разной полезной информации. По идее это делается так - берется OSM API и посылается нужный запрос. Например так:

Код: Выделить всё

http://www.informationfreeway.org/api/0.6/map?bbox=11.54,48.14,11.543,48.145
Результат - XML, который парсится и получается нужная информация.

Искал-искал, нашел какие-то скрипты которые могут получать XML по ссылке. Вот например:

Код: Выделить всё

function loadXML(url) {
        var xhr_object = null;
        if(window.XMLHttpRequest) // Firefox
                xhr_object = new XMLHttpRequest();
        else if(window.ActiveXObject) // Internet Explorer
                xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
        else { // XMLHttpRequest non supporté par le navigateur
                alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                return;
        }
        xhr_object.open("GET", url, false);
        var text = null;
        xhr_object.onreadystatechange = function() {
                if(xhr_object.readyState == 4)  {
                        text=xhr_object.responseText;
                }
        }
        xhr_object.send(null);  
        return bb.xml.parse(text);
}
Однако ничего не получается. Firebug показывает OK красным, ответ - пустой. Все виснет.
Изображение

Это как-то связано с кросс-серверным обращением? Или браузером (у меня FF 3.5)? Та же ссылка просто вставленная в строку адреса работает ок.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Загрузка XML через Javascript и OSM API

Сообщение Mavka » 09 окт 2009, 09:18

В js запрещено делать XMLHttpRequest на все сайты кроме родного. Для решения проблемы используют прокси-скрипты. По-пробуй взять прокси из /cgi-bin/, добавь в него 'www.informationfreeway.org' (хотя в реальности там редирект стоит и у меня запрос ушел на osmxapi.hypercube.telascience.org, что может вызвать некоторые проблемы). Запрос будет выглядеть так:

Код: Выделить всё

http://localhost/cgi-bin/proxy.py?url=http://www.informationfreeway.org/api/0.6/map?bbox=11.54,48.14,11.543,48.145 
Честно пытался проделать это, но у меня очень кривой интернет. Для каждого внешнего сайта нужно делать проброс портов. И тут сильно редирект мешает. Но идея именно такая.
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Загрузка XML через Javascript и OSM API

Сообщение Максим Дубинин » 11 окт 2009, 22:54

В proxy.py добавил:

Код: Выделить всё

allowedHosts = ['gis-lab.info:8180','www.informationfreeway.org']
Обращаюсь так:

Код: Выделить всё

loadXML("http://gis-lab.info/cgi-bin/proxy.py?url=http://www.informationfreeway.org/api/0.6/map?bbox=11.54,48.14,11.543,48.145");
Firebug ругается: 500 Internal Server Error
Не так добавил? Или не так обращаюсь? Смущают вопросы в строке адреса в loadXML.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Загрузка XML через Javascript и OSM API

Сообщение Mavka » 12 окт 2009, 09:18

Ага, у меня тоже самое. Есть смутные догадки но не более. Попробуй переписать сам запрос в серверную реализацию (php, python), может так пойдет. Примерно как в AJAX and MySQL.
лангольеры под окном жрали время ом-ном-ном

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя