45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
#include "dataset_deliverer.h"
|
|
#include "basiccurl.h"
|
|
#include <sstream>
|
|
|
|
osm_dataset * dataset_deliverer::dataset=NULL;
|
|
std::string dataset_deliverer::last_bbox = "";
|
|
|
|
osm_dataset* dataset_deliverer::load_from_file(const string& file,
|
|
const string& parser)
|
|
{
|
|
// Only actually load from file if we haven't done so already
|
|
if(dataset == NULL)
|
|
{
|
|
dataset = new osm_dataset;
|
|
if(dataset->load(file.c_str(),parser)==false)
|
|
return NULL;
|
|
atexit(dataset_deliverer::release);
|
|
|
|
}
|
|
return dataset;
|
|
}
|
|
|
|
osm_dataset* dataset_deliverer::load_from_url
|
|
(const string& url,const string& bbox,const string& parser)
|
|
{
|
|
|
|
if(dataset==NULL)
|
|
{
|
|
dataset = new osm_dataset;
|
|
if(dataset->load_from_url(url.c_str(),bbox,parser)==false)
|
|
return NULL;
|
|
atexit(dataset_deliverer::release);
|
|
last_bbox = bbox;
|
|
}
|
|
else if (bbox != last_bbox)
|
|
{
|
|
cerr<<"BBOXES ARE DIFFERENT: " << last_bbox<<","<<bbox<<endl;
|
|
// Reload the dataset
|
|
dataset->clear();
|
|
if(dataset->load_from_url(url.c_str(),bbox,parser)==false)
|
|
return NULL;
|
|
last_bbox = bbox;
|
|
}
|
|
return dataset;
|
|
}
|