Adjust coastline for some areas
This commit is contained in:
parent
bf7c14a8e9
commit
5c986aa0f5
3 changed files with 12 additions and 10 deletions
|
@ -316,6 +316,7 @@ public class MapRenderRepositories {
|
||||||
searchFilter = null;
|
searchFilter = null;
|
||||||
}
|
}
|
||||||
boolean ocean = false;
|
boolean ocean = false;
|
||||||
|
boolean land = false;
|
||||||
MapIndex mi = null;
|
MapIndex mi = null;
|
||||||
searchRequest = BinaryMapIndexReader.buildSearchRequest(leftX, rightX, topY, bottomY, zoom, searchFilter);
|
searchRequest = BinaryMapIndexReader.buildSearchRequest(leftX, rightX, topY, bottomY, zoom, searchFilter);
|
||||||
for (BinaryMapIndexReader c : files.values()) {
|
for (BinaryMapIndexReader c : files.values()) {
|
||||||
|
@ -353,8 +354,10 @@ public class MapRenderRepositories {
|
||||||
if (searchRequest.isOcean()) {
|
if (searchRequest.isOcean()) {
|
||||||
mi = c.getMapIndexes().get(0);
|
mi = c.getMapIndexes().get(0);
|
||||||
ocean = true;
|
ocean = true;
|
||||||
} else if (searchRequest.isLand()) {
|
}
|
||||||
|
if (searchRequest.isLand()) {
|
||||||
mi = c.getMapIndexes().get(0);
|
mi = c.getMapIndexes().get(0);
|
||||||
|
land = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -379,7 +382,7 @@ public class MapRenderRepositories {
|
||||||
}
|
}
|
||||||
if(addBasemapCoastlines && mi != null){
|
if(addBasemapCoastlines && mi != null){
|
||||||
BinaryMapDataObject o = new BinaryMapDataObject(new int[] { leftX, topY, rightX, topY, rightX, bottomY, leftX, bottomY, leftX,
|
BinaryMapDataObject o = new BinaryMapDataObject(new int[] { leftX, topY, rightX, topY, rightX, bottomY, leftX, bottomY, leftX,
|
||||||
topY }, new int[] { ocean ? mi.coastlineEncodingType : (mi.landEncodingType) }, null, -1);
|
topY }, new int[] { ocean && !land ? mi.coastlineEncodingType : (mi.landEncodingType) }, null, -1);
|
||||||
o.setMapIndex(mi);
|
o.setMapIndex(mi);
|
||||||
tempResult.add(o);
|
tempResult.add(o);
|
||||||
}
|
}
|
||||||
|
|
|
@ -744,7 +744,7 @@ bool searchMapTreeBounds(CodedInputStream* input, MapTreeBounds* current, MapTre
|
||||||
if(current->ocean){
|
if(current->ocean){
|
||||||
req->ocean = true;
|
req->ocean = true;
|
||||||
} else {
|
} else {
|
||||||
req->land = true;
|
req->mixed = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -882,7 +882,6 @@ ResultPublisher* searchObjectsForRendering(SearchQuery* q, bool skipDuplicates,
|
||||||
map<std::string, BinaryMapFile*>::iterator i = openFiles.begin();
|
map<std::string, BinaryMapFile*>::iterator i = openFiles.begin();
|
||||||
UNORDERED(set)<long long> ids;
|
UNORDERED(set)<long long> ids;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
bool ocean = false;
|
|
||||||
std::vector<MapDataObject*> basemapResult;
|
std::vector<MapDataObject*> basemapResult;
|
||||||
std::vector<MapDataObject*> tempResult;
|
std::vector<MapDataObject*> tempResult;
|
||||||
std::vector<MapDataObject*> coastLines;
|
std::vector<MapDataObject*> coastLines;
|
||||||
|
@ -941,9 +940,7 @@ ResultPublisher* searchObjectsForRendering(SearchQuery* q, bool skipDuplicates,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (q->ocean) {
|
|
||||||
ocean = true;
|
|
||||||
}
|
|
||||||
if (!q->publisher->isCancelled()) {
|
if (!q->publisher->isCancelled()) {
|
||||||
std::vector<MapDataObject*>::iterator r = q->publisher->result.begin();
|
std::vector<MapDataObject*>::iterator r = q->publisher->result.begin();
|
||||||
tempResult.reserve((size_t)(q->publisher->result.size() + tempResult.size()));
|
tempResult.reserve((size_t)(q->publisher->result.size() + tempResult.size()));
|
||||||
|
@ -982,6 +979,8 @@ ResultPublisher* searchObjectsForRendering(SearchQuery* q, bool skipDuplicates,
|
||||||
deleteObjects(basemapCoastLines);
|
deleteObjects(basemapCoastLines);
|
||||||
deleteObjects(basemapResult);
|
deleteObjects(basemapResult);
|
||||||
} else {
|
} else {
|
||||||
|
bool ocean = q->ocean;
|
||||||
|
bool land = q->mixed;
|
||||||
bool addBasemapCoastlines = true;
|
bool addBasemapCoastlines = true;
|
||||||
bool emptyData = q->zoom > BASEMAP_ZOOM && tempResult.empty() && coastLines.empty();
|
bool emptyData = q->zoom > BASEMAP_ZOOM && tempResult.empty() && coastLines.empty();
|
||||||
bool basemapMissing = q->zoom <= BASEMAP_ZOOM && basemapCoastLines.empty() && !basemapExists;
|
bool basemapMissing = q->zoom <= BASEMAP_ZOOM && basemapCoastLines.empty() && !basemapExists;
|
||||||
|
@ -1006,7 +1005,7 @@ ResultPublisher* searchObjectsForRendering(SearchQuery* q, bool skipDuplicates,
|
||||||
o->points.push_back(int_pair(q->right, q->bottom));
|
o->points.push_back(int_pair(q->right, q->bottom));
|
||||||
o->points.push_back(int_pair(q->left, q->bottom));
|
o->points.push_back(int_pair(q->left, q->bottom));
|
||||||
o->points.push_back(int_pair(q->left, q->top));
|
o->points.push_back(int_pair(q->left, q->top));
|
||||||
if (ocean) {
|
if (ocean && !land) {
|
||||||
o->types.push_back(tag_value("natural", "coastline"));
|
o->types.push_back(tag_value("natural", "coastline"));
|
||||||
} else {
|
} else {
|
||||||
o->types.push_back(tag_value("natural", "land"));
|
o->types.push_back(tag_value("natural", "land"));
|
||||||
|
|
|
@ -221,7 +221,7 @@ struct SearchQuery {
|
||||||
|
|
||||||
coordinates cacheCoordinates;
|
coordinates cacheCoordinates;
|
||||||
bool ocean;
|
bool ocean;
|
||||||
bool land;
|
bool mixed;
|
||||||
|
|
||||||
int numberOfVisitedObjects;
|
int numberOfVisitedObjects;
|
||||||
int numberOfAcceptedObjects;
|
int numberOfAcceptedObjects;
|
||||||
|
@ -232,7 +232,7 @@ struct SearchQuery {
|
||||||
req(req), left(l), right(r), top(t), bottom(b),publisher(publisher) {
|
req(req), left(l), right(r), top(t), bottom(b),publisher(publisher) {
|
||||||
numberOfAcceptedObjects = numberOfVisitedObjects = 0;
|
numberOfAcceptedObjects = numberOfVisitedObjects = 0;
|
||||||
numberOfAcceptedSubtrees = numberOfReadSubtrees = 0;
|
numberOfAcceptedSubtrees = numberOfReadSubtrees = 0;
|
||||||
ocean = land = false;
|
ocean = mixed = false;
|
||||||
}
|
}
|
||||||
SearchQuery(int l, int r, int t, int b) :
|
SearchQuery(int l, int r, int t, int b) :
|
||||||
req(req), left(l), right(r), top(t), bottom(b) {
|
req(req), left(l), right(r), top(t), bottom(b) {
|
||||||
|
|
Loading…
Reference in a new issue