使用php填充javascript数组

use*_*676 3 javascript php google-maps overlay marker

全部,我有以下几点代码:

function addPoints() {

newpoints[0] = new Array(41.45998, 87.59643, icon0, 'Place', 'Content to open'); 

    for(var i = 0; i < newpoints.length; i++) {
       var point = new GPoint(newpoints[i][1],newpoints[i][0]);
       var popuphtml = newpoints[i][4] ;
       var marker = createMarker(point,newpoints[i][2],popuphtml);
       map.addOverlay(marker);
   }
}
Run Code Online (Sandbox Code Playgroud)

此处还有其他代码可以在我的地图上显示标记.但是这个值是硬编码的.我有一个PHP/mySQL数据库,其中包含纬度/经度坐标以及其他一些值.假设我有三个要为其创建标记的条目.我如何将addPoints函数传递给我从数据库获取的lat/long,以便我可以在此函数中正确使用它?

我将我的代码更新为addPoints的以下内容:

function addPoints(num, lat, long) {
newpoints[num] = new Array(lat, long, icon0, 'Place', 'Stuff name'); 
alert("The newpoints length is: "+newpoints.length);
for(var i = 1; i < newpoints.length; i++) {
    var point = new GPoint(newpoints[i][1],newpoints[i][0]);
    var popuphtml = newpoints[i][4] ;
    var marker = createMarker(point,newpoints[i][2],popuphtml);
    map.addOverlay(marker);
}
}
Run Code Online (Sandbox Code Playgroud)

我通过这样做来调用此函数:

<script> 
    addPoints('<?php echo json_encode($num_coordinates); ?>','<?php echo json_encode($lat_coordinates); ?>', '<?php echo json_encode($long_coordinates); ?>');
</script>
Run Code Online (Sandbox Code Playgroud)

它不起作用.当我尝试不将它传递给javascript并输出lat坐标时.我得到以下输出:

{"1":"40.59479899","2":"41.4599860"}
Run Code Online (Sandbox Code Playgroud)

哪个是我的数组中的正确坐标.虽然没有创建标记.关于下一步做什么或我做错了什么的想法?

Tom*_*rdt 7

将数组从PHP传递到JavaScript的简单而干净的方法就是简单地使用数组echojson_encode版本.

$array = array(1,2,3,4,5,6);
echo 'var values = '.json_encode($array).';';
Run Code Online (Sandbox Code Playgroud)