OpenLayersを使ってみる。[Chapter 56]
OpenLayersのRule classとFilter classについて-1[Chapter 55] に引き続き、OpenLayersのFilter subcalssついて基本を学んでいきます。
この章以降は、
-
いかにOpenLayersのVector layerのstyleを表示するか?
-
Style classをその使い方について
-
Ruleとfilterの使い方
-
Filter classの使い方 → 今回はここ
について順番に学んでいきます。
この章で、第10章が終了します。
OpenLayers 2.10 Beginner's Guideなる書籍の章立てにあわせて、OpenLayersの使い方を学んでいきます。
OpenLayers.Filter class
Filter classは、ruleが適用されるべきかどうか確かめるようにfeatuer attribute propertyのロジックをコントロールします。
前の例でのように、単一のfilterを使用することができます。あるいは、filterをともに(例えば、property1が500を超えるもので、別のproperty2が200未満である場合)組み合わせることができます。
Filterはさらに、(spatial)がfeatureがgeometry objectと交差するかどうかチェックすることもできます。これらの物事をすべてするために、filter class(Layer classおよび他のclassのsubclassをどのように使用するかに似ている)のsubclassを使用します。
Filter Subclasses
Filterには4つのsubclassがあります。それは、Comparison、 FeatureId、 LogicalとSpatialです。
ここでは、Spatialについて学びます。
Feature.Spatial
Feature.Spatial classは、地理情報に基づいたfeatureをfilterすることを可能にします。
Vector layerを作成する場合、このclassが使用されます。
WFSプロトコルを使用するVector layerを作成していれば、これは非常に有用なfilterです。
Spatial filterを作成する場合、typeと値を指定する必要があります。
値は、{OpenLayers.Bounds}あるいは{OpenLayers.Geometry}のタイプのどちらかになります。
いくつかのtypeはさらに距離およびdistanceUnitsパラメーターを考慮する必要があります。
typeのうちのいくつかを見ましょう。
-
OpenLayers.Filter.Spatial.BBOX : Specifies features to match that fall inside a bounding box, set by an {OpenLayers.Bounds} object in the value property
-
OpenLayers.Filter.Spatial.CONTAINS : Used to check if an {OpenLayers.Geometry} object specified by the value property contains a feature
-
OpenLayers.Filter.Spatial.DWITHIN : Specifies if a feature is within some distance specified by the distance property
-
OpenLayers.Filter.Spatial.INTERSECTS : Used to check if a feature intersects an {OpenLayers.Geometry} object specified in the value property
-
OpenLayers.Filter.Spatial.WITHIN : Used to check if a feature is completely within an {OpenLayers.Geometry} object specified in the value property
Spatial filterを使用する呼び出しは、次のようになります:
var my_vector_layer = new OpenLayers.Layer.Vector( 'My WFS Layer', { protocol: new OpenLayers.Protocol.WFS({ url: wfs_server }), filter: new OpenLayers.Fitler.Spatial({ type: OpenLayers.Filter.Spatial.BBOX, value: new OpenLayers.Bounds(-180,-90,0,0), projection: new OpenLayers.Projection('EPSG:4326') }) });
詳細は、Filter.Spatialを参考にしてください。
今回のまとめ
OpenLayersの簡単なStyleのrule classとfiler classについて基本を学びました。
次回は、いよいよ最終の第11章です。第11章では、Web Map Applicationについての基本を学んでいきます。
また、本tutorialは、htmlやCSSやJavaScriptの基本的なことはある程度理解している前提で今後も話を進めていきます。また、誤字、脱字、spell間違いや勘違いも多々出てくると考えられます。
それは違うじゃん!!とかいろんな意見をいただければと思います。
そこんところ ヨロシク~~!!
Comments are closed.