从php填充位置javascript var

时间:2017-10-16 17:39:33

标签: javascript php mysql arrays google-maps-api-3

我有一个带有lat和long条目的MySQL数据库。我试图将这对lat作为标记。

谷歌地图的位置javascript为:

var locations = [{lat: 36.53256989, lng: -6.29461908},
{lat: 36.76487732, lng: -5.77446127},
{lat: 36.50241470, lng: -6.27566910},
{lat: 36.53186417, lng: -6.29524183},
{lat: 40.42653275, lng: -3.70984125},
{lat: 52.24983978, lng: 21.00909996} ]

但我从SQL查询中检索lat和long。

如何使用json_enconde填充此位置变量,我应该如何在php数组中构建它?

编辑:

我尝试过这样的事情:

 <script>
    <?php
    $sql = "SELECT name, lat, lon FROM restaurants";
    $result = mysqli_query($conn, $sql);
    $labels = [];
    $locations = [];
    while($row = $result->fetch_array())
    {
        $labels[] = $row['name'];
        $locations[] = array($row['lat'], $row['lon']);
    }
    ?>
  var labels = <?php echo json_encode($labels);?>;
  var locations = <?php echo json_encode($locations);?>;
</script>

但是这个程序给出的javascript var位置是这样的:

var locations = [["36.53256989","-6.29461908"],["36.76487732","-5.77446127"],["36.50241470","-6.27566910"],["36.53186417","-6.29524183"],["40.42653275","-3.70984125"],["52.24983978","21.00909996"]];

先谢谢

1 个答案:

答案 0 :(得分:1)

您必须更改语法才能获得预期的结果。你必须改变

array($row['lat'], $row['lon'])

(object)array(
    'lat' => floatval($row['lat']),
    'lng' => floatval($row['lon'])
)

说明:

  • 为什么(object):你之前提供了一个数组(在json []中),但在结果中你希望它作为一个对象(在json {}中)。只需键入将其转换为对象即可。
  • 为什么floatval:您之前将值设为string,但您希望将其设为double / float。只需使用给定的解析方法。
  • 为什么'lat'=>:您的结果对象应该包含密钥lat,因此您必须将数据保存在密钥lat
  • 为什么'lng'=>:与上面相同