Skip to content

Commit

Permalink
merge with master
Browse files Browse the repository at this point in the history
  • Loading branch information
Dane Springmeyer committed Jul 19, 2013
2 parents c5e4e1a + ad5fea8 commit 011b267
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 10 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
@@ -1,5 +1,13 @@
# Changlog

## 1.1.1

- Fixed extent of vector::tile_datasource to be sensitive to map buffer (TODO - long term
plan is to make extent optional instead of adding support for layer specific buffered extent) - this is needed for avoiding too restrictive filtering of features at render time.
- Fixed exception handling when creating geojson from vector tile
- Build fixes to support python 3.x
- Now accepting `scale_denominator`, `scale`, and `format` in options passed to `map.RenderSync`

## 1.1.0

- Added support for node v0.11.x
Expand Down
4 changes: 2 additions & 2 deletions package.json
Expand Up @@ -4,7 +4,7 @@
"url" : "http://github.com/mapnik/node-mapnik",
"homepage" : "http://mapnik.org",
"author" : "Dane Springmeyer <dane@dbsgeo.com> (mapnik.org)",
"version" : "1.1.0",
"version" : "1.1.1",
"main" : "./lib/mapnik.js",
"bugs" : {
"email" : "dane@dbsgeo.com",
Expand All @@ -30,7 +30,7 @@
}
],
"dependencies" : {
"mapnik-vector-tile": "0.1.x"
"mapnik-vector-tile": "0.2.x"
},
"devDependencies": {
"mocha": "1.12.x",
Expand Down
55 changes: 51 additions & 4 deletions src/mapnik_map.cpp
Expand Up @@ -2003,6 +2003,55 @@ Handle<Value> Map::renderSync(const Arguments& args)

std::string format = TOSTR(args[0]);
palette_ptr palette;
double scale_factor = 1.0;
double scale_denominator = 0.0;

if (args.Length() >= 2){
if (!args[1]->IsObject())
return ThrowException(Exception::TypeError(
String::New("second argument is optional, but if provided must be an object, eg. {format: 'pdf'}")));

Local<Object> options = args[1]->ToObject();
if (options->Has(String::New("format")))
{
Local<Value> format_opt = options->Get(String::New("format"));
if (!format_opt->IsString())
return ThrowException(Exception::TypeError(
String::New("'format' must be a String")));

format = TOSTR(format_opt);
}

if (options->Has(String::New("palette")))
{
Local<Value> format_opt = options->Get(String::New("palette"));
if (!format_opt->IsObject())
return ThrowException(Exception::TypeError(
String::New("'palette' must be an object")));

Local<Object> obj = format_opt->ToObject();
if (obj->IsNull() || obj->IsUndefined() || !Palette::constructor->HasInstance(obj))
return ThrowException(Exception::TypeError(String::New("mapnik.Palette expected as second arg")));

palette = ObjectWrap::Unwrap<Palette>(obj)->palette();
}
if (options->Has(String::New("scale"))) {
Local<Value> bind_opt = options->Get(String::New("scale"));
if (!bind_opt->IsNumber())
return ThrowException(Exception::TypeError(
String::New("optional arg 'scale' must be a number")));

scale_factor = bind_opt->NumberValue();
}
if (options->Has(String::New("scale_denominator"))) {
Local<Value> bind_opt = options->Get(String::New("scale_denominator"));
if (!bind_opt->IsNumber())
return ThrowException(Exception::TypeError(
String::New("optional arg 'scale_denominator' must be a number")));

scale_denominator = bind_opt->NumberValue();
}
}

// options hash
if (args.Length() >= 2) {
Expand Down Expand Up @@ -2032,10 +2081,8 @@ Handle<Value> Map::renderSync(const Arguments& args)
try
{
mapnik::image_32 im(m->map_->width(),m->map_->height());
mapnik::agg_renderer<mapnik::image_32> ren(*m->get(),im);
// TODO - scale denom
ren.apply(m->get()->layers(),m->get()->styles());

mapnik::agg_renderer<mapnik::image_32> ren(*m->get(),im,scale_factor);
ren.apply(m->get()->layers(),m->get()->styles(),scale_denominator);
if (palette.get())
{
s = save_to_string(im, format, *palette);
Expand Down
16 changes: 12 additions & 4 deletions src/mapnik_vector_tile.cpp
Expand Up @@ -959,7 +959,7 @@ Handle<Value> VectorTile::render(const Arguments& args)
}

template <typename Renderer> void process_layers(Renderer & ren,
mapnik::request const& req,
mapnik::request const& m_req,
mapnik::projection const& map_proj,
std::vector<mapnik::layer> const& layers,
std::map<std::string,mapnik::feature_type_style> const& styles,
Expand Down Expand Up @@ -999,21 +999,29 @@ template <typename Renderer> void process_layers(Renderer & ren,
closure->d->z_,
closure->d->width()
);
ds->set_envelope(map_extent);
ds->set_envelope(m_req.get_buffered_extent());
lyr_copy.set_datasource(ds);
std::set<std::string> names;
ren.apply_to_layer(lyr_copy,
styles,
ren,
map_proj,
req.scale(),
m_req.scale(),
scale_denom,
<<<<<<< HEAD
req.width(),
req.height(),
req.extent(),
req.buffer_size(),
names,
maximum_extent);
=======
m_req.width(),
m_req.height(),
m_req.extent(),
m_req.buffer_size(),
names);
>>>>>>> ad5fea85d6faa2a56d178803596af05a71ad2682
}
}
}
Expand Down Expand Up @@ -1097,7 +1105,7 @@ void VectorTile::EIO_RenderTile(uv_work_t* req)
closure->d->z_,
closure->d->width_
);
ds->set_envelope(map_extent);
ds->set_envelope(m_req.get_buffered_extent());
lyr_copy.set_datasource(ds);
ren.apply_to_layer(lyr_copy,
map_in.styles(),
Expand Down

0 comments on commit 011b267

Please sign in to comment.