# geojson-mapnikify **Repository Path**: mirrors_mapbox/geojson-mapnikify ## Basic Information - **Project Name**: geojson-mapnikify - **Description**: Transform GeoJSON objects into Mapnik XML stylesheets with embedded GeoJSON data and simplestyle-spec-derived styles. - **Primary Language**: Unknown - **License**: ISC - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-09 - **Last Updated**: 2025-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ⚠️ This repository is no longer actively maintained by Mapbox. ## [![Build Status](https://travis-ci.com/mapbox/geojson-mapnikify.svg?branch=master)](https://travis-ci.com/mapbox/geojson-mapnikify) [![Coverage Status](https://coveralls.io/repos/mapbox/geojson-mapnikify/badge.png)](https://coveralls.io/r/mapbox/geojson-mapnikify) [![Code Climate](https://codeclimate.com/github/mapbox/geojson-mapnikify/badges/gpa.svg)](https://codeclimate.com/github/mapbox/geojson-mapnikify) # geojson-mapnikify Transform [GeoJSON](http://geojson.org/) objects into [Mapnik](http://mapnik.org/) XML stylesheets with embedded GeoJSON data and [simplestyle-spec](https://github.com/mapbox/simplestyle-spec)-derived styles. ## install As a dependency: npm install --save @mapbox/geojson-mapnikify As a binary: npm install -g @mapbox/geojson-mapnikify ## api Assumptions: * GeoJSON is valid, and in EPSG:4326 * Styles, if any, are expressed in simplestyle-spec * Mapnik **3.x** is the rendering engine ## binary If you install `-g`, you can use `geojson-mapnikify` as a binary that takes a single GeoJSON file as an argument and writes a Mapnik XML stylesheet to stdout. ``` $ geojson-mapnikify test/data/point-retina.geojson > stylesheet.xml $ geojson-mapnikify test/data/point-retina.geojson retina > stylesheet-retina.xml ``` ### `mapnikify(geojson, retina, callback)` Transform GeoJSON into Mapnik XML. * `geojson` is a GeoJSON object. * `retina` is true or false for whether the style should be optimized for 2x rendering. * `callback` called with `(err, xml)` where xml is a string ### url markers If your GeoJSON object has one or more features with a `marker-url` property, `mapnikify()` will write the images found at the url into a file in a temporary directory and use that path in the Mapnik XML. This uses the [needle library](https://www.npmjs.com/package/needle) to handle the http file fetching. By default the request will attempt to fetch binary data from the specified url. Mapnikify will use [agentkeepalive](https://www.npmjs.com/package/agentkeepalive) to speed up requesting multiple images. There is also a default timeout of 5 seconds. You can customize the defaults passed to `needle()` . Simply set a custom wrapper defined with `needle.defaults` . See [needle's documentation on defaults](https://www.npmjs.com/package/needle#overriding-defaults) for more information. For a quick example, this will set a longer timeout: ```javascript var mapnikify = require('mapnikify'); var myRequest = require('needle').defaults({ timeout: 10000, followRedirect: false }); mapnikify.setRequestClient(myRequest); mapnikify(geojson, retina, callback); mapnikify.setRequestClient(null); // return to mapnikify defaults ```