[OpenLayers-Users] Printing Vector Layers

Greg Allensworth gregor at greeninfo.org
Tue Apr 24 12:42:50 EDT 2012


> I'm using PHP to create the image. So, I'm guessing I'll be using the
> GD Library in order to draw on the image.

Oh, that's good. As you point out, if you can convert from map coords to 
pixels you may have what you need.


> Then the trick will be to translate from the coordinate system from
> the map to the image.  Is this a matter of using the lat/lon info of
> the Vector features compared to a lat/lon from the map that represents
> the origin? Or does OpenLayers provide coordinate properties for the
> features that can be used for this purpose?

Not directly, but it's easy to derive: Vector features have a Geometry, 
and Geometry objects have getVertices(), and Map has getPixelFromLonLat()

The "location" of getVertices() varies depending on whether you're doing 
lines or polygons or multipolygons, and is irrelevant if you're doing 
Point geometries, so you may need a switch around the geometry type.

But, here's some pseudocode outlining the basic idea:

for (var f=layer.features) {
    geom = feature[f].geometry;

    switch (geom.CLASS_NAME) {

case OpenLayers.Geometry.Point
       p = map.getPixelFromLonLat(v.x,v.y);

case OpenLayers.Geometry.LineString
    for (var v=geom.getVertices() ) {
       p = map.getPixelFromLonLat(v.x,v.y);
    }

case OpenLayers.Geometry.Polygon
    for (var ring = geom.components) {
       for (var v=ring.getVertices() ) {
          p = map.getPixelFromLonLat(v.x,v.y);
       }
    }


    } // end of geom type switch
} // end of feature loop

-- 
Greg Allensworth, Web GIS Developer
BS  A+  Network+  Security+  Linux+  Server+
GreenInfo Network - Information and Mapping in the Public Interest
564 Market Street, Suite 510  San Francisco CA 94104
PH: 415-979-0343 x302  FX: 415-979-0371    email: gregor at greeninfo.org
Web: www.GreenInfo.org     www.MapsPortal.org

Subscribe to MapLines, our e-newsletter, at www.GreenInfo.org


More information about the Users mailing list