[OpenLayers-Dev] Multipolygon and KML

Tim Schaub tschaub at openplans.org
Fri Nov 9 13:48:08 EST 2007


Hey-

Benoit PESTY wrote:
> Hello,
> 
> I'm currently trying to play with the KML Format and I have in the data 
> I'm using some Multipolygon objects.

Thanks for trying this out.

> I know that its not completely supported yet and that I should submit a 
> patch with a real test case but I'm very short on time on my projet and 
> I've done a few ugly hacks that make things work with Firefox (but not 
> IE yet).

At this point, I'm still not completely clear on what issue you may be 
referring to.  Even if you can't create a ticket, fix the issue, make 
tests, and create a patch, it would help to clearly spell out the 
problem.  For example, if I were reading your mind, I might describe the 
problem as this:

"The OpenLayers.Format.KML fails to write an 
OpenLayers.Geometry.MultiPolygon."

> 
> So, I'm just posting this in case someone have more time than me to look 
> at this subject.

Nobody has any more time than you do :)

> 
> For the export, the "buildGeometry.collection" method in the KML format 
> is not working because "this" is refering to the "buildGeometry" object 
> instead of the "KML" object.
> I've added an ugly "var obj = new OpenLayers.Format.KML();" to make 
> things work, but it's probably not the best way to do.
> 

Ok, I think I'm following.  Though when I see all that code below, I go 
a bit crosseyed and stop reading.

However, if the problem you're referring to is the one I guessed above, 
please see http://trac.openlayers.org/ticket/1132.

And let me know if the attach patch fixes your problem.  If you are 
having more issues with the KML format, please write back.

And a very short email with a concise description of the issue - without 
a lot of inline code and long narrative - is a bit easier to start with 
(for me at least).  Unless attached as a patch, I typically disregard 
code modifications that are described inline (in an email).

Thanks,
Tim

> 
>         /**
>          * Method: buildGeometry.collection
>          * Given an OpenLayers geometry collection, create a KML 
> MultiGeometry.
>          *
>          * Parameters:
>          * geometry - {<OpenLayers.Geometry.Collection>} A geometry 
> collection.
>          *
>          * Returns:
>          * {DOMElement} A KML MultiGeometry node.
>          */
>         collection: function(geometry) {
>             var obj = new OpenLayers.Format.KML();
>             var kml = obj.createElementNS(obj.kmlns, "MultiGeometry");
>             var child;
>             for(var i=0; i<geometry.components.length; ++i) {
>                 child = obj.buildGeometryNode.apply(obj,
>                                                      
> [geometry.components[i]]);
>                 if(child) {
>                     kml.appendChild(child);
>                 }
>             }
>             return kml;
>         }
>     },
> 
> For the import, the parser doesn't seems to support the presence of the 
> "id" attribute in the Placemark tag, i've commented the following line 
> of the "createPlacemarkXML" method :
> placemarkNode.setAttribute("id", feature.fid);
> 
> And last thing, the "MultiGeometry" node is not found by the parser, 
> i've put the node names in lowercase in the "parseFeature" method :
> var order = ["multigeometry", "polygon", "linestring", "point"];
>        
> I'll try to correct this for Internet Explorer too and to give more 
> informations ...
> 
> Best Regards,
> 
> Benoit Pesty.
> ------------------------------------------------------------------------
> Windows Live Hotmail and Microsoft Office Outlook – together at last. 
> Get it now! 
> <http://office.microsoft.com/en-us/outlook/HA102225181033.aspx?pid=CL100626971033> 
> !DSPAM:4033,4731f16a268354901796417!
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Dev mailing list
> Dev at openlayers.org
> http://openlayers.org/mailman/listinfo/dev
> 
> 
> !DSPAM:4033,4731f16a268354901796417!




More information about the Dev mailing list