【发布时间】:2014-04-07 16:55:27
【问题描述】:
我正在使用从数据库中提取的一组坐标在 Google 地图上绘制多边形。
- map.php 从数据库中提取坐标
- scripts.js 在文档就绪时创建地图并存储所有地图配置选项
边界坐标字符串示例:
[52.6294414232, 1.28337337354], [52.6294108159, 1.28350410559], [52.6293577844, 1.28347057106], [52.6292373999, 1.28391974753], [52.6293340783, 1.28400089488], [52.6292540937, 1.28429051171], [52.6292088096, 1.28430189851], [52.6291929061, 1.2842268041], [52.6291753654, 1.28421070907], [52.6291251702, 1.28439909373], [52.6289228389, 1.28423612589], [52.6289538563, 1.28409064607], [52.628795581, 1.28396054235], [52.6288674082, 1.28364075593], [52.628946546, 1.28370580721], [52.6289763352, 1.28360457624], [52.6290289574, 1.2836528604], [52.6290693582, 1.28349330243], [52.6291215713, 1.2835563364], [52.6292403179, 1.28316615953],
我知道坐标字符串是有效的,因为当我手动将其输入到地图 javascript 中时,多边形显示正确。
我将坐标字符串存储在 PHP 变量 $boundary 中,然后尝试将其传递给 javascript,在 map.php 中使用以下内容:
<script>
var boundary = <?php echo $boundary ?>;
</script>
在 scripts.js 中使用 console.log(boundary) 在控制台中正确记录坐标字符串 - 这意味着可以从 js 文件访问该变量 - 但地图不会绘制多边形并出现“Uncaught InvalidValueError: at index 0:不是 LatLng 或 LatLngLiteral:不是对象”。
但是,如果我将所有的scripts.js 放在map.php 中并用脚本标签包裹,那么<?php echo $boundary ?>,多边形就会完美呈现。这表明将变量从 PHP 传递到 javascript 是导致问题的原因。
我已经尝试使用
清理输出var boundary = <?php echo json_encode($boundary) ?>;
但没有成功。
任何人都可以建议一种传递此坐标字符串的方法,该方法将在地图 javascript 中正确呈现吗?
【问题讨论】:
标签: javascript php google-maps