[OpenLayers-Users] Parse and paste KML into an existing layer
Slawomir Messner
slawomir.messner at staff.uni-marburg.de
Fri Jun 11 07:08:39 EDT 2010
It's "funny", but not really surprising for me, that when I use the
alternative method with a loadend listener, reproject/copy the features
into the one they belong and then delete the "new" layer all it works.
It's a workaround but I would like to know what I'm doing work the KML
Parser example shows that it should work. Maybe there are Problems with
multipolygons but the parser works for the method with a new layer.
Regards,
Slawomir
Am 11.06.2010 12:56, schrieb Slawomir Messner:
> Hi,
> I have a handler witch returns kml files with geometries, when I use it
> for a new layer all works fine and I see my geometries. But when I don't
> want a new layer I load the data with OpenLayers.loadURL, parse it with
> OpenLayers.Format.KML and add the resulting features then nothing shows.
> The layer has 16 but not visible.
> The layer has projection 900913 so I transform them and when I want the
> parsed features in wkt the result is undefined.
> Here is my code(when I remove the style and reprojection nothing changes):
> penLayers.loadURL(myurl, myparam, this, this.parseData, this.onError);
> parseData:function(req) {
> g = new OpenLayers.Format.KML({ extractStyles: true,
> extractAttributes: true });
> wkt = new OpenLayers.Format.WKT();
> features = g.read(req.responseText);
> var src = new OpenLayers.Projection('EPSG:4326');
> var dest = this.layer.projection;
> for (var feat in features) {
> feature = features[feat];
> if (feature != null&& feature.geometry != null) {
> if (feature.geometry instanceof
> OpenLayers.Geometry.Polygon) {
> for (var i = 0; i<
> feature.geometry.components.length; i++) {
>
> OpenLayers.Projection.transform(feature.geometry.components[i], src, dest);
> }
> } else if (feature.geometry instanceof
> OpenLayers.Geometry.MultiPolygon) {
> for (var i = 0; i<
> feature.geometry.components.length; i++) {
> for (var j = 0; j<
> feature.geometry.components[i].components.length; j++) {
>
> OpenLayers.Projection.transform(feature.geometry.components[i].components[j],
> src, dest);
> }
> }
> } else if (feature.geometry instanceof
> OpenLayers.Geometry.Point) {
>
> OpenLayers.Projection.transform(feature.geometry, src, dest);
> }
> var styleMap = new OpenLayers.StyleMap();
> OpenLayers.Util.extend(styleMap,
> this.layer.styleMap.styles["default"].defaultStyle);
> feature.style = styleMap;
> }
> }
> this.layer.addFeatures(features);
> }
> I noticed that some of the geomatry-attributes of the features are null,
> this is maybe the reason why I cannot see a feature on the map but why
> are they not parsed? When I use a new layer the features are on the map.
> The alternative code is :
>
> // var defaultStyle = new
> OpenLayers.Style({ 'pointRadius': 4, 'fillColor': '#123456',
> 'fillOpacity': 0.4, 'stroke': true, 'strokeColor': '#654321',
> 'strokeOpacity': 1, 'strokeWidth': 1, 'strokeDashstyle': 'solid' });
> // var selectStyle = new
> OpenLayers.Style({ 'pointRadius': 5, 'fillColor': '#FFFFFF',
> 'fillOpacity': 0.6, 'stroke': true, 'strokeColor': '#FF2414',
> 'strokeOpacity': 1, 'strokeWidth': 2, 'strokeDashstyle': 'solid' });
> // var layerStyleMap = new
> OpenLayers.StyleMap({ 'default': defaultStyle, 'select': selectStyle });
> // this.hostLayer = new
> OpenLayers.Layer.Vector("Statistik", {
> // projection: new
> OpenLayers.Projection("EPSG:4326"),
> // strategies: [new
> OpenLayers.Strategy.Fixed({ preload: true })],
> // protocol: new
> OpenLayers.Protocol.HTTP({
> // url: myurl,
> // format: new
> OpenLayers.Format.REDEKML({
> // extractStyles: true,
> // extractAttributes: true
> // })
> // }), transitionEffect: "resize",
> visibility: true, styleMap: layerStyleMap, renderers: ["REDESVG", "SVG",
> "VML"]
> // });
> // this.map.addLayer(this.hostLayer);
> Please help,
> Slawomir
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
--
-----------------------------------------------
Slawomir Messner
Forschungszentrum "Deutscher Sprachatlas"
06421-28-24981
More information about the Users
mailing list