2015-07-27 2 views
0

Я пытаюсь создать простую карту с использованием JavaScript и OpenLayers 3, которая должна динамически загружать XML-данные OpenStreetMap из API Overpass всякий раз, когда меняется ограничивающая рамка карты. Для этого я создал карту с векторным слоем, а источником этого векторного слоя является векторный источник. Стратегия загрузки этого источника установлена ​​в bbox. Я создал функцию загрузчика, которая вызывается всякий раз, когда изменяется ограничивающая рамка. Тем не менее, я не мог понять, как реально загрузить данные и добавить их на карту.Динамический векторный слой OpenLayers 3 с помощью стратегии bbox без jQuery

var vectorSource = new ol.source.Vector({ 
    format: ol.format.OSMXML(), 
    loader: function(extent, resolution, projection) { 
     var epsg4326 = ol.proj.transformExtent(extent, projection, 'EPSG:4326'); 
     var bbox = epsg4326.join(','); 
     var url = 'http://overpass-api.de/api/interpreter?data=(node["light_source"](' + bbox + ');way["light_source"](' + bbox + ');relation["light_source"](' + bbox + ');>;);out meta;'; 

     ? 
    }, 
    strategy: ol.loadingstrategy.bbox 
}); 

var vector = new ol.layer.Vector({ 
    source: vectorSource 
}); 

var raster = new ol.layer.Tile({ 
    source: new ol.source.OSM() 
}); 

var map = new ol.Map({ 
    layers: [raster, vector], 
    target: document.getElementById('map'), 
    controls: ol.control.defaults(), 
    view: new ol.View({ 
     center: ol.proj.transform([26.69075, 58.3743], 'EPSG:4326', 'EPSG:3857'), 
     maxZoom: 19, 
     zoom: 18 
    }) 
}); 

В основном, вопрос в том, что я должен поставить на место, отмеченное знаком вопроса, в коде выше? В примерах, которые я нашел до сих пор, в основном используется jQuery, который я не использую в своем проекте, поэтому я ищу что-то, что не использует jQuery. Я знаю, что OpenLayers 3 может загружать данные из API Overpass без jQuery, однако единственные примеры, которые я нашел (и воспроизвел), используют фиксированную стратегию загрузки для загрузки всех данных один раз в начале, а не динамически, когда граница границы изменяется.

ответ

0

в основном $ .ajax из jquery является помощником для объекта javascript xmlHttpRequest.

Вы можете использовать его без JQuery: http://www.w3schools.com/xml/xml_http.asp

вы можете найти много, если, как это сделать на Google об этом (попробуйте загрузить данные из OpenLayers 3 первых) http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

+0

Спасибо за ваш ответ , Это не совсем то, о чем я думал, так как я ожидал бы, что OpenLayers может загружать функции напрямую из URL-адреса без внешнего класса HTTP-запроса (как это было бы в случае стратегии фиксированной загрузки, где вместо этого указывается параметр «url» параметра «loader»). Но это работает для меня, и я думаю, что это то, что OpenLayers использует под капотом в любом случае. – Xenos

 Смежные вопросы

  • Нет связанных вопросов^_^