2017-10-16 91 views
-1

我有一个MySQL数据库,经纬度和长条目。我试图展示这双拉特作为标记。填充位置javascript var从php

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} ] 

不过我检索lat和长从SQL查询。

如何使用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 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"]]; 

得益于先进

+2

欢迎堆栈溢出。你已经尝试过这么做了吗?请回顾[预计需要多少研究工作?](https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users)。堆栈溢出不是一种编码服务。您需要研究您的问题,并尝试在发布之前亲自编写代码。如果遇到某些特定问题,请返回并包含[最小,完整和可验证示例](https://stackoverflow.com/help/mcve)以及您尝试的内容摘要,以便我们提供帮助。 – cramopy

+0

https://developers.google.com/maps/documentation/javascript/mysql-to-maps – geocodezip

+0

已经尝试过,但我没有成功,位置数组未正确构建。 – manespgav

回答

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'=>节省:相同点以上
+1

@manespgav也增加了深入的解释。 – cramopy