将Java Servlet返回的JSON经纬度数据存入JavaScript列表
解决方案
没问题,我来帮你搞定这个需求!首先先提个小细节:你代码里的MaxLat不小心写成了${object.maxlon},得改成${object.maxlat},不然获取的纬度值会错成经度,影响后续地图绘制哦。
接下来给你两种实用的方法,把经纬度存入JavaScript列表:
方法1:直接注入JSTL变量到JS数组
这种方法适合只需要提取这几个经纬度字段的场景,直接把JSTL输出的值写入JavaScript数组:
// 初始化存储经纬度的列表,每个元素是[纬度, 经度](适配多数地图库的坐标顺序) const coordinates = []; // 添加最小经纬度坐标 coordinates.push([<c:out value="${object.minlat}"/>, <c:out value="${object.minlon}"/>]); // 添加最大经纬度坐标(注意这里已经修正了MaxLat的变量错误) coordinates.push([<c:out value="${object.maxlat}"/>, <c:out value="${object.maxlon}"/>]);
之后你就可以用coordinates列表来给地图绘制边界或者标记点了,比如Leaflet里的L.polygon(coordinates)这类方法。
方法2:将整个JSON转为JS对象后提取字段
如果后续可能用到JSON里的其他字段,这种方法更优雅,直接把完整的JSON数据转为JavaScript对象,再按需提取:
<script> // 把JSTL中的JSON字符串解析为JavaScript对象 const mapData = JSON.parse('<c:out value="${json}"/>'); // 初始化经纬度列表 const coordinates = []; // 从JS对象中提取经纬度并添加到列表 coordinates.push([mapData.minlat, mapData.minlon]); coordinates.push([mapData.maxlat, mapData.maxlon]); </script>
注意事项
<c:out>标签会自动转义JSON里的特殊字符(比如引号、斜杠),所以用JSON.parse解析是安全的,不会出现语法错误。- 确认JSON里的字段名和你使用的一致(比如是
minlon还是minLon,大小写要对应),否则会获取到undefined。
内容的提问来源于stack exchange,提问作者kieron
相关产品推荐
相关产品推荐

