Hi.
I use this function to locate geometry on map
OpenLayers.Map.prototype.locate = function(geometry, panOnly) {
                var bounds = geometry.getBounds();
                //this.zoomToExtent(bounds);
                //this.zoomToScale(scale);
                if ((this.getExtent().containsBounds(bounds) ||
this.getZoomForExtent(bounds) > this.zoom) || panOnly) {
                        //wrong for complex LineStrings (points to the center 
of the extent - not
center of the geometry)
                        //this.panTo(bounds.getCenterLonLat());
 
                        //incorrect with current implemetation of
Geometry.Collection GetCentroid 
                        //this.panTo(WEM.Util.point2ll(geometry.getCentroid()));
                                                                        
                        var parser = new OpenLayers.Format.WKT();
                        //this works - BUT! I need to send all geometry WKT
to the server
                        //server (MapServer mapscript c# via webservice
webmetod) getCentroid works perfectly
                        
application.server.MapParser.GetCentroid(parser.write(geometry),
function(geometryWKT, scope) {
                                
scope.panTo(WEM.Util.point2ll(parser.read(geometryWKT).geometry));
                        }, null, this);                 
                }
                else {
                        var zoom = this.zoom;
                        this.zoomToExtent(bounds);
                        this.zoomTo(zoom);
                }
};

What's this (for ex. for LineString)???
/**
     * APIMethod: getCentroid
     *
     * Returns:
     * {<OpenLayers.Geometry.Point>} The centroid of the collection
     */
    getCentroid: function() {
        return this.components.length && this.components[0].getCentroid();
//just great)))(((!
    }

Currently I can:
 - pass only featureId to the server (not all geometry text)
 - get centroid forcibly on server on querying features and then use it
 - compress geometry WKT with JavaScript lib (deflate) and decompress on
server as I do it on update feature....
But I want correct getCentroid implemetation
-- 
View this message in context: 
http://n2.nabble.com/Geometry-Collection-LineString-GetCentroid-fake-tp4584888p4584888.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to