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']);