【类 型】:

【原  因】:
【过  程】:
【影  响】:
This commit is contained in:
air 2025-09-23 15:41:36 +08:00
parent 4b8d31b52a
commit aa357b53d2

View File

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