diff --git a/collect-library/resources/rendertheme.xsd b/collect-library/resources/rendertheme.xsd index fa7348c9..150d511c 100644 --- a/collect-library/resources/rendertheme.xsd +++ b/collect-library/resources/rendertheme.xsd @@ -257,7 +257,7 @@ - + diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 069d9a1a..7e721c3d 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1565,7 +1565,7 @@ - @@ -1847,12 +1847,12 @@ - + - + diff --git a/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt b/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt index 81eb8526..bbb8ddd5 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt @@ -3,7 +3,7 @@ package com.navinfo.collect.library.enums /* * 要素枚举定义 * */ -enum class DataCodeEnum(var tableName: String, var code: String) { +public enum class DataCodeEnum(var tableName: String, var code: String) { OMDB_NODE_FORM("点形态", "1007-6"), OMDB_NODE_PA("点形态PA", "1007-6"), OMDB_CHECKPOINT("检查点", "1012"), diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java index bba003e7..d7505186 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java @@ -63,24 +63,21 @@ public class OMDBDataDecoder extends TileDecoder { } @RequiresApi(api = Build.VERSION_CODES.N) - public boolean decode(int mapLevel,Tile tile, ITileDataSink sink, List listResult) { + public boolean decode(int mapLevel, Tile tile, ITileDataSink sink, List listResult) { mTileDataSink = sink; mTileScale = 1 << tile.zoomLevel; mTileX = tile.tileX / mTileScale; mTileY = tile.tileY / mTileScale; mTileScale *= Tile.SIZE; - - List list = GeometryTools.groupByDistance(DataCodeEnum.OMDB_TRAFFIC_SIGN.code,listResult,5.0); - - list.stream().iterator().forEachRemaining(new Consumer() { + listResult.stream().iterator().forEachRemaining(new Consumer() { @Override public void accept(RenderEntity renderEntity) { - if(!(mapLevelrenderEntity.getZoomMax())){ - Map properties= new HashMap<>(renderEntity.getProperties().size()); + if (!(mapLevel < renderEntity.getZoomMin() || mapLevel > renderEntity.getZoomMax())) { + Map properties = new HashMap<>(renderEntity.getProperties().size()); properties.putAll(renderEntity.getProperties()); parseGeometry(renderEntity.getTable(), renderEntity.getWkt(), properties); - }else{ + } else { // Log.e("qj","render"+renderEntity.name+"=="+renderEntity.getZoomMin()+"==="+renderEntity.getZoomMax()+"==="+renderEntity.getEnable()); } } @@ -108,14 +105,7 @@ public class OMDBDataDecoder extends TileDecoder { processCoordinateArray(multiPoint.getGeometryN(i).getCoordinates(), false); } } else if (geometry instanceof LineString) { - //将车道中心进行转化面渲染 - if(layerName!=null&&layerName.equals(DataCodeEnum.OMDB_LANE_LINK_LG.name())){ - Log.e("qj","车道中心线转化开始"); - processPolygon((Polygon) GeometryTools.createGeometry(GeometryTools.computeLine(0.000035,0.000035,geometry.toString()))); - Log.e("qj","车道中心线转化结束"); - }else{ - processLineString((LineString) geometry); - } + processLineString((LineString) geometry); } else if (geometry instanceof MultiLineString) { MultiLineString multiLineString = (MultiLineString) geometry; for (int i = 0; i < multiLineString.getNumGeometries(); i++) { @@ -201,8 +191,8 @@ public class OMDBDataDecoder extends TileDecoder { mMapElement.tags.add(new Tag(Tag.KEY_NAME, fallbackName, false)); } - public void clean(){ - if(mTileDataSink!=null){ + public void clean() { + if (mTileDataSink != null) { mTileDataSink.notifyAll(); } } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBReferenceDecoder.java b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBReferenceDecoder.java index a0b9e2e7..f6c73934 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBReferenceDecoder.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBReferenceDecoder.java @@ -63,7 +63,7 @@ public class OMDBReferenceDecoder extends TileDecoder { } @RequiresApi(api = Build.VERSION_CODES.N) - public boolean decode(int mapLevel,Tile tile, ITileDataSink sink, List listResult) { + public boolean decode(int mapLevel, Tile tile, ITileDataSink sink, List listResult) { mTileDataSink = sink; mTileScale = 1 << tile.zoomLevel; mTileX = tile.tileX / mTileScale; @@ -73,8 +73,8 @@ public class OMDBReferenceDecoder extends TileDecoder { listResult.stream().iterator().forEachRemaining(new Consumer() { @Override public void accept(ReferenceEntity renderEntity) { - if(!(mapLevelrenderEntity.getZoomMax())){ - Map properties= new HashMap<>(renderEntity.getProperties().size()); + if (!(mapLevel < renderEntity.getZoomMin() || mapLevel > renderEntity.getZoomMax())) { + Map properties = new HashMap<>(renderEntity.getProperties().size()); properties.putAll(renderEntity.getProperties()); parseGeometry(renderEntity.getTable(), renderEntity.getWkt(), properties); } @@ -103,14 +103,7 @@ public class OMDBReferenceDecoder extends TileDecoder { processCoordinateArray(multiPoint.getGeometryN(i).getCoordinates(), false); } } else if (geometry instanceof LineString) { - //将车道中心进行转化面渲染 - if(layerName!=null&&layerName.equals(DataCodeEnum.OMDB_LANE_LINK_LG.name())){ - Log.e("qj","车道中心线转化开始"); - processPolygon((Polygon)GeometryTools.createGeometry(GeometryTools.computeLine(0.000035,0.000035,geometry.toString()))); - Log.e("qj","车道中心线转化结束"); - }else{ - processLineString((LineString) geometry); - } + processLineString((LineString) geometry); } else if (geometry instanceof MultiLineString) { MultiLineString multiLineString = (MultiLineString) geometry; for (int i = 0; i < multiLineString.getNumGeometries(); i++) { diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java index 49112267..0130d367 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java @@ -129,7 +129,7 @@ public class OMDBTileDataSource implements ITileDataSource { realmQuery.endGroup(); } long time = System.currentTimeMillis(); - List listResult = realmQuery.findAll(); + List listResult = realm.copyFromRealm(realmQuery.findAll()); long newTime = System.currentTimeMillis() - time; // Log.e("jingo", "当前OMDBTileDataSource " + Thread.currentThread().hashCode() + " 当前realm " + realm.hashCode() + " 查询耗时" + newTime + " 条数" + listResult.size()); @@ -142,8 +142,13 @@ public class OMDBTileDataSource implements ITileDataSource { /*过滤数据,只有最小x(屏幕的最小x或数据的最小x会被渲染,跨Tile的其他数据不再重复渲染)*/ // .filter((RenderEntity renderEntity) -> MercatorProjection.longitudeToTileX(viewport.fromScreenPoint(0,0).getLongitude(), (byte) Constant.DATA_ZOOM) == currentTileX || renderEntity.getTileX().stream().min(Integer::compare).get() == currentTileX) .collect(Collectors.toList()); - mThreadLocalDecoders.get().decode(tile.zoomLevel, tile, mapDataSink, listResult); + + List list = GeometryTools.groupByDistance("3005", listResult, 5.0); + + mThreadLocalDecoders.get().decode(tile.zoomLevel, tile, mapDataSink, list); + mapDataSink.completed(QueryResult.SUCCESS); + } else { mapDataSink.completed(QueryResult.SUCCESS); } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java b/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java index c3ee4fe1..1a660a89 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java @@ -1592,10 +1592,11 @@ public class GeometryTools { java.util.Map calcMap = new HashMap<>(); int count = 0; + //遍历开始 for (RenderEntity renderEntity : list) { - if(!TextUtils.isEmpty(code)&&renderEntity.getCode()!=code){ + if(!TextUtils.isEmpty(code)&&!renderEntity.getCode().equals(code)){ listReslut.add(renderEntity); calcMap.put(renderEntity.getId(),renderEntity); continue; @@ -1610,6 +1611,7 @@ public class GeometryTools { if (renderEntity.getId().equals(renderEntityTemp.getId())) { listReslut.add(renderEntityTemp); count++; + Log.e("qj", "====计算间距" + count); calcMap.put(renderEntityTemp.getId(), renderEntityTemp); } else { GeoPoint geoPoint = createGeoPoint(renderEntity.getGeometry()); @@ -1631,7 +1633,7 @@ public class GeometryTools { } } - Log.e("qj", "====计算间距====" + listReslut.size()+"==判断后=="+list.size()); + Log.e("qj", listReslut.size()+"==判断后=="+list.size()+"==="+calcMap.size()); return listReslut; } diff --git a/vtm b/vtm index 9e0cc6dc..a6787549 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit 9e0cc6dcdce04d1082ed6459e8810d6329e8cfdc +Subproject commit a6787549efde8f445965faf41c17c9b58ddbd578