Skip to content
Dane Springmeyer edited this page Jun 17, 2014 · 19 revisions

new mapnik.Map(width, height, [srs])

Returns a new Map object.

  • width: An integer width for the map. Normally for tiled rendering this value is some power of 2, like 256 or 512 and matches the value for height.

  • height: An integer height for the map. Normally for tiled rendering this value is some power of 2, like 256 or 512 and matches the value for width.

  • srs (optional): A string. If provided, this sets the Map spatial reference system (aka projection). The format is the proj4 syntax. The default if you do not provide a value is +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs (which is equivalent to the shorthand of +init=epsg:4326 and comes from Mapnik core). The most common srs for tiled rendering is spherical mercator which is +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over (which is equivalent to the shorthand of +init=epsg:3857). Note: Mapnik >= 2.2.x has special handling for transforming between these common projections and detects them here.

Map.fromStringSync(xml, [options])

Map.fromString(xml, [options], [callback])

Map.render(surface, [options,] [callback])

Renders the data in the map to a given surface. A surface can either be a mapnik.VectorTile, a mapnik.Image, or a mapnik.Grid.

new mapnik.VectorTile(z, x, y, options);

Returns a new VectorTile object for a given xyz tile uri. The assumed projection of the data is Spherical Mercator. Learn more about tile addressing at Maptiler.org.

Arguments:

  • z: An integer zoom level.

  • x: An integer x coordinate.

  • y: An integer y coordinate.

Options (available in node-mapnik > =1.4.3):

  • width: An integer height for the tile. Defaults to 256. Not recommended to alter this default.

  • height: An integer height for the tile. Defaults to 256. Not recommended to alter this default.

VectorTile#getData()

Get the protobuf-encoded Buffer from the vector tile object. This should then be passed through zlib.deflate to compress further before storing or sending over http. Remember to set content-encoding:deflate if you want an http client to know to automatically uncompress. Or use zlib.inflate to uncompress yourself if working serverside.

VectorTile#query(lon,lat,options)

Query the features inside a vector tile by lon/lat. Returns an array of one or more mapnik.Feature objects or an empty array if no features intersect with the lon/lat.

Arguments:

  • lon: A longitude value in degrees (WGS 84 coordinate system)

  • lat: A latitude value in degrees (WGS 84 coordinate system)

Options:

  • tolerance: A value that should be 0 or greater to determine if the lon/lat is nearby a geometry. For example if a point is at -1,-1 and your lon/lat is -2,-2 then a tolerance of 1 would encourage a match. Tolerance is supported for lines and points but not for polygons meaning that only lon/lat that fall directly inside a polygon will match

  • layer: Pass a layer name to restrict the query results to a single layer in the vector tile. Get all possible layer names in the vector tile with VectorTile.names().

The mapnik.Feature objects returned have two extra special properties attached:

  • layer: the name of the layer the feature came from
  • distance: the distance from the query lon/lat to the features geometry that was encountered. This value is in meters based on the spherical mercator coordinate system. It represents the distance to the first geometry encountered so for multipart geometries it may not be the closed of all geometries. For polygons the value with always be 0 because only lon/lat values fully within polygons are matched.

new mapnik.Image(width, height)

Create a new image object that can be rendered to.

Image.encode(format, callback)

Encode an image into a given format, like 'png' and call callback with (err, result).

Image.encodeSync(format)

Encode an image into a given format, like 'png' and return buffer of data.

TODO (rest of api docs - tracking at https://github.com/mapnik/node-mapnik/issues/235).

You can also take a look at the node-mapnik typescript definition file which offers intellisense in IDEs.

Image.compare(image,options)

Available in >= 1.4.7.

Compare the pixels of one image to the pixels of another. Returns the number of pixels that are different. So, if the images are identical then it returns 0. And if the images share no common pixels it returns the total number of pixels in an image which is equivalent to im.width()*im.height().

Arguments:

  • image: An image instance to compare to.

Options:

  • threshold: A value that should be 0 or greater to determine if the pixels match. Defaults to 16 which means that rgba(0,0,0,0 would be considered the same as rgba(15,15,15,0).

  • alpha: Boolean that can be set to false so that alpha is ignored in the comparison. Default is true which means that alpha is considered in the pixel comparison along with the rgb channels.

Clone this wiki locally