2017-07-18 23 views
0

geomの回答コードhttps://gis.stackexchange.com/questions/216792/is-there-an-easy-way-to-use-postgis-geojson-in-openlayers-3を使用して、PostGISレイヤーをOL3マップアプリケーションにロードしています。OpenLayers3でのgeoJSONパフォーマンスの向上

問題です:

new ol.layer.Image({ 
      source: new ol.source.ImageVector({ 
       source: new ol.source.Vector({ 
       url: 'https://openlayers.org/en/v4.2.0/examples/data/geojson/countries.geojson', 
       format: new ol.format.GeoJSON() 
       }), 
       style: new ol.style.Style({ 
       fill: new ol.style.Fill({ 
        color: 'rgba(255, 255, 255, 0.6)' 
       }), 
       stroke: new ol.style.Stroke({ 
        color: '#319FD3', 
        width: 1 
       }) 
       }) 
      }) 
      }) 

私の現在のコンストラクタは次のように探しています::

大(生)にGeoJSONデータセットでのレンダリングパフォーマンスはので、私はこのようなものを使用したいのですが最適ではありませんさらに
ol3Vector = function(options) { 

var options = { 
    title: options.title, 
    visible: false, 
    geotable: options.geotable, // table name in PostGis-database 
    fields: options.fields,  // field-names 
    where: options.where,  // where-string passed to PostGis 
    source: new ol.source.Vector({ 
     projection: "EPSG:4326", 
     attributions: [new ol.Attribution({ 
      html: options.attribution 
     })], 
     strategy: ol.loadingstrategy.bbox, //load only data off the visible map 
     loader: function(extent, resolution, projection) { 
      var extent = ol.proj.transformExtent(extent, projection.getCode(), ol.proj.get('EPSG:4326').getCode()); 
      $.ajax({ 
       type: "GET", 
       dataType: "json", 
       url: "../map/php/get_geojson.php?" +  // define path to the get_geojson.php script 
        "geotable=" + options.geotable + 
        "&fields=" + options.fields + 
        "&where=" + options.where + 
        "&bbox=" + extent.join(","), 
       context: this 
      }).done(function(data) { 
       var format = new ol.format.GeoJSON(); 
       this.addFeatures(format.readFeatures(data, { 
        dataProjection: "EPSG:4326", 
        featureProjection: "EPSG:3857" 
       })); 

      }); 

     } 
    }), 
    minResolution: options.minResolution, 
    maxResolution: options.maxResolution, 
    content: options.content, 
    symbology: options.symbology, 
    showLabels: options.showLabels, 
    label: options.label, 

} 

ol.layer.Vector.call(this, options); 

}; 

ol.inherits(ol3Vector, ol.layer.Vector); 

var landkreise = new ol3Vector({ 
    title: "Landkreise in Niedersachsen", // name of the layer to show up in the layerswitcher 
    geotable: "tbl_landkreise_geb_f", 
    fields: "KRS,sumarea", 
    where: "KRS IS NOT NULL", // You can use all the PostgreSQL or PostGis features here 
    minResolution: 0.01, 
    maxResolution: 50000, 
    content: " ", 
    showLabels: false, // show labels on map 
    label: "KRS" // field used for labeling 
}); 
baselayersArray=[OSM, landkreise]; 
baselayers.setLayers(new ol.Collection(baselayersArray)); 
landkreise.setVisible(true); 

私のコンストラクタにol.layer.Image()(最初のコード例)ラッパーを含めるにはどうすればいいですか?あなたは次の操作を行うことができますように

答えて

0

はルックス:

  • はol.layer.Image代わりのol.layer.Vector

  • からあなたol3Vectorを導出以内(ごol.source.Vectorラップ例に示すように、あなたが参照するol.source.ImageVectorとオプションオブジェクト)()

+0

は私がすることを試みたが、私の生成されたHTML文字列は、次のようになります?getgeojson.php geotable =未定義&フィールド=未定義&WHE re = undefined – Revo

関連する問題