[OpenLayers-Users] OpenLayers.Format.WKT.write()
Alexandre Dube
adube at mapgears.com
Mon Aug 24 08:56:33 EDT 2009
You should create a ticket and attach a sample feature that holds a
geometry collection as an example.
Best regards,
Alexandre
(1) http://faq.openlayers.org/map/how-do-i-edit-the-wiki-or-a-ticket/
(2) http://trac.openlayers.org/wiki/FilingTickets
taviroquai wrote:
> Hi all,
>
> WKT.write method accepts a single feature OR an array of features which then
> returns as a GEOMETRYCOLLECTION.
>
> There is a case that a single feature may hold a geometry collection class.
>
> Here is my changes for the write method - I know that this is not the best
> way to resolve this case but this is the shortest code insertion - all
> feedback is welcome:
>
> write:function(features){
> var collection,geometry,type,data,isCollection,isSubCollection;
> if(features.constructor==Array){
> collection=features;
> isCollection=true;
> }
> else{
> type=features.geometry.CLASS_NAME.split('.')[2].toLowerCase();
> if (type == 'collection') {
> collection = features.geometry.components;
> isCollection=true;
> isSubCollection=true;
> }
> else {
> collection=[features];
> isCollection=false;
> }
> }
> var pieces=[];
> if(isCollection){
> pieces.push('GEOMETRYCOLLECTION(');
> }
> for(var i=0,len=collection.length;i<len;++i){
> if(isCollection&&i>0){
> pieces.push(',');
> }
> if (isSubCollection) geometry=collection[i]; else
> geometry=collection[i].geometry;
> type=geometry.CLASS_NAME.split('.')[2].toLowerCase();
> if(!this.extract[type]){
> return null;
> }
> if(this.internalProjection&&this.externalProjection){
> geometry=geometry.clone();
> geometry.transform(this.internalProjection,this.externalProjection);
> }
> data=this.extract[type].apply(this,[geometry]);
> pieces.push(type.toUpperCase()+'('+data+')');
> }
> if(isCollection){
> pieces.push(')');
> }
> return pieces.join('');
> },
>
--
Alexandre Dubé
Mapgears
www.mapgears.com
More information about the Users
mailing list