From aa357b53d22166bb0daf0c16d7bdf4ec79d198a7 Mon Sep 17 00:00:00 2001 From: air <30444667+sszdot@users.noreply.github.com> Date: Tue, 23 Sep 2025 15:41:36 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=B1=BB=20=20=E5=9E=8B=E3=80=91?= =?UTF-8?q?=EF=BC=9A=20=E3=80=90=E5=8E=9F=20=20=E5=9B=A0=E3=80=91=EF=BC=9A?= =?UTF-8?q?=20=E3=80=90=E8=BF=87=20=20=E7=A8=8B=E3=80=91=EF=BC=9A=20?= =?UTF-8?q?=E3=80=90=E5=BD=B1=20=20=E5=93=8D=E3=80=91=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/PlaneController.class.php | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/FlyCube/MpApi/Controller/PlaneController.class.php b/FlyCube/MpApi/Controller/PlaneController.class.php index 9ff5c70..baf4125 100644 --- a/FlyCube/MpApi/Controller/PlaneController.class.php +++ b/FlyCube/MpApi/Controller/PlaneController.class.php @@ -1103,13 +1103,22 @@ class PlaneController extends PublicController { $where['is_active'] = 1; $mapStyleDb = D('map_styles'); - $field = array('id', 'name', 'sprite', 'glyphs', 'tiles', 'sort_order'); + $field = array('id', 'name', 'sprite', 'glyphs', 'url', 'sort_order'); $list = $mapStyleDb->where($where)->field($field)->order('sort_order ASC')->select(); if ($list) { - // 把 tiles 字段从 JSON 字符串解析成数组 + // 转换数据格式,保持向前兼容 foreach ($list as &$style) { - $style['tiles'] = json_decode($style['tiles'], true); + // 如果url字段存在,使用url字段,否则保持旧的tiles字段(兼容旧数据) + if (isset($style['url'])) { + $style['tiles'] = [$style['url']]; + } else { + // 兼容旧数据 + $style['tiles'] = json_decode($style['tiles'], true); + $style['url'] = is_array($style['tiles']) ? $style['tiles'][0] : ''; + } + // 确保glyphs有默认值 + $style['glyphs'] = $style['glyphs'] ?? 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf'; } echo json_encode(array( @@ -1152,7 +1161,7 @@ class PlaneController extends PublicController public function addMapStyle() { // 必填字段校验 - $required = ['name', 'tiles']; + $required = ['name', 'url']; foreach ($required as $key) { if (!isset($_REQUEST[$key]) || $_REQUEST[$key] === '') { echo json_encode(['status' => 0, 'msg' => '参数缺失: ' . $key]); @@ -1164,7 +1173,8 @@ class PlaneController extends PublicController 'name' => $_REQUEST['name'], 'sprite' => $_REQUEST['sprite'] ?? '', 'glyphs' => $_REQUEST['glyphs'] ?? 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf', - 'tiles' => is_array($_REQUEST['tiles']) ? json_encode($_REQUEST['tiles']) : $_REQUEST['tiles'], + 'url' => is_array($_REQUEST['url']) ? current($_REQUEST['url']) : $_REQUEST['url'], + 'tiles' => json_encode([is_array($_REQUEST['url']) ? current($_REQUEST['url']) : $_REQUEST['url']]), // 保持向后兼容 'is_active' => isset($_REQUEST['is_active']) ? intval($_REQUEST['is_active']) : 1, 'sort_order' => isset($_REQUEST['sort_order']) ? intval($_REQUEST['sort_order']) : 0 ]; @@ -1193,8 +1203,16 @@ class PlaneController extends PublicController if (isset($_REQUEST['name'])) $data['name'] = $_REQUEST['name']; if (isset($_REQUEST['sprite'])) $data['sprite'] = $_REQUEST['sprite']; if (isset($_REQUEST['glyphs'])) $data['glyphs'] = $_REQUEST['glyphs']; - if (isset($_REQUEST['tiles'])) { - $data['tiles'] = is_array($_REQUEST['tiles']) ? json_encode($_REQUEST['tiles']) : $_REQUEST['tiles']; + if (isset($_REQUEST['url'])) { + $url = is_array($_REQUEST['url']) ? current($_REQUEST['url']) : $_REQUEST['url']; + $data['url'] = $url; + $data['tiles'] = json_encode([$url]); // 保持向后兼容 + } elseif (isset($_REQUEST['tiles'])) { + // 兼容旧的tiles参数 + $tiles = is_array($_REQUEST['tiles']) ? $_REQUEST['tiles'] : json_decode($_REQUEST['tiles'], true); + $url = is_array($tiles) ? current($tiles) : $tiles; + $data['url'] = $url; + $data['tiles'] = is_array($tiles) ? json_encode($tiles) : $tiles; } if (isset($_REQUEST['is_active'])) $data['is_active'] = intval($_REQUEST['is_active']); if (isset($_REQUEST['sort_order'])) $data['sort_order'] = intval($_REQUEST['sort_order']);