路线地图/节点卡片/详情按出行方式显示不同图标(批 19)
出行方式(飞机/火车/游船/自驾/地铁…)原本在路线地图标记、节点卡片交通行、
节点详情「出行方式」行一律显示节点类型图标(赶路节点恒为 🚗),易让人误解。
- TravelModeController 新增 MODE_ICONS(mode_type → emoji 映射)
- ActivityController::show() 两路查询 LEFT JOIN travel_modes 取 mode_type,注入 modeIcons
- 路线地图标记 / 卡片交通行 / 详情出行方式行:优先用出行方式图标,
未选出行方式时回退节点类型图标
This commit is contained in:
@@ -66,8 +66,15 @@ if ($cardCategory === 'plan') {
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php
|
||||
/* 批 19:交通行图标跟着「出行方式」走(飞机/火车/游船…),不再一律 🚄。
|
||||
没选出行方式时回退到 🚄,保持旧行为。 */
|
||||
$modeIcons = $modeIcons ?? [];
|
||||
$tModeType = (string)($n['travel_mode_type'] ?? '');
|
||||
$tIcon = $modeIcons[$tModeType] ?? '🚄';
|
||||
?>
|
||||
<?php if (!empty($transportParts)): ?>
|
||||
<div class="node-transport">🚄 <?= e(implode(' · ', $transportParts)) ?></div>
|
||||
<div class="node-transport"><?= e($tIcon) ?> <?= e(implode(' · ', $transportParts)) ?></div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($st === 'cancelled' && !empty($n['cancel_reason'])): ?>
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
查不到就保持缺省,不硬造位置。AMap 2.0 已由 layout.php 全局加载。 */
|
||||
$routeNodes = [];
|
||||
$nodeFirstImage = $nodeFirstImage ?? [];
|
||||
$modeIcons = $modeIcons ?? []; // 批 19:出行方式→图标映射,由控制器注入
|
||||
foreach (($realityNodes ?? []) as $rn) {
|
||||
$s = json_decode_field($rn['start_location'] ?? null);
|
||||
$e = json_decode_field($rn['end_location'] ?? null);
|
||||
@@ -53,10 +54,17 @@ foreach (($realityNodes ?? []) as $rn) {
|
||||
continue; // 坐标和地名一个都没有的节点不上地图
|
||||
}
|
||||
$imgId = (int)($nodeFirstImage[(int)$rn['id']] ?? 0);
|
||||
// 批 19:标记图标优先用「出行方式」的图标;没选出行方式时回退到节点类型图标
|
||||
//(赶路节点没选方式 → 仍是 🚗;选了飞机/火车/游船等 → 显示对应交通工具图标,不再一律汽车)。
|
||||
$rnModeType = (string)($rn['travel_mode_type'] ?? '');
|
||||
$rnIcon = ($rnModeType !== '' && isset($modeIcons[$rnModeType]))
|
||||
? $modeIcons[$rnModeType]
|
||||
: (string)($rn['node_type_icon'] ?: '📍');
|
||||
|
||||
$routeNodes[] = [
|
||||
'id' => (int)$rn['id'],
|
||||
'title' => (string)($rn['title'] ?: '(无标题节点)'),
|
||||
'icon' => (string)($rn['node_type_icon'] ?: '📍'),
|
||||
'icon' => $rnIcon,
|
||||
'img' => $imgId > 0 ? media_att($imgId) : '',
|
||||
'url' => url('nodes/show', ['id' => (int)$rn['id']]),
|
||||
'sname' => $sname, // 出发地名:没有坐标时交给高德地理编码兜底
|
||||
|
||||
Reference in New Issue
Block a user