From e2d1d78bc72459a0ac2e2e337bbca7c8a1e41e17 Mon Sep 17 00:00:00 2001
From: wangrong <wangrong@shsening.com>
Date: 星期二, 29 九月 2026 22:44:02 +0800
Subject: [PATCH] 修改首页加logo等
---
src/modules/maps/hooks/use-map.ts | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/src/modules/maps/hooks/use-map.ts b/src/modules/maps/hooks/use-map.ts
index 5f91ca5..645d2d6 100644
--- a/src/modules/maps/hooks/use-map.ts
+++ b/src/modules/maps/hooks/use-map.ts
@@ -4,6 +4,52 @@
export const MAP_TK = '51915011aa0997aa2ddd7e38504fa8bc';
export const MAP_LOAD = { v: '4.0', tk: MAP_TK };
export const DEFAULT_CENTER: LngLat = [121.280637, 32.125178];
+export const DEFAULT_ZOOM = 16;
+export const MAP_ZOOM_KEY = 'map.zoomlevel';
+export const MAP_COORD_KEY = 'map.coordinates';
+
+function paramText(raw: unknown): string {
+ if (raw == null) return '';
+ if (typeof raw === 'string' || typeof raw === 'number') return String(raw).trim();
+ if (Array.isArray(raw)) return raw.map(e => String(e).trim()).join(',');
+ return '';
+}
+
+export function parseMapZoom(raw: unknown, fallback = DEFAULT_ZOOM) {
+ const n = Number(paramText(raw));
+ return Number.isFinite(n) && n > 0 ? n : fallback;
+}
+
+export function parseMapCenter(raw: unknown, fallback: LngLat = DEFAULT_CENTER): LngLat {
+ const text = paramText(raw);
+ const parts = text.split(/[,锛宂/).map(s => Number(s.trim()));
+ if (parts.length >= 2 && Number.isFinite(parts[0]) && Number.isFinite(parts[1])) {
+ return [parts[0], parts[1]];
+ }
+ return fallback;
+}
+
+/** 浠� base_sys_param 璇诲彇瀛︽牎鍦板浘榛樿瑙嗚锛歮ap.zoomlevel銆乵ap.coordinates锛坙on,lat锛� */
+export async function loadMapView(service: any): Promise<{ center: LngLat; zoom: number }> {
+ const read = async (key: string) => {
+ try {
+ if (service?.base?.sys?.param?.stringbykey) {
+ return await service.base.sys.param.stringbykey({ key });
+ }
+ return await service.request({
+ url: 'admin/base/sys/param/stringbykey',
+ params: { key }
+ });
+ } catch {
+ return '';
+ }
+ };
+ const [zoomRaw, coordRaw] = await Promise.all([read(MAP_ZOOM_KEY), read(MAP_COORD_KEY)]);
+ return {
+ center: parseMapCenter(coordRaw),
+ zoom: parseMapZoom(zoomRaw)
+ };
+}
export function pinIcon(color: string) {
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="28" height="40" viewBox="0 0 28 40"><path fill="${color}" stroke="#fff" stroke-width="1.5" d="M14 1C7.4 1 2 6.4 2 13c0 8.8 12 25 12 25s12-16.2 12-25C26 6.4 20.6 1 14 1z"/><circle cx="14" cy="13" r="5" fill="#fff"/></svg>`;
--
Gitblit v1.9.1