fix(tradein): MapCard клик по пину + честная ДКП-легенда

A) target L.circle (r=2000м) был interactive по умолчанию и рисовался
после маркеров → перехватывал клики → popup аналога/квартиры не открывался.
Добавлен interactive:false (круг чисто декоративный).
B) ДКП-сделки Росреестра street-level, lat/lon=NULL (ADR linkage-impossible)
→ 0 зелёных пинов. Зелёная ДКП-легенда и chip скрыты при deals.length===0
(адаптивно: если backend геокодит часть — пины+легенда показываются). Без
вранья «клик по пину» когда ДКП-пинов нет.

Refs #786
This commit is contained in:
bot-frontend 2026-05-30 19:43:06 +03:00
parent 8f2ff10a1c
commit 832a8895e5

View file

@ -174,6 +174,10 @@ export function MapCard({ estimate }: Props) {
weight: 1,
fillColor: COLOR_TARGET,
fillOpacity: 0.05,
// Декоративный радиус-круг рисуется ПОСЛЕ маркеров и по умолчанию
// перехватывал бы клики по пинам под ним (#786) → bindPopup не
// срабатывал. interactive:false пропускает клики к маркерам.
interactive: false,
}).addTo(map);
L.circleMarker(ll, {
radius: 9,
@ -218,9 +222,11 @@ export function MapCard({ estimate }: Props) {
<div>
<span style={{ color: COLOR_ANALOG }}></span> объявления · {analogs.length}
</div>
<div style={{ marginTop: 4 }}>
<span style={{ color: COLOR_DEAL }}></span> сделки ДКП · {deals.length}
</div>
{deals.length > 0 && (
<div style={{ marginTop: 4 }}>
<span style={{ color: COLOR_DEAL }}></span> сделки ДКП · {deals.length}
</div>
)}
</div>
</div>
@ -241,8 +247,14 @@ export function MapCard({ estimate }: Props) {
<div className="table-foot">
<span>
<span style={{ color: COLOR_TARGET }}></span> ваша квартира ·{" "}
<span style={{ color: COLOR_ANALOG }}></span> asking ·{" "}
<span style={{ color: COLOR_DEAL }}></span> ДКП · клик по пину детали
<span style={{ color: COLOR_ANALOG }}></span> asking
{deals.length > 0 && (
<>
{" · "}
<span style={{ color: COLOR_DEAL }}></span> ДКП
</>
)}
{" · клик по пину — детали"}
</span>
</div>
</article>