Skip to content

Commit 613ad07

Browse files
committed
feat: write attribution in pmtiles metadata
1 parent 0d01bc5 commit 613ad07

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

include/shared_data.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class SharedData {
111111
void writeMBTilesProjectData();
112112
void writeMBTilesMetadata(rapidjson::Document const &jsonConfig);
113113
void writeFileMetadata(rapidjson::Document const &jsonConfig);
114-
std::string pmTilesMetadata();
114+
std::string pmTilesMetadata(rapidjson::Document const &jsonConfig);
115115
void writePMTilesBounds();
116116
};
117117

src/shared_data.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,16 @@ void SharedData::writeFileMetadata(rapidjson::Document const &jsonConfig) {
104104
}
105105

106106
// Create JSON string with .pmtiles-format metadata
107-
std::string SharedData::pmTilesMetadata() {
107+
std::string SharedData::pmTilesMetadata(rapidjson::Document const &jsonConfig) {
108108
rapidjson::Document document;
109109
document.SetObject();
110110
document.AddMember("name", rapidjson::Value().SetString(config.projectName.c_str(), document.GetAllocator()), document.GetAllocator());
111111
document.AddMember("description", rapidjson::Value().SetString(config.projectDesc.c_str(), document.GetAllocator()), document.GetAllocator());
112112
document.AddMember("vector_layers", layers.serialiseToJSONValue(document.GetAllocator()), document.GetAllocator());
113-
// we don't currently write "attribution" or "type" fields, see .pmtiles spec
113+
if (jsonConfig["settings"].HasMember("metadata") && jsonConfig["settings"]["metadata"].HasMember("attribution")) {
114+
document.AddMember("attribution", rapidjson::Value().SetString(jsonConfig["settings"]["metadata"]["attribution"].GetString(), document.GetAllocator()), document.GetAllocator());
115+
}
116+
// we don't currently write "type" field, see .pmtiles spec
114117
rapidjson::StringBuffer buffer;
115118
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
116119
document.Accept(writer);

src/tilemaker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ int main(const int argc, const char* argv[]) {
591591
sharedData.mbtiles.closeForWriting();
592592
} else if (options.outputMode == OptionsParser::OutputMode::PMTiles) {
593593
sharedData.writePMTilesBounds();
594-
std::string metadata = sharedData.pmTilesMetadata();
594+
std::string metadata = sharedData.pmTilesMetadata(jsonConfig);
595595
sharedData.pmtiles.close(metadata);
596596
} else {
597597
sharedData.writeFileMetadata(jsonConfig);

0 commit comments

Comments
 (0)