[OpenLayers-Users] Can Not Get Rule-based Styling to Work with KML
Arnd Wippermann
arnd.wippermann at web.de
Tue Dec 11 11:57:22 PST 2012
try with attributes like
<SUMMER>1000.123</SUMMER>
instead of this
<ExtendedData>
<SchemaData schemaUrl="#ba_summerId">
<SimpleData name="SUMMER">1000.123</SimpleData>
</SchemaData>
</ExtendedData>
then your code should work. Very likely the property in the filter doesn't
evaluate against ExtendedData.
Arnd
_____
Von: openlayers-users-bounces at lists.osgeo.org
[mailto:openlayers-users-bounces at lists.osgeo.org] Im Auftrag von
reinaldo at geodesign.com.br
Gesendet: Dienstag, 11. Dezember 2012 03:42
An: openlayers-users at lists.osgeo.org; OpenGSC
Betreff: [OpenLayers-Users] Can Not Get Rule-based Styling to Work with KML
OP Users,
I can't get the rule-base styling to work on KML file.
Please find below my JS, HTML and KML files.
I would appreciate very much if someone could help me.
I examined the examples, read the documentation and double checked the KML
file structure. Evertyhing indicate that the rule-based styling should work,
but it doesn't.
I created a simple kml file with one attribute for each placemark. I can get
the attributes rendered as labels, but I can not do the rule-based styling
to work It looks like the rules are not being evaluated because I only get
the elseifFilter style result rendered. It does not evaluate the other two
EQUAL_TO rules, or any other Filter.Comparison rule.
Thanks in advance,
Reinaldo
*** JS FILE **************************************
var map = new OpenLayers.Map("map");
var vector_style = new OpenLayers.Style(
{
fillColor: "#00ff00",
fillOpacity: 0.1,
strokeWidth: 1,
strokeColor: "#0000ff",
strokeOpacity: 4,
// label: '${state}',
// fontColor: "#ff0000",
// fontFamily: "sans-serif",
// fontSize: "10px",
// fontWeight: "bold"
},
//{
//context: {
//state: function(feature){ return feature.attributes.SUMMER.value; }
//}},
{
rules: [
new OpenLayers.Rule({
filter: new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: "SUMMER",
value: 1000.123
}),
symbolizer: {
fillColor: "#ff0000",
fillOpacity: 1.0,
strokeWidth: 1,
strokeColor: "#ff0000",
strokeOpacity: 4,
}
}),
new OpenLayers.Rule({
filter: new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: "SUMMER",
value: 2000.123
}),
symbolizer: {
fillColor: "#00ff00",
fillOpacity: 1.0,
strokeWidth: 1,
strokeColor: "#00ff00",
strokeOpacity: 4,
}
}),
new OpenLayers.Rule({
// apply this rule if no others apply
elseFilter: true,
symbolizer: {
fillColor: "#ffff00",
fillOpacity: 1.0,
strokeWidth: 1,
strokeColor: "#ffffff",
strokeOpacity: 4,
}
})
]
}
);
var vector_style_map = new OpenLayers.StyleMap({
'default': vector_style
});
var vectorlayer = new OpenLayers.Layer.Vector("SOLAR RAD BAHIA", {
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "kml/ba_diff_simple1.kml",
format: new OpenLayers.Format.KML({
extractStyles: false,
extractAttributes: true,
srsName: "EPSG:900913"
})
}),
styleMap: vector_style_map
});
var googleLayer = new OpenLayers.Layer.Google("Google Satellite",
{type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22}
);
map.addLayers([googleLayer, vectorlayer]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.zoomToMaxExtent();
*** HTML FILE **************************************
<!DOCTYPE html>
<html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,
maximum-scale=1.0, user-scalable=0">
<meta name="apple-mobile-web-app-capable" content="yes">
<link rel="stylesheet" href="../theme/default/style.css"
type="text/css">
<link rel="stylesheet" href="style.css" type="text/css">
<script
src="http://maps.google.com/maps/api/js?v=3&sensor=false"></script>
<style type="text/css">
#map {
width: 600px;
height: 450px;
border: 1px solid black;
}
</style>
</head>
<body>
<h1 id="title">OpenLayers Example</h1>
<div id="tags">simple, basic, light</div>
<div id="map" class="smallmap"></div>
<script src="../lib/OpenLayers.js"></script>
<script src="example1.js"></script>
</body>
</html>
*** KML FILE **************************************
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Folder>
<name>diffuse_summer</name>
<Schema name="ba_diffuse_summer" id="ba_summerId">
<SimpleField name="SUMMER" type="double"></SimpleField>
</Schema>
<Placemark>
<Style>
<LineStyle>
<color>ff0000ff</color>
</LineStyle>
<PolyStyle>
<fill>0</fill>
</PolyStyle>
</Style>
<ExtendedData>
<SchemaData schemaUrl="#ba_summerId">
<SimpleData name="SUMMER">1000.123</SimpleData>
</SchemaData>
</ExtendedData>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>-39.551991120000018,-8.654038020000009
-39.461196960000017,-8.650702980000011
-39.457748160000023,-8.738279009999998 -39.54856104000001,-8.741648970000023
-39.551991120000018,-8.654038020000009</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
<Placemark>
<Style>
<LineStyle>
<color>ff0000ff</color>
</LineStyle>
<PolyStyle>
<fill>0</fill>
</PolyStyle>
</Style>
<ExtendedData>
<SchemaData schemaUrl="#ba_summerId">
<SimpleData name="SUMMER">2000.123</SimpleData>
</SchemaData>
</ExtendedData>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>-39.370407120000024,-8.647350030000021
-39.27961296000003,-8.643977999999999 -39.27612708000003,-8.731485000000008
-39.366936000000003,-8.734890960000024
-39.370407120000024,-8.647350030000021</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
<Placemark>
<Style>
<LineStyle>
<color>ff0000ff</color>
</LineStyle>
<PolyStyle>
<fill>0</fill>
</PolyStyle>
</Style>
<ExtendedData>
<SchemaData schemaUrl="#ba_diffuse_summerId">
<SimpleData name="SUMMER">3000.123</SimpleData>
</SchemaData>
</ExtendedData>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>-41.365158120000011,-8.805078990000009
-41.274315,-8.802090000000005 -41.271233040000013,-8.890313040000013
-41.362098840000023,-8.893332990000021
-41.365158120000011,-8.805078990000009</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Folder>
</Document>
</kml>
_____
Reinaldo Escada Chohfi
Sócio Gerente
GeoDesign Internacional
www.geodesign.com.br
Tel./Fax: (12) 3153-5115
Inteligência e Tecnologia Espacial de Ponta
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20121211/7abf0d22/attachment-0001.html>
More information about the Users
mailing list