You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP将字符串格式转换为LatLng格式以绘制地图折线

PHP 转换折线数据为前端地图可用的坐标数组

前端 map.addSource 的 coordinates 参数要求为二维数组,格式是 [[经度, 纬度], [经度, 纬度], ...],每个子数组对应一个点位的经纬度(多数地图框架遵循「经度在前、纬度在后」的顺序)。以下是针对常见格式的转换方案:

假设你的 $polylines_data 格式

常见的折线数据字符串一般用分号分隔点位、逗号分隔经纬度,示例如下:

$polylines_data = "116.397428,39.90923;116.407428,39.91923;116.417428,39.92923";

转换代码实现

通过PHP字符串分割与数组操作即可完成转换:

// 1. 按分号分割成单个点位字符串
$points = explode(';', $polylines_data);
$coordinates = [];

foreach ($points as $point) {
    // 跳过空元素(避免末尾分号导致的无效数据)
    if (empty(trim($point))) continue;
    // 2. 分割经纬度并转为浮点数
    list($lng, $lat) = array_map('floatval', explode(',', $point));
    // 3. 按要求格式存入数组
    $coordinates[] = [$lng, $lat];
}

// 4. 转成JSON字符串输出给前端
echo json_encode($coordinates);

输出结果

上述代码会生成符合前端要求的JSON结构:

[[116.397428,39.90923],[116.407428,39.91923],[116.417428,39.92923]]

特殊格式适配

如果你的$polylines_data是其他格式,只需调整分割逻辑:

  • 若为JSON字符串:直接用json_decode($polylines_data, true)转成数组,再调整经纬度顺序即可
  • 若为其他分隔符(如竖线|):将explode(';', ...)替换为explode('|', ...)即可

内容的提问来源于stack exchange,提问作者Maharlikan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:10:19