2015-09-24 16 views
6

Ben openlayers 3 kuralı dayalı stil yapmaya çalışıyorum geçerli:Kural tabanlı Şekillendirme 3, işte kod

<!DOCTYPE html> 
<html> 
<head> 
<title>CONFIG</title> 


<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 
<link rel="stylesheet" href="http://openlayers.org/en/v3.8.2/css/ol.css" type="text/css"> 
<script src="http://openlayers.org/en/v3.8.2/build/ol.js"></script> 

</head> 
<body> 
<div class="container-fluid"> 

<div class="row-fluid"> 
    <div class="span12"> 
    <div id="map" class="map"></div> 
    </div> 
</div> 
<script> 

    var layerStyle = { 
     default: { 
     style: new ol.style.Style({ 
     stroke: new ol.style.Stroke({ 
     color: 'rgba(0, 0, 0, 1.0)', 
     width: 0.5 
      }), 
     fill: new ol.style.Fill({ 
     color: 'rgba(0, 255, 0, 0.5)' 
      }) 
      }) 
     }, 

     filter: [{ 
     type: "AND", 
     rules: [{ 
      type: "==", 
      property: "CODE", 
      value: "16" 
     }, { 
      type: "==", 
      property: "NAME", 
      value: "CHIKMAGALUR" 
     }], 
     symbolizers: { 
     style: new ol.style.Style({ 
     stroke: new ol.style.Stroke({ 
       color: 'rgba(0, 255, 0, 0.5)', 
       width: 0.5 
      }), 
     fill: new ol.style.Fill({ 
       color: 'red' 
      }) 
      }) 
     } 
    } ] 
    }; 

    var geojson_layer = new ol.layer.Vector({ 
    source: new ol.source.Vector({ 
     url: 'file.geojson', 
     format: new ol.format.GeoJSON() 
    }), 
}); 
var vectorLayer = new ol.source.Vector({ 
     features: (new ol.format.GeoJSON()).readFeatures(geojsonObject) 
    }); 

     if ('CODE'=='16' && 'NAME'=='CHIKMAGALUR') { 
     style: symbolizers; 
     } 




     var map = new ol.Map({ 
    layers: [ 
    new ol.layer.Tile({ 
     source: new ol.source.OSM() 
    }), 
    vectorLayer, 
    ], 
    target: 'map', 
    controls: ol.control.defaults({ 
    attributionOptions: /** @type {olx.control.AttributionOptions} */ ({ 
     collapsible: false 
    }) 
    }), 
    view: new ol.View({ 
    center: [0, 0], 
    zoom: 5 
    }) 
}); 

</script> 
</body> 
</html> 

ben symbolizer gelen stil almaya çalışırken çalışıyorum ama hata alıyorum . Openlayer2 gibi AND operasyonları için filtreler kullandım ama sıkıştım. Birisi bana bu konuda yardımcı olabilir mi?

+0

Ekleme ** openlayers 2 adamlar bulmak için yardımcı olabilir ** etiketi (OL 2 için) Sorunuzun openlayers görmek Openlayers 3'e eşdeğerdir. Ayrıca, API Dokümantasyonunu okuyun, API'da bulunmayan bir özelliği deniyorsanız, her zaman bir hata alırsınız. –

cevap

2

OL3 vektör katmanlarında, bir Stil nesnesi, bir Stil nesnesi dizisi veya bir Stil nesnesini veya bir Stil nesnesi dizisi döndüren bir işlev olabilecek bir stil niteliği vardır. Muhtemelen yapmaya çalıştığınız şey için bir stil işlevi kullanmak istersiniz.

bu nasıl yapılabileceği için aşağıdaki örneğe bakın:

http://openlayers.org/en/v3.20.1/examples/earthquake-clusters.html

+0

Teşekkürler Bob Holmes, ol3 bir filtre uygulayamıyorum? – Rajan

+2

Tam olarak, en azından bu isimde hiçbir şey yok. Bununla birlikte, filtrenizi şekillendirme işlevinizde uygulayarak, filtrelenmesi gereken tüm özellikler için görüntülenecek ve 'null' döndüren tüm özellikler için bir stil nesnesini döndürebilirsiniz. – Dirk