import { Marker, type Map as MapLibreMap, type PaddingOptions } from "maplibre-gl"; import type { PlaceSearchItem } from "../api/place-search-client"; export function markGeocodingLocation(map: MapLibreMap, result: PlaceSearchItem) { const marker = new Marker({ color: "var(--action-blue)" }) .setLngLat([result.longitude, result.latitude]).addTo(map); const element = marker.getElement(); element.dataset.geocodingMarker = "true"; element.setAttribute("role", "img"); element.setAttribute("aria-label", `地址定位:${result.name} ${result.address}`); element.title = `${result.name} · ${result.address}`; return marker; } export function locateGeocodingResult(map: MapLibreMap, result: PlaceSearchItem, padding: PaddingOptions, reducedMotion: boolean) { map.easeTo({ center: [result.longitude, result.latitude], zoom: 16, padding, duration: reducedMotion ? 0 : 500 }); }