2017-10-16 39 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