2015-11-04 20 views
1

目前我省座標對該格式的多邊形到數據庫:如何存儲和再利用傳單LatLngs在數據庫

[52.32527, 12.99683],[52.32191, 13.76587],[52.45936, 13.79333],[52.68637, 13.39233],[52.69636, 13.03528] 

後來我取從數據庫中的多邊形組成的數組,所以我有一些像$polygon_array[$key]['coordinates']哪裏latlngs是一個字符串。

隨着PHP增加多邊形繪製的作品:

<script> 
<?php 
    $coords = $polygon_array[$key]['coordinates']; 
    echo "L.polygon([$coords]).addTo(map);"; 
?> 
</script> 

但添加到地圖,而PHP不工作既不拋出一個錯誤:

<script> 
var polygon_array = JSON.parse('<?php echo json_encode($polygon_array); ?>'); // transfer PHP Array to Javascript 

jQuery.each(polygon_array, function (index, value) { 
    coords = polygon_array[index]['coordinates']; 
    L.polygon([coords]).addTo(map); 
}); 
</script> 

我認爲這個問題是使用Javascript處理繩子作爲字符串。

我的問題:如何使用有效的latlngs參數從數據庫中的條目? 是不是有一種簡單的方法來使用上面的格式?

回答

1

你可能正確地認爲你的coords變量仍然是一個字符串。

你或許應該只是再次轉換成一組La​​tLng座標:

var coordsArray = JSON.parse("[" + coords + "]"); 
L.polygon(coordsArray).addTo(map); 
+0

這真的有效!但我不知道爲什麼我必須引用括號!? – MaggusK

+1

您知道'JSON.parse'接受一個字符串作爲參數,並且這些字符串用JS和PHP中的引號表示。這裏就像'JSON.parse(「[」+「[lat1,lng1],[lat2,lng2],...」+「]」);'因爲'coords'仍然是一個字符串。你可以用'json_decode'完成與PHP完全相同的操作。看起來你的'$ coords'變量只是將你的數據庫記錄的內容保存爲純文本。這也是爲什麼'echo「L.polygon([$ coords])。addTo(map);」;'確實有效,因爲'$ coords'是文本'echo'對此很滿意。 – ghybs