2017-11-03 9 views
1

これは私のスクリプトで何度も繰り返しているコードなので、関数として作っていきたいと思います。私は、それができる最も基本的な機能であることを望んでいます。また、私はコード内でどのように関数を呼び出すことができるのか、いくつかの例が私に例を挙げてくれれば非常に喜んでいます。事前にどうもありがとうございました! (:OpenLayers3とGeoServerから私が呼び出していますWFS層の将来の目的のために):コードを変更JSでの関数の作り方

物事は大胆を作られています

// format used to parse WFS GetFeature responses 
    var **layer**GeojsonFormat = new ol.format.GeoJSON(); 

    // source 
    var **layer**Source = new ol.source.Vector({ 
     loader: function(extent, resolution, projection) { 
     var url = 'http://localhost:8080/geoserver/wfs?service=WFS&' + 
      'version=1.1.0&request=GetFeature&typename=**ws**:**layer**&' + 
      'outputFormat=text/javascript&format_options=callback:**layer**LoadFeatures' + 
      '&srsname=EPSG:3765&bbox=' + extent.join(',') + ',EPSG:3765'; 
     // use jsonp: false to prevent jQuery from adding the "callback" 
     // parameter to the URL 
     $.ajax({url: url, dataType: 'jsonp', jsonp: false}); 
     }, 
     strategy: ol.loadingstrategy.bbox 
    }); 

    /** 
    * JSONP WFS callback function. 
    * @param {Object} response The response object. 
    */ 
    window.**layer**LoadFeatures = function(response) { 
     **layer**Source.addFeatures(**layer**GeojsonFormat.readFeatures(response)); 
    }; 

    // layer 
    var **layer**Layer = new ol.layer.Vector({ 
     source: **layer**Source, 
     style: **layer**Style 
    }); 

その後、それぞれの層がマップに含まれなければならないので、私は、VARのlayerLayerが同様に返されている必要があり:

// map 
var map = new ol.Map({ 
    target: document.getElementById('map'), 
    renderer: 'canvas', 
    view: olview, 
    layers: [layerOneLayer, layerTwoLayer, layerThreeLayer, ...], 
    logo: false 
}); 
+0

'** layer ** Layer'は実際の変数名ですか? – evolutionxbox

+0

** layer **は変更可能なセグメントトラフです。これは次のようになります:** layer ** = layerOne、** layer ** = layerTwo。 ** ws **と同じです – mycupoftea

答えて

0

は、関数内のコードをラップし、このようにそれを呼び出す - someFunction()

function someFunction() { 
     // format used to parse WFS GetFeature responses 
     var * * layer * * GeojsonFormat = new ol.format.GeoJSON(); 
    // source 
    var * * layer * * Source = new ol.source.Vector({ 
    loader: function(extent, resolution, projection) { 
     var url = 'http://localhost:8080/geoserver/wfs?service=WFS&' + 
     'version=1.1.0&request=GetFeature&typename=**ws**:**layer**&' + 
     'outputFormat=text/javascript&format_options=callback:**layer**LoadFeatures' + 
     '&srsname=EPSG:3765&bbox=' + extent.join(',') + ',EPSG:3765'; 
     // use jsonp: false to prevent jQuery from adding the "callback" 
     // parameter to the URL 
     $.ajax({ 
     url: url, 
     dataType: 'jsonp', 
     jsonp: false 
     }); 
    }, 
    strategy: ol.loadingstrategy.bbox 
    }); 

    /** 
    * JSONP WFS callback function. 
    * @param {Object} response The response object. 
    */ 
    window.* * layer * * LoadFeatures = function(response) { * * layer * * Source.addFeatures(* * layer * * GeojsonFormat.readFeatures(response)); 
    }; 

    // layer 
    var * * layer * * Layer = new ol.layer.Vector({ 
    source: * * layer * * Source, 
    style: * * layer * * Style 
    }); 
} 

someFunction() 
+0

レイヤーとwsの名前を変更可能な引数として渡す必要があります – mycupoftea

+0

はい、後で変数として関数に渡します – marcusps1

関連する問題