Hi, why so complicated?
Ivan pointed you to the right way to do it. If you look at it, you see a context with a getType function. In this function, you can return the desired point radius. If you have your radius in map units, just do the following: return radiusInMapUnits / map.getResolution(); Regards, Andreas. On 2009-12-17 11:15, Mehmet Sirin wrote: > hi, there you have the same problem: point-vectors stays as they are > -without stretching/resizing. > > i just find the solution: > > function createCircle(lat, lon, radius){ > polygonLayer.removeFeatures(polygonLayer.features); > var style = { > fillColor: '#ff0000', > strokeWidth: 1, > pointRadius: radius, // in map coordinates > > }; > > > var point = new OpenLayers.Geometry.Point(lat, lon); > var polygonFeature = > OpenLayers.Geometry.Polygon.createRegularPolygon(point,radius,30,0); > var feature = new > OpenLayers.Feature.Vector(polygonFeature,null, style); > > > polygonLayer.addFeatures([feature]); > polygonLayer.setOpacity(0.5); > > > } > > 2009/12/17 Ivan Grcic <igr...@gmail.com <mailto:igr...@gmail.com>> > > Hi, cant you make something like this: > http://openlayers.org/dev/examples/styles-context.html > > On Thu, Dec 17, 2009 at 10:34 AM, Mehmet Sirin > <m.siri...@googlemail.com <mailto:m.siri...@googlemail.com>> wrote: > > hi, > > since there isn't a buffer function integrated in openlayers i > have to find > > other ways to simulate buffering a point and displaying it: > > > > function pointBuffer(lat, lon, radius,color){ > > polygonLayer.removeFeatures(polygonLayer.features); > > var style = { > > fillColor: '#ff0000', > > strokeWidth: 1, > > pointRadius: radius, // in pixels > > > > }; > > > > > > var point = new OpenLayers.Geometry.Point(lat, lon); > > var feature = new > OpenLayers.Feature.Vector(point,null, > > style); > > > > polygonLayer.addFeatures([feature]); > > polygonLayer.setOpacity(0.5); > > > > } > > > > > > --------------------------------------------------------------------------------------------------------------- > > ... > > var lonlat1=new > > OpenLayers.LonLat(parseInt(radius),0); > > var lonlat2=new > > OpenLayers.LonLat(parseInt(radius*2),0); > > var > > pixel1=map.getLayerPxFromLonLat(lonlat1); > > var > > pixel2=map.getLayerPxFromLonLat(lonlat2); > > > > > > var dist= > > Math.abs(parseInt(pixel2.x)-parseInt(pixel1.x)); > > > > > > createCircle(x,y,dist); > > > > > > -------------------------------------------------------------------------------------------------------------- > > It works fine, but now the problem: > > When zooming in or out the point feature won't resize -that > means it does > > not changes. the pixel size/radius is the same in every zoom level. > > for solving this, i thought of creating a linearring and then a > polygon, of > > which i know that will automatically resize with zooming. > > i tried: > > var linearRing = new OpenLayers.Geometry.LinearRing(point); > //just one point > > var polygonFeature = new OpenLayers.Feature.Vector( > > new OpenLayers.Geometry.Polygon([linearRing]),null, style); > > but seems not to work.. > > > > > > anybody can help? > > > > regards > > m.sirin > > _______________________________________________ > > Users mailing list > > Users@openlayers.org <mailto:Users@openlayers.org> > > http://openlayers.org/mailman/listinfo/users > > > > > > > > -- > Ivan Grcic > > > > _______________________________________________ > Users mailing list > Users@openlayers.org > http://openlayers.org/mailman/listinfo/users > -- Andreas Hocevar OpenGeo - http://opengeo.org/ Expert service straight from the developers. _______________________________________________ Users mailing list Users@openlayers.org http://openlayers.org/mailman/listinfo/users