如何将mysqli_fetch_all()返回的多维数组转换为LeafletJS可用的数组?
解决方法:将mysqli_fetch_all返回的数组转为LeafletJS可用格式
根据你的需求,这里分两种常见场景给出转换代码:
场景1:转换为Leaflet路径(折线、多边形)用的纯数值二维数组
如果原始数组是索引型结构(每个子数组按顺序存储纬度、经度),使用以下代码:
// 假设$result是mysqli_query执行后的结果集 $rawCoords = mysqli_fetch_all($result, MYSQLI_NUM); // 转成Leaflet兼容的格式:[[纬度, 经度], [纬度, 经度], ...] $leafletCoords = array_map(function($coord) { // 转为浮点型,确保Leaflet能正确解析坐标 return [(float)$coord[0], (float)$coord[1]]; }, $rawCoords); // 输出JSON给前端调用 echo json_encode($leafletCoords);
场景2:转换为Leaflet标记点用的对象数组
如果需要的是带lat/lng键的对象数组(匹配你期望的格式),且原始数组是关联型结构:
$rawData = mysqli_fetch_all($result, MYSQLI_ASSOC); $leafletMarkers = array_map(function($item) { return [ 'lat' => (float)$item['lat'], 'lng' => (float)$item['lng'] ]; }, $rawData); echo json_encode($leafletMarkers);
关键注意事项
- 坐标顺序:Leaflet遵循**[纬度, 经度]**的顺序,不要搞反两者位置。
- 类型转换:数据库返回的坐标通常是字符串类型,必须转为
float,否则Leaflet无法正常渲染。
内容的提问来源于stack exchange,提问作者Harshit Rajput
相关产品推荐
相关产品推荐

