問題描述
「附近站牌」把結果只依站名分組(lib/screens/nearby_screen.dart 的 _buildGroups()),
一張卡片配一個距離徽章。但同名的兩個站牌實際分屬馬路兩側,距離並不相同。
_results 在兩條取得路徑都已依距離排序
(bus_repository.dart fetchNearbyStops 與 _fetchNearbyStopsFromApi 結尾都有 results.sort(...)),
而分組時只在第一次遇到該站名時記錄距離:
if (!groupRoutes.containsKey(name)) {
groupOrder.add(name);
groupDistances[name] = item.distanceMeters; // 只取最近的那筆
groupRoutes[name] = [];
}
所以徽章永遠顯示群組中最近那個站牌的距離,對另一個方向的列則是低估。
重現步驟
- 站在一組雙向同名站牌附近(例:台中「捷運南屯站(文心路)」)
- 開啟「附近站牌」
- 觀察卡片左上角的距離徽章,再對照卡片內兩個方向的列
實際結果
兩個方向共用同一個距離數字,取自較近的那一側。點進較遠方向的站牌時,
實際要走的距離可能是徽章顯示值的數倍。
預期結果
距離資訊要能反映使用者實際要走到的那個站牌。
可能的修法
- 距離改成逐列顯示,而非掛在群組標頭上;或
- 分組鍵改為「站名 + 座標鄰近」而非純站名,讓馬路兩側各成一張卡片。
後者會改變畫面結構,需要一併確認 #47 加上的方向文字是否還有必要。
補充
由 #47 的修復過程中發現,該 issue 只處理「未顯示方向」的顯示問題,
刻意未動分組邏輯,故另開此issue追蹤。
問題描述
「附近站牌」把結果只依站名分組(
lib/screens/nearby_screen.dart的_buildGroups()),一張卡片配一個距離徽章。但同名的兩個站牌實際分屬馬路兩側,距離並不相同。
_results在兩條取得路徑都已依距離排序(
bus_repository.dartfetchNearbyStops與_fetchNearbyStopsFromApi結尾都有results.sort(...)),而分組時只在第一次遇到該站名時記錄距離:
所以徽章永遠顯示群組中最近那個站牌的距離,對另一個方向的列則是低估。
重現步驟
實際結果
兩個方向共用同一個距離數字,取自較近的那一側。點進較遠方向的站牌時,
實際要走的距離可能是徽章顯示值的數倍。
預期結果
距離資訊要能反映使用者實際要走到的那個站牌。
可能的修法
後者會改變畫面結構,需要一併確認 #47 加上的方向文字是否還有必要。
補充
由 #47 的修復過程中發現,該 issue 只處理「未顯示方向」的顯示問題,
刻意未動分組邏輯,故另開此issue追蹤。