feat: 动态marker配置支持多图标设置

This commit is contained in:
xiaoyan 2023-11-17 09:24:53 +08:00
parent 35301e4c48
commit 89b862a0cd
6 changed files with 47 additions and 36 deletions

View File

@ -283,7 +283,7 @@
"table": "OMDB_TRAFFIC_SIGN",
"code": 3005,
"name": "交通标牌",
"zoomMin": 18,
"zoomMin": 17,
"zoomMax": 20,
"is3D": true,
"catch": true,
@ -592,6 +592,12 @@
"zoomMin": 15,
"zoomMax": 17,
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "translateBack()"
},
{
"k": "geometry",
"v": "~",

View File

@ -631,30 +631,40 @@ class ImportPreProcess {
val listResult = mutableListOf<ReferenceEntity>()
for (i in 0 until laneInfoDirectArray.length()) {
// 根据后续的数据生成辅助表数据
val referenceEntity = ReferenceEntity()
// referenceEntity.renderEntityId = renderEntity.id
referenceEntity.name = "${renderEntity.name}参考方向"
referenceEntity.table = renderEntity.table
referenceEntity.enable = renderEntity.enable
referenceEntity.code = renderEntity.code
referenceEntity.taskId = renderEntity.taskId
referenceEntity.zoomMin = renderEntity.zoomMin
referenceEntity.zoomMax = renderEntity.zoomMax
// 与原数据使用相同的geometry
referenceEntity.geometry = renderEntity.geometry
referenceEntity.properties["qi_table"] = renderEntity.table
referenceEntity.properties["currentDirect"] =
val currentDirect =
laneInfoDirectArray[i].toString().split(",").distinct().joinToString("_")
referenceEntity.properties["currentType"] =
val currentType =
laneInfoTypeArray[i].toString()
val type =
if (referenceEntity.properties["currentType"] == "0") "normal" else if (referenceEntity.properties["currentType"] == "1") "extend" else "bus"
referenceEntity.properties["symbol"] =
"assets:omdb/4601/${type}/1301_${referenceEntity.properties["currentDirect"]}.svg"
Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString())
referenceEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties))
renderEntity.referenceEntitys?.add(referenceEntity)
if (currentType == "0") "normal" else if (currentType == "1") "extend" else "bus"
val symbol =
"assets:omdb/4601/${type}/1301_${currentDirect}.svg"
renderEntity.properties["src"] = if(renderEntity.properties["src"].isNullOrEmpty()) symbol else "${renderEntity.properties["src"]}|${symbol}"
// // 根据后续的数据生成辅助表数据
// val referenceEntity = ReferenceEntity()
//// referenceEntity.renderEntityId = renderEntity.id
// referenceEntity.name = "${renderEntity.name}参考方向"
// referenceEntity.table = renderEntity.table
// referenceEntity.enable = renderEntity.enable
// referenceEntity.code = renderEntity.code
// referenceEntity.taskId = renderEntity.taskId
// referenceEntity.zoomMin = renderEntity.zoomMin
// referenceEntity.zoomMax = renderEntity.zoomMax
// // 与原数据使用相同的geometry
// referenceEntity.geometry = renderEntity.geometry
// referenceEntity.properties["qi_table"] = renderEntity.table
// referenceEntity.properties["currentDirect"] =
// laneInfoDirectArray[i].toString().split(",").distinct().joinToString("_")
// referenceEntity.properties["currentType"] =
// laneInfoTypeArray[i].toString()
// val type =
// if (referenceEntity.properties["currentType"] == "0") "normal" else if (referenceEntity.properties["currentType"] == "1") "extend" else "bus"
// referenceEntity.properties["symbol"] =
// "assets:omdb/4601/${type}/1301_${referenceEntity.properties["currentDirect"]}.svg"
// Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString())
// referenceEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties))
// renderEntity.referenceEntitys?.add(referenceEntity)
//listResult.add(referenceEntity)
}
//insertData(listResult)
@ -1079,22 +1089,22 @@ class ImportPreProcess {
// 解析accessCharacteristic判断是否存在指定属性
val accessCharacteristic = renderEntity.properties["accessCharacteristic"].toString().toInt()
var str = ""
if (accessCharacteristic.and(4)>0) {
if (accessCharacteristic.and(0b100)>0) {
str += ""
}
if (accessCharacteristic.and(8)>0) {
if (accessCharacteristic.and(0b1000)>0) {
if (str.isNotEmpty()) {
str += "|"
}
str += ""
str += "HOV"
}
if (accessCharacteristic.and(64)>0) {
if (accessCharacteristic.and(0b1000000)>0) {
if (str.isNotEmpty()) {
str += "|"
}
str += ""
}
if (accessCharacteristic.and(128)>0) {
if (accessCharacteristic.and(0b10000000)>0) {
if (str.isNotEmpty()) {
str += "|"
}

View File

@ -257,7 +257,7 @@
<xs:attribute name="repeat-start" default="30" type="xs:float" use="optional"/>
<xs:attribute name="rotate" default="true" type="xs:boolean" use="optional"/>
<!-- 设置是否支持图标压盖如果为true则同点位图标不避让允许压盖否则支持自动避让 -->
<xs:attribute name="gland" default="true" type="xs:boolean" use="optional"/>
<xs:attribute name="gland" default="false" type="xs:boolean" use="optional"/>
<!-- 原图标旋转角度默认情况下应该使用以X轴为正方向的图标此处可设置原图标的旋转角度在渲染时自动对图标进行旋转仅支持线要素 -->
<xs:attribute name="degree" default="0" type="xs:float" use="optional"/>
<!-- 图标在y轴方向上的偏移量 -->

View File

@ -1556,7 +1556,7 @@
<!-- 车信 -->
<m v="OMDB_LANEINFO" >
<symbol repeat="false" repeat-start="0" repeat-gap="2000"
src="@symbol" symbol-height="24" degree="90"></symbol>
src="@src" symbol-height="24" degree="90"></symbol>
</m>
<!-- 杆状物 -->
<m v="OMDB_POLE">

View File

@ -1,7 +1,6 @@
package com.navinfo.collect.library.map.source;
import android.os.Build;
import android.util.Log;
import androidx.annotation.RequiresApi;
@ -11,21 +10,17 @@ import com.navinfo.collect.library.utils.GeometryTools;
import com.navinfo.collect.library.utils.MapParamUtils;
import org.locationtech.jts.geom.Polygon;
import org.oscim.core.MapPosition;
import org.oscim.layers.tile.MapTile;
import org.oscim.map.Map;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSink;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.QueryResult;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import io.realm.RealmQuery;
public class OMDBTileDataSource implements ITileDataSource {
@ -129,7 +124,7 @@ public class OMDBTileDataSource implements ITileDataSource {
realmQuery.endGroup();
}
long time = System.currentTimeMillis();
List<RenderEntity> listResult = realmQuery.findAll();
List<RenderEntity> listResult = realm.copyFromRealm(realmQuery.findAll());
long newTime = System.currentTimeMillis() - time;
// Log.e("jingo", "当前OMDBTileDataSource " + Thread.currentThread().hashCode() + " 当前realm " + realm.hashCode() + " 查询耗时" + newTime + " 条数" + listResult.size());

2
vtm

@ -1 +1 @@
Subproject commit ee88167c7de989b3f7c71ae00d9580ff91fd3bf6
Subproject commit 3eb80a33c6b54609a47083c38fe35fd4916edba9