A Node.js map tile server based on node-mapnik and elasticsearch
npm install elasticmaps --save
// This is the most basic example. It assumes elasticsearch
// is running on localhost:9200, and that there is an index
// named elasticmaps_development which has documents with minimally
// an integer `id` and geo_point `location` field
var Elasticmaps = require( "elasticmaps" ),
port = Number( process.env.PORT || 4000 );
var app = Elasticmaps.server( );
// create the tile route
app.get( "/:style/:zoom/:x/:y.:format([a-z\.]+)", Elasticmaps.route );
app.listen( port, function( ) {
console.log( "Listening on " + port );
});
// In this example a custom config object is supplied
// when creating the server. Functions can be provided
// to create custom queries and styles based on the request
var Elasticmaps = require( "elasticmaps" ),
port = Number( process.env.PORT || 4000 );
var config = {
environment: "production",
debug: true,
tileSize: 256,
elasticsearch: {
host: "localhost:9200",
searchIndex: "points_index",
geoPointField: "location"
},
prepareQuery: function( req, callback ) {
req.elastic_query = ...;
callback( null, req );
},
prepareStyle: function( req, callback ) {
req.style = ...;
callback( null, req );
}
};
var server = Elasticmaps.server( config );
server.listen( port, function( ) {
console.log( "Listening on " + port );
});