统一地图图标渲染尺寸

优化提前显示面板,详细信息面板
增加多媒体照片
This commit is contained in:
squallzhjch 2023-06-29 17:22:40 +08:00
parent 2fe71fe94f
commit c00592f6d5
15 changed files with 273 additions and 107 deletions

View File

@ -21,5 +21,7 @@ data class SignBean(
//底部右侧文字 //底部右侧文字
val bottomRightText: String = "", val bottomRightText: String = "",
//捕捉数据 //捕捉数据
val renderEntity: RenderEntity val renderEntity: RenderEntity,
//道路信息排序用的字段
val index: Int = 0
) : Parcelable ) : Parcelable

View File

@ -259,11 +259,13 @@ class MainViewModel @Inject constructor(
name = SignUtil.getSignNameText(element), name = SignUtil.getSignNameText(element),
bottomRightText = SignUtil.getSignBottomRightText(element), bottomRightText = SignUtil.getSignBottomRightText(element),
renderEntity = element, renderEntity = element,
isMoreInfo = SignUtil.isMoreInfo(element) isMoreInfo = SignUtil.isMoreInfo(element),
index = SignUtil.getRoadInfoIndex(element)
) )
Log.e("jingo", "捕捉到的数据code ${element.code}") Log.e("jingo", "捕捉到的数据code ${element.code}")
when (element.code) { when (element.code) {
2002, 2008, 2010, 2041 -> topSignList.add( //车道数,种别,功能等级,线限速,道路方向
2041, 2008, 2002, 2019, 2010 -> topSignList.add(
signBean signBean
) )
4002, 4003, 4004, 4010, 4022, 4601 -> signList.add( 4002, 4003, 4004, 4010, 4022, 4601 -> signList.add(
@ -293,7 +295,8 @@ class MainViewModel @Inject constructor(
} }
} }
liveDataTopSignList.postValue(topSignList.distinctBy { it.distance }) liveDataTopSignList.postValue(topSignList.distinctBy { it.name }.sortedBy { it.index })
liveDataSignList.postValue(signList.sortedBy { it.distance }) liveDataSignList.postValue(signList.sortedBy { it.distance })
val speechText = SignUtil.getRoadSpeechText(topSignList) val speechText = SignUtil.getRoadSpeechText(topSignList)
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {

View File

@ -83,6 +83,9 @@ class SignAdapter(private var listener: OnSignAdapterClickListener?) :
bd.signSecondIcon.text = minSpeed bd.signSecondIcon.text = minSpeed
} }
} }
bd.signMainBg.setOnClickListener {
listener?.onItemClick(item)
}
} else if (holder.viewBinding is AdapterSignLaneinfoBinding) { } else if (holder.viewBinding is AdapterSignLaneinfoBinding) {
val bd = holder.viewBinding val bd = holder.viewBinding
bd.signMoreIconsLayout.removeAllViews() bd.signMoreIconsLayout.removeAllViews()
@ -123,10 +126,11 @@ class SignAdapter(private var listener: OnSignAdapterClickListener?) :
lineViewE.layoutParams = ViewGroup.LayoutParams(24, 80) lineViewE.layoutParams = ViewGroup.LayoutParams(24, 80)
lineViewE.background = context.getDrawable(R.drawable.shape_vertical_dashed_line) lineViewE.background = context.getDrawable(R.drawable.shape_vertical_dashed_line)
bd.signMoreIconsLayout.addView(lineViewE, lineViewE.layoutParams) bd.signMoreIconsLayout.addView(lineViewE, lineViewE.layoutParams)
bd.root.setOnClickListener {
listener?.onItemClick(item)
}
} }
holder.viewBinding.root.setOnClickListener {
listener?.onItemClick(item)
}
holder.tag = item.name + position holder.tag = item.name + position
} }

View File

@ -1,6 +1,5 @@
package com.navinfo.omqs.ui.fragment.evaluationresult package com.navinfo.omqs.ui.fragment.evaluationresult
import android.app.Dialog
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
@ -8,20 +7,22 @@ import android.view.LayoutInflater
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.annotation.RequiresApi
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.navigation.NavOptions import androidx.navigation.NavOptions
import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.navinfo.omqs.Constant import com.navinfo.omqs.Constant
import com.navinfo.omqs.R import com.navinfo.omqs.R
import com.navinfo.omqs.bean.SignBean import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.databinding.FragmentEvaluationResultBinding import com.navinfo.omqs.databinding.FragmentEvaluationResultBinding
import com.navinfo.omqs.ui.dialog.FirstDialog
import com.navinfo.omqs.ui.fragment.BaseFragment import com.navinfo.omqs.ui.fragment.BaseFragment
import com.navinfo.omqs.ui.other.shareViewModels import com.navinfo.omqs.ui.other.shareViewModels
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import androidx.navigation.findNavController import org.videolan.vlc.Util
import androidx.navigation.fragment.findNavController
import com.navinfo.omqs.ui.dialog.FirstDialog
@AndroidEntryPoint @AndroidEntryPoint
class EvaluationResultFragment : BaseFragment(), View.OnClickListener { class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
@ -32,6 +33,10 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
*/ */
private val viewModel by shareViewModels<EvaluationResultViewModel>("QsRecode") private val viewModel by shareViewModels<EvaluationResultViewModel>("QsRecode")
private val pictureAdapter by lazy {
PictureAdapter()
}
// private val args:EmptyFragmentArgs by navArgs() // private val args:EmptyFragmentArgs by navArgs()
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
@ -57,6 +62,8 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
adapter.refreshData(it) adapter.refreshData(it)
} }
binding.evaluationPictureViewpager
return binding.root return binding.root
} }
@ -92,6 +99,21 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
viewModel.deleteData(requireContext()) viewModel.deleteData(requireContext())
} }
/**
* 照片view
*/
binding.evaluationPictureViewpager.adapter = pictureAdapter
val list = mutableListOf("1", "2", "3")
pictureAdapter.refreshData(list)
binding.evaluationPictureLeft.setOnClickListener(this)
binding.evaluationPictureRight.setOnClickListener(this)
val recyclerView = binding.evaluationPictureViewpager.getChildAt(0) as RecyclerView
recyclerView.setPadding(0, 0, Util.convertDpToPx(requireContext(), 50), 0)
recyclerView.clipToPadding = false
binding.evaluationVoice.setOnTouchListener { _, event -> binding.evaluationVoice.setOnTouchListener { _, event ->
@ -112,6 +134,7 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
true true
} }
/** /**
* 读取元数据 * 读取元数据
*/ */
@ -250,6 +273,24 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
override fun onClick(v: View?) { override fun onClick(v: View?) {
v?.let { v?.let {
when (v.id) { when (v.id) {
//照片左侧按钮
R.id.evaluation_picture_left -> {
val currentItem = binding.evaluationPictureViewpager.currentItem
if (currentItem > 0) {
binding.evaluationPictureViewpager.currentItem = currentItem - 1
} else {
}
}
//照片右侧按钮
R.id.evaluation_picture_right -> {
val currentItem = binding.evaluationPictureViewpager.currentItem
if (currentItem < pictureAdapter.data.size - 1) {
binding.evaluationPictureViewpager.currentItem = currentItem + 1
} else {
}
}
//上三项,打开面板 //上三项,打开面板
R.id.evaluation_class_type, R.id.evaluation_problem_type, R.id.evaluation_phenomenon -> { R.id.evaluation_class_type, R.id.evaluation_problem_type, R.id.evaluation_phenomenon -> {
activity?.run { activity?.run {

View File

@ -0,0 +1,21 @@
package com.navinfo.omqs.ui.fragment.evaluationresult
import android.view.LayoutInflater
import android.view.ViewGroup
import com.navinfo.omqs.databinding.AdapterPictureBinding
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
class PictureAdapter : BaseRecyclerViewAdapter<String>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val viewBinding =
AdapterPictureBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return BaseViewHolder(viewBinding)
}
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
val bd = holder.viewBinding as AdapterPictureBinding
bd.button.text = data[position]
}
}

View File

@ -24,6 +24,8 @@ class SignUtil {
2008 -> getKindText(data) 2008 -> getKindText(data)
//道路方向 //道路方向
2010 -> getRoadDirectionText(data) 2010 -> getRoadDirectionText(data)
//常规线限速
2019 -> getLineSpeedLimitText(data)
//车道数 //车道数
2041 -> getLaneNumText(data) 2041 -> getLaneNumText(data)
//常规点限速,条件点限速 //常规点限速,条件点限速
@ -32,6 +34,13 @@ class SignUtil {
} }
} }
/**
* 常规线限速值
*/
private fun getLineSpeedLimitText(data: RenderEntity): String {
return "${data.properties["maxSpeed"]}"
}
/** /**
*获取道路功能等级文字 *获取道路功能等级文字
*/ */
@ -71,6 +80,8 @@ class SignUtil {
2008 -> "种别" 2008 -> "种别"
//道路方向 //道路方向
2010 -> "方向" 2010 -> "方向"
//常规线限速
2019 -> "线限速"
//车道数 //车道数
2041 -> "车道数" 2041 -> "车道数"
//常规点限速 //常规点限速
@ -96,8 +107,11 @@ class SignUtil {
*/ */
fun getSignBottomRightText(data: RenderEntity): String { fun getSignBottomRightText(data: RenderEntity): String {
return when (data.code) { return when (data.code) {
//条件点限速 //条件点限速
4003 -> getConditionLimitText(data) 4003 -> getConditionLimitText(data)
//电子眼
4010 -> data.properties["name"].toString()
else -> "" else -> ""
} }
} }
@ -438,7 +452,6 @@ class SignUtil {
4010 -> true 4010 -> true
else -> false else -> false
} }
Log.e("jingo", "更多信息:${element.code} $isMore")
return isMore return isMore
} }
@ -584,7 +597,6 @@ class SignUtil {
val itemObject = itemArray[i] val itemObject = itemArray[i]
val type = typeArray[i] val type = typeArray[i]
var laneInfo = "laneinfo_${itemObject.toString().replace(",", "_")}" var laneInfo = "laneinfo_${itemObject.toString().replace(",", "_")}"
Log.e("jingo", "车信图标 $laneInfo")
list.add( list.add(
LaneInfoItem( LaneInfoItem(
id = getResId( id = getResId(
@ -614,5 +626,19 @@ class SignUtil {
R.drawable.laneinfo_0 R.drawable.laneinfo_0
} }
} }
/**
* 道路信息排序用的
*/
fun getRoadInfoIndex(element: RenderEntity): Int {
return when (element.code) {
2041 -> 0
2008 -> 1
2002 -> 2
2019 -> 3
2010 -> 4
else -> 999
}
}
} }
} }

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:pathData="M0,16A16,16 0,1 1,16 32,16.018 16.018,0 0,1 0,16ZM3.049,16A12.951,12.951 0,1 0,16 3.049,12.966 12.966,0 0,0 3.049,16ZM16.243,21.84 L11.806,17.4a2,2 0,0 1,0 -2.819l4.432,-4.432a2,2 0,0 1,2.824 2.826L16.04,15.994l3.022,3.022a2,2 0,0 1,0.166 2.636l-0.166,0.188a2,2 0,0 1,-2.819 0Z"
android:fillColor="#4954ee"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:pathData="M32,16A16,16 0,1 1,16 0,16.018 16.018,135 0,1 32,16ZM28.951,16A12.951,12.951 0,1 0,16 28.951,12.966 12.966,0 0,0 28.951,16ZM15.757,10.16 L20.194,14.6a2,2 0,0 1,-0 2.819l-4.432,4.432a2,2 0,0 1,-2.824 -2.826L15.96,16.006l-3.022,-3.022a2,2 0,0 1,-0.166 -2.636l0.166,-0.188a2,2 0,0 1,2.819 -0Z"
android:fillColor="#6917c2"/>
</vector>

View File

@ -4,7 +4,7 @@
android:left="-300dp" android:left="-300dp"
android:right="-300dp"> android:right="-300dp">
<rotate <rotate
android:drawable="@drawable/shape_dashed_line" android:drawable="@drawable/laneinfo_1_2"
android:fromDegrees="90" /> android:fromDegrees="90" />
</item> </item>
</layer-list> </layer-list>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/app_name" />
</FrameLayout>

View File

@ -69,8 +69,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignBottom="@id/sign_main_bg" android:layout_alignBottom="@id/sign_main_bg"
android:layout_marginLeft="2dp" android:layout_marginLeft="2dp"
android:padding="4dp"
android:layout_toRightOf="@id/sign_main_bg" android:layout_toRightOf="@id/sign_main_bg"
android:background="@drawable/icon_sign_info" android:src="@drawable/icon_sign_info"
android:visibility="gone" /> android:visibility="gone" />
<ImageView <ImageView

View File

@ -24,9 +24,9 @@
android:id="@+id/evaluation_bar" android:id="@+id/evaluation_bar"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableLeft="@drawable/selector_btn_back_xml"
android:layout_marginLeft="12dp" android:layout_marginLeft="12dp"
android:layout_marginTop="14dp" android:layout_marginTop="14dp"
android:drawableLeft="@drawable/selector_btn_back_xml"
android:text="Mark" android:text="Mark"
android:textColor="@color/default_blue_text_color" android:textColor="@color/default_blue_text_color"
android:textSize="16sp" android:textSize="16sp"
@ -49,10 +49,10 @@
android:id="@+id/evaluation_bar_cancel" android:id="@+id/evaluation_bar_cancel"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="40dp" android:layout_height="40dp"
android:visibility="gone"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
android:background="@color/transparent" android:background="@color/transparent"
android:src="@drawable/icon_fragment_close" android:src="@drawable/icon_fragment_close"
android:visibility="gone"
app:layout_constraintRight_toLeftOf="@id/evaluation_bar_save" app:layout_constraintRight_toLeftOf="@id/evaluation_bar_save"
app:layout_constraintTop_toTopOf="@id/evaluation_bar_save" /> app:layout_constraintTop_toTopOf="@id/evaluation_bar_save" />
@ -196,12 +196,12 @@
android:elevation="2dp" android:elevation="2dp"
android:gravity="start" android:gravity="start"
android:hint="请输入备注信息" android:hint="请输入备注信息"
android:paddingLeft="12dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:inputType="textMultiLine" android:inputType="textMultiLine"
android:lines="3" android:lines="3"
android:maxLines="3" android:maxLines="3"
android:paddingLeft="12dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:text="@={viewModel.liveDataQsRecordBean.description}" android:text="@={viewModel.liveDataQsRecordBean.description}"
android:textSize="12sp" /> android:textSize="12sp" />
@ -212,8 +212,8 @@
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginLeft="8dp" android:layout_marginLeft="8dp"
android:layout_marginTop="26dp" android:layout_marginTop="26dp"
android:layout_marginBottom="20dp"
android:layout_marginRight="8dp" android:layout_marginRight="8dp"
android:layout_marginBottom="20dp"
android:background="#D6DBF0" /> android:background="#D6DBF0" />
<TextView <TextView
@ -224,6 +224,44 @@
android:textColor="@color/default_blue_text_color" android:textColor="@color/default_blue_text_color"
android:textSize="16sp" /> android:textSize="16sp" />
<!--
这种效果也好实现,主要的关键点是 Android:clipChildren=”false” 这个属性。
1.配置ViewPager 和其父布局的 android:clipChildren属性为”false”.
(android:clipChildren表示是否限制子View在其范围内默认为true. 代码设置setClipChildren(false))
因为如果clipChildren属性设置为true,就表明我们要将children给clip掉就是说对于子元素来说超出当前view的部分都会被切掉那我们在这里把它设置成false就表明超出view的部分不要切掉依然显示。
注意setClipChildren(false)在3.0以上版本中,开启了硬件加速后将不能正常工作,所以需要将其设置为软件加速。设置软硬件加速使用 setLayerType(View.LAYER_TYPE_SOFTWARE, null); 也可以在布局文件中添加 android:layerType=”software”
-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/evaluation_picture_left"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginRight="4dp"
android:background="@drawable/icon_picture_left"
android:padding="5dp" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/evaluation_picture_viewpager"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="1"
android:clipChildren="false" />
<ImageView
android:id="@+id/evaluation_picture_right"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:background="@drawable/icon_picture_right"
android:padding="5dp" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/evaluation_voice_recyclerview" android:id="@+id/evaluation_voice_recyclerview"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -174,7 +174,7 @@
<!-- omdb --> <!-- omdb -->
<style-line id="boundaryType" stipple-width="0.1" width="0.1" /> <style-line id="boundaryType" stipple-width="0.1" width="0.1" />
<style-line id="s2e" dasharray="1,1" repeat-gap="3" repeat-start="0" stroke="#14582c" <style-line dasharray="1,1" id="s2e" repeat-gap="3" repeat-start="0" stroke="#14582c"
width="0.1" /> width="0.1" />
<!--###### ASSIGNMENT ######--> <!--###### ASSIGNMENT ######-->
@ -1479,83 +1479,83 @@
</m> </m>
</m> </m>
<!-- &lt;!&ndash; 自定义渲染样式 &ndash;&gt;--> <!-- &lt;!&ndash; 自定义渲染样式 &ndash;&gt;-->
<!-- <m k="navi_type" zoom-max="22" zoom-min="15">--> <!-- <m k="navi_type" zoom-max="22" zoom-min="15">-->
<!-- &lt;!&ndash; 车道中心线 &ndash;&gt;--> <!-- &lt;!&ndash; 车道中心线 &ndash;&gt;-->
<!-- <m v="had_lane_link">--> <!-- <m v="had_lane_link">-->
<!-- <line dasharray="20,20" fix="true" stipple-stroke="#00000000" stroke="#ff0000"--> <!-- <line dasharray="20,20" fix="true" stipple-stroke="#00000000" stroke="#ff0000"-->
<!-- width="0.3" />--> <!-- width="0.3" />-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash; 车道边线 &ndash;&gt;--> <!-- &lt;!&ndash; 车道边线 &ndash;&gt;-->
<!-- <m v="had_lane_mark_link">--> <!-- <m v="had_lane_mark_link">-->
<!-- <line stipple-width="0.5" stroke="#0000ff" width="0.1" />--> <!-- <line stipple-width="0.5" stroke="#0000ff" width="0.1" />-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash;道路箭头 objectArrow&ndash;&gt;--> <!-- &lt;!&ndash;道路箭头 objectArrow&ndash;&gt;-->
<!-- <m v="object_arrow">--> <!-- <m v="object_arrow">-->
<!-- <area fade="5" fill="#88aaaa00" stroke="#ff0000" stroke-width="0.1"></area>--> <!-- <area fade="5" fill="#88aaaa00" stroke="#ff0000" stroke-width="0.1"></area>-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash;人行横道 objectcrosswalk&ndash;&gt;--> <!-- &lt;!&ndash;人行横道 objectcrosswalk&ndash;&gt;-->
<!-- <m v="object_crosswalk">--> <!-- <m v="object_crosswalk">-->
<!-- <area fill="#88800080" stroke="#ff0000" stroke-width="0.2"></area>--> <!-- <area fill="#88800080" stroke="#ff0000" stroke-width="0.2"></area>-->
<!-- <caption style="bold" dy="12" fill="#4D2F08" k="name" size="14" stroke="#ffffff"--> <!-- <caption style="bold" dy="12" fill="#4D2F08" k="name" size="14" stroke="#ffffff"-->
<!-- stroke-width="2.0" />--> <!-- stroke-width="2.0" />-->
<!-- <caption style="bold" dy="-12" fill="#4D2F08" k="ele" size="12" stroke="#ffffff"--> <!-- <caption style="bold" dy="-12" fill="#4D2F08" k="ele" size="12" stroke="#ffffff"-->
<!-- stroke-width="2.0" />--> <!-- stroke-width="2.0" />-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash;杆状物 objectpole&ndash;&gt;--> <!-- &lt;!&ndash;杆状物 objectpole&ndash;&gt;-->
<!-- <m v="object_pole">--> <!-- <m v="object_pole">-->
<!-- <line stipple-width="0.5" stroke="#8800aaaa" width="0.1" />--> <!-- <line stipple-width="0.5" stroke="#8800aaaa" width="0.1" />-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash;对象标志 objectsymbol&ndash;&gt;--> <!-- &lt;!&ndash;对象标志 objectsymbol&ndash;&gt;-->
<!-- <m v="object_symbol">--> <!-- <m v="object_symbol">-->
<!-- <area fill="#880000cc" stroke="#0000cc" stroke-width="0.2"></area>--> <!-- <area fill="#880000cc" stroke="#0000cc" stroke-width="0.2"></area>-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash;交通信号灯 objectTrfficLights&ndash;&gt;--> <!-- &lt;!&ndash;交通信号灯 objectTrfficLights&ndash;&gt;-->
<!-- <m v="object_trrfic">--> <!-- <m v="object_trrfic">-->
<!-- <area fill="#8800cc00" stroke="#00cc00" stroke-width="0.2"></area>--> <!-- <area fill="#8800cc00" stroke="#00cc00" stroke-width="0.2"></area>-->
<!-- </m>--> <!-- </m>-->
<!-- <m zoom-max="19" zoom-min="15">--> <!-- <m zoom-max="19" zoom-min="15">-->
<!-- <text use="ferry" />--> <!-- <text use="ferry" />-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash;道路方向&ndash;&gt;--> <!-- &lt;!&ndash;道路方向&ndash;&gt;-->
<!-- <m v="symbol_object_arrow">--> <!-- <m v="symbol_object_arrow">-->
<!-- <symbol use="oneway"></symbol>--> <!-- <symbol use="oneway"></symbol>-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash;杆状物&ndash;&gt;--> <!-- &lt;!&ndash;杆状物&ndash;&gt;-->
<!-- <m v="symbol_object_pole">--> <!-- <m v="symbol_object_pole">-->
<!-- <symbol src="assets:symbols/gondola.svg" />--> <!-- <symbol src="assets:symbols/gondola.svg" />-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash;对象标志&ndash;&gt;--> <!-- &lt;!&ndash;对象标志&ndash;&gt;-->
<!-- <m v="symbol_object_symbol">--> <!-- <m v="symbol_object_symbol">-->
<!-- <symbol src="assets:symbols/peak.svg" />--> <!-- <symbol src="assets:symbols/peak.svg" />-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash;交通信号灯&ndash;&gt;--> <!-- &lt;!&ndash;交通信号灯&ndash;&gt;-->
<!-- <m v="symbol_object_traffic">--> <!-- <m v="symbol_object_traffic">-->
<!-- <symbol src="assets:symbols/traffic_signal.svg" />--> <!-- <symbol src="assets:symbols/traffic_signal.svg" />-->
<!-- </m>--> <!-- </m>-->
<!-- </m>--> <!-- </m>-->
<!-- <m k="nav_style">--> <!-- <m k="nav_style">-->
<!-- <m v="symbol_object_line">--> <!-- <m v="symbol_object_line">-->
<!-- <m k="rule" zoom-max="22" zoom-min="15">--> <!-- <m k="rule" zoom-max="22" zoom-min="15">-->
<!-- &lt;!&ndash; 蓝色黑色间隔线 &ndash;&gt;--> <!-- &lt;!&ndash; 蓝色黑色间隔线 &ndash;&gt;-->
<!-- <m v="blue_link">--> <!-- <m v="blue_link">-->
<!-- <line dasharray="20,20" fix="true" stipple-stroke="#00000000" stroke="#00000000"--> <!-- <line dasharray="20,20" fix="true" stipple-stroke="#00000000" stroke="#00000000"-->
<!-- width="0.1" />--> <!-- width="0.1" />-->
<!-- </m>--> <!-- </m>-->
<!-- &lt;!&ndash; 黄色线 &ndash;&gt;--> <!-- &lt;!&ndash; 黄色线 &ndash;&gt;-->
<!-- <m v="yellow_link">--> <!-- <m v="yellow_link">-->
<!-- <line stipple-width="0.1" stroke="#f4ea2a" width="0.1" />--> <!-- <line stipple-width="0.1" stroke="#f4ea2a" width="0.1" />-->
<!-- </m>--> <!-- </m>-->
<!-- </m>--> <!-- </m>-->
<!-- <line stipple-width="0.5" stroke="#33aaaa" width="0.3" />--> <!-- <line stipple-width="0.5" stroke="#33aaaa" width="0.3" />-->
<!-- </m>--> <!-- </m>-->
<!-- <m v="symbol_track_point" zoom-max="25" zoom-min="10">--> <!-- <m v="symbol_track_point" zoom-max="25" zoom-min="10">-->
<!-- <symbol src="assets:symbols/dot_blue.svg" />--> <!-- <symbol src="assets:symbols/dot_blue.svg" />-->
<!-- </m>--> <!-- </m>-->
<!-- </m>--> <!-- </m>-->
<m k="qi_table"> <m k="qi_table">
<!--车道数--> <!--车道数-->
@ -1805,21 +1805,21 @@
</m> </m>
<!--电子眼--> <!--电子眼-->
<m v="OMDB_ELECTRONICEYE"> <m v="OMDB_ELECTRONICEYE">
<m k="angle"> <!-- <m k="angle">-->
<symbol repeat="false" repeat-start="0" rotate="false" <!-- <symbol repeat="false" repeat-start="0" rotate="false"-->
src="assets:symbols/volcano.svg" symbol-height="69" symbol-width="69"></symbol> <!-- src="assets:symbols/volcano.svg" symbol-height="69" symbol-width="69"></symbol>-->
</m> <!-- </m>-->
<caption k="name" fill="#000000" priority="0" size="14" stroke="#ffffff" stroke-width="1.0" dy="-30"></caption> <caption dy="-30" fill="#000000" k="name" priority="0" size="14"
stroke="#ffffff" stroke-width="1.0"></caption>
<m k="type" v="angle"> <m k="type" v="angle">
<symbol repeat="false" repeat-gap="2000" repeat-start="0" rotate="true" <symbol repeat="false" repeat-gap="2000" repeat-start="0" rotate="true"
src="assets:omdb/icon_arrow_right.svg" symbol-height="76" src="assets:omdb/icon_4010.svg" symbol-height="36" symbol-width="28"></symbol>
symbol-width="76"></symbol>
</m> </m>
<m k="type" v="s_2_e"> <m k="type" v="s_2_e">
<line use="s2e" /> <line use="s2e" />
</m> </m>
</m> </m>
<!-- 路口 --> <!-- 路口 -->
<m v="OMDB_INTERSECTION"> <m v="OMDB_INTERSECTION">
<m k="type" v="node"> <m k="type" v="node">
<symbol src="assets:symbols/dot_blue_dark.svg"></symbol> <symbol src="assets:symbols/dot_blue_dark.svg"></symbol>

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="56" height="74.999" viewBox="0 0 56 74.999"><defs><style>.a{fill:#fff;opacity:0;}.b{fill:#fad950;}.c,.d{fill:#0b1923;}.c{stroke:#0b1923;stroke-width:0.5px;}.e,.f{stroke:none;}.f{fill:#0b1923;}</style></defs><g transform="translate(1401 -1261.001) rotate(90)"><rect class="a" width="56" height="56" transform="translate(1280 1345)"/><g transform="translate(0 -2)"><g class="b" transform="translate(1280 1349)"><path class="e" d="M 52.55363845825195 47.5 L 3.446360111236572 47.5 C 3.195830106735229 47.5 3.067879915237427 47.34397125244141 3.0139000415802 47.25096893310547 C 2.959929943084717 47.157958984375 2.887939929962158 46.96945190429688 3.012239933013916 46.75191879272461 L 27.56587028503418 3.783060550689697 C 27.69112968444824 3.563860416412354 27.89163017272949 3.53113055229187 28 3.53113055229187 C 28.10836029052734 3.53113055229187 28.30886077880859 3.563860416412354 28.43411064147949 3.783050537109375 L 52.98777008056641 46.75193023681641 C 53.112060546875 46.96945190429688 53.04006958007812 47.157958984375 52.98609924316406 47.25096893310547 C 52.93212127685547 47.34397125244141 52.80416870117188 47.5 52.55363845825195 47.5 Z"/><path class="f" d="M 27.99999618530273 6.046699523925781 L 5.169540405273438 46 L 50.83046340942383 46 L 27.99999618530273 6.046699523925781 M 27.99999809265137 2.0311279296875 C 28.67629432678223 2.0311279296875 29.35259056091309 2.367034912109375 29.73648071289062 3.038848876953125 L 54.29013061523438 46.00772094726562 C 55.05202102661133 47.34104156494141 54.08929061889648 49 52.55363845825195 49 L 3.446361541748047 49 C 1.910709381103516 49 0.9479789733886719 47.34104156494141 1.709869384765625 46.00772094726562 L 26.26350975036621 3.038848876953125 C 26.64740562438965 2.367034912109375 27.32370185852051 2.0311279296875 27.99999809265137 2.0311279296875 Z"/></g><path class="c" d="M44.849,49.162a.812.812,0,0,0,.794-.794V46.779H48.2a4.526,4.526,0,0,0,3.462-1.419,5.191,5.191,0,0,0,1.248-3.178,2.467,2.467,0,0,0,2.213-2.667c-.113-3.235-3.235-4.483-5.221-4.483H40.309a5.77,5.77,0,0,0-5.278,5.618v1.475a1.138,1.138,0,0,0,1.135,1.135h.34c.113,2.043,1.305,3.518,2.951,3.518h1.873v1.589a.812.812,0,0,0,.794.794h.908v.624a2.519,2.519,0,0,0,2.5,2.5h.738v1.362a1.5,1.5,0,0,0,1.475,1.475H50.41a1.5,1.5,0,0,0,1.475-1.475V50.127a1.5,1.5,0,0,0-1.475-1.475H47.743a1.5,1.5,0,0,0-1.475,1.475v1.362H45.53a1.707,1.707,0,0,1-1.7-1.7v-.624Zm2.213,4.483V52.283c1.873,0,1.873-.794,0-.794ZM37.3,43.2h6.242a2.894,2.894,0,0,0,1.759-.624,2.984,2.984,0,0,0,1.021,1.589,3.224,3.224,0,0,0,2.1.794h.4c1.532-.284,2.44-1.589,2.44-3.575a4,4,0,0,0-1.816-3.745,6.605,6.605,0,0,1,.851-.34.413.413,0,1,0-.227-.794,3.922,3.922,0,0,0-1.532.794l-.057.057a6.481,6.481,0,0,0-1.532,2.1c-.738,1.419-2.1,2.951-3.4,2.951H36.167a.366.366,0,0,1-.34-.34V40.593a4.919,4.919,0,0,1,4.483-4.824H49.9c1.135,0,4.313.681,4.426,3.689a1.7,1.7,0,0,1-1.419,1.873,6.868,6.868,0,0,0-.057-1.078.4.4,0,1,0-.794.113,5.661,5.661,0,0,1-1.021,4.426,3.6,3.6,0,0,1-2.894,1.192H39.458C38.266,45.984,37.415,44.849,37.3,43.2Zm4.824,3.575h2.667v1.589H42.125Z" transform="translate(1262.925 1337.469)"/></g><path class="d" d="M69.876,257.508H31.287a2.233,2.233,0,1,1,0-4.466H69.876a2.233,2.233,0,1,1,0,4.466Zm1.217-.951-9.7-8.471a2.2,2.2,0,0,1,0-3.157,2.328,2.328,0,0,1,3.234,0l9.705,8.471a2.2,2.2,0,0,1,0,3.157A2.325,2.325,0,0,1,71.093,256.557Zm-9.7,5.908,9.7-8.471a2.328,2.328,0,0,1,3.234,0,2.2,2.2,0,0,1,0,3.157l-9.7,8.471a2.328,2.328,0,0,1-3.234,0A2.2,2.2,0,0,1,61.392,262.465Z" transform="translate(1016.726 1425) rotate(-90)"/></g></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

2
vtm

@ -1 +1 @@
Subproject commit c6ba77aa0eb90a84fb19377706eb6792ec4a42b6 Subproject commit 1ee201a41f78f169873848209a3f3bdac36f185a