我正在使用PHP从MySQL读取数据。然后,我尝试在OpenLayer地图上使用同一HTML将这些数据传递给下面的JS。我尝试了包括json_encode在内的各种方法,但似乎无法传递有效数据。当我在JS中手动设置数据时,它工作正常。我的代码在做什么错?有没有首选的方法?
<html lang="en">
.map { 边距:0; 填充:0; 高度:100%; 宽度:100%; } OnTRack用户跟踪
<?php
// ... Other database code removed for example...
$rowlon = 151.215324;
$rowlat = -33.856733;
?>
<div id="map" class="map"></div>
<script type="text/javascript">
// var latestlon = <?php echo $rowlon; ?>;
// var latestlat = <?php echo $rowlat; ?>;
var latestlon = "<?php echo json_encode($rowlon) ?>";
var latestlat = "<?php echo json_encode($rowlat) ?>";
// var latestlon = 151.215324;
// var latestlat = -33.856733;
var mycoords = [latestlon, latestlat];
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: ol.proj.fromLonLat(mycoords),
zoom: 12
})
});
</script>
答案 0 :(得分:3)
var latestlon = <?=$rowlon?>;
var latestlat = <?=$rowlat?>;
这里不需要双引号,尤其是json _ *
如果它不起作用,那么您可能在做其他错误,请检查浏览器控制台中是否有错误。
答案 1 :(得分:1)
这可能是由于以下原因
原因-1
var latestlon = "<?php echo json_encode($rowlon) ?>"; // Type = String
var latestlat = "<?php echo json_encode($rowlat) ?>"; // Type = String
通过删除双引号将JS变量更改为 type 号
var latestlon = <?php echo json_encode($rowlon) ?>; // Type = Number
var latestlat = <?php echo json_encode($rowlat) ?>; // Type = Number
原因-2
请检查您是否正在使用php文件扩展名
仅供参考:由于该值不是数组,因此不必使用json_encode。
我希望这会有所帮助。