Go bindings for mapnik 2.2 and Mapnik 3.0 (http://www.mapnik.org or https://github.com/mapnik/mapnik)
These bindings rely on https://github.com/springmeyer/mapnik-c-api.
-
Install Mapnik build environmnent,
- e.g. Ubuntu:
apt-get install libmapnik-dev
- e.g. Ubuntu:
-
Download the sources, either by
git clonethe repository to $GOPATH/src/fawick/go-mapnik
OR
go get -d github.com/fawick/go-mapnik/mapnik
-
cd mapnikand run the configuration script./configure.bash. That script will setup the correct paths for including Mapnik headers and linking against the Mapnik shared library, as well as download the Mapnik C API source andgo installthe bindings.
On Windows, go-mapnik is restricted to GOARCH=386 and Mapnik 2.2 for the moment, as the precompiled 2.2 SDK is build with MSVC 32-bit and the C api must be build with a compatible compiler as a DLL before the Go bindings can be linked against it.
You also need to have the MSVC 10 compiler installed on your system.
So, make sure go version reports windows/386 as your toolchain. If you
happen to have the windows/amd64 toolchain, either download Go binaries for
windows/386 or put a MinGW 32-bit compiler in your path and rebuild the Go
binaries on your own.
-
Install Mapnik 2.2 Windows 32bit SDK from http://mapnik.org/pages/downloads.html
-
Download the sources, either by
git clonethe repository to $GOPATH/src/fawick/go-mapnik
OR
go get -d github.com/fawick/go-mapnik/mapnik
-
Run
configure.cmdin the foldermapnikto compile a C DLL that can be used by Go/CGO/GCC later (sources will be downloaded automatically). Also, the script willgo installthe bindings. -
Run
go run demo.goand openview_tileserver.htmlin a browser. (Make sure your %PATH% environment variable contains the paths of bothmapnik.dlland the newly createdmapnik_c_api.dll.)
See demo.go for some usage examples.
There is another Go package that offers access to mapnik at https://github.com/omniscale/go-mapnik by Oliver Tonnhofer of Omniscale. According to them, it is inspired by/based on this package. Instead of fetching the latest mapnik-c-api they vendor their own c-code so, their package supports some more features of libmapnik directly, such as version information access and logging. It has support for Mapnik 3.0 built within.