我有一个带有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"]];
先谢谢
答案 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'=>
:与上面相同