使用php填充javascript数组

问题描述 投票:3回答:4

全部,我有以下代码:

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);
   }
}

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

我更新了代码,使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);
}
}

我通过执行此操作来调用此功能:

<script> 
    addPoints('<?php echo json_encode($num_coordinates); ?>','<?php echo json_encode($lat_coordinates); ?>', '<?php echo json_encode($long_coordinates); ?>');
</script>

虽然不起作用。当我尝试不将其传递给javascript并仅输出lat坐标时。我得到以下输出:

{"1":"40.59479899","2":"41.4599860"}

哪个是我数组中的正确坐标。但是不会创建任何标记。关于下一步或我做错了什么的想法?

php javascript google-maps overlay marker
4个回答
3
投票

PHP在发送到客户端之前在服务器上执行。因此,如果您可以做这样的事情:

newpoints[0] = new Array(<?php echo $lattitude;?>, <?php echo $longitude;?>, icon0, 'Place', 'Content to open');

$lattitude$longitude是使用PHP从数据库中拉出的值。

当客户端请求此页面时,将执行您的php代码,在这些php标签使它看起来像您提供的示例的位置插入真实值,然后将其发送给客户端。

[如果您想在客户端上使用JS更改这些值,或从服务器获取新值,请告诉我,我将添加一个示例。

编辑:

好的,根据您的评论,听起来您有几种选择。这是一个:

[当用户选择类别(餐厅,酒吧等)时,您将该类别作为url参数传递,并重新加载整个页面或页面的一部分(取决于您的设置,但可能值得调查)。您的链接看起来像这样:

http://www.your-domain-here.com/maps.php?category=bars

Maps.php已准备好使用$_GET数组捕获类别:

$category = $_GET['category']; //'bars'

然后您的php从数据库中获取了适当的位置数据(我将留给您),并将其粘贴到一个变量中,您的JS控制的地图将可以使用该变量:

//JS in maps.php  -  you could add this var to the window object
// if you have separated js files...
var locationCoords = <?php echo json_encode($arrayOfCoordinatesFromDB);?>;

当页面在客户端计算机上加载时,它现在可以在locationCoords变量中准备好要用于地图的坐标数组。

然后,根据您需要在地图上显示的坐标,使用标准Javascript将它们作为参数传递给addPoints()(这里没有什么麻烦)。

这就是我要做的。希望有帮助!


7
投票

将数组从PHP传递到JavaScript的简便方法是简单地echo该数组的json_encode版本。

$array = array(1,2,3,4,5,6);
echo 'var values = '.json_encode($array).';';

1
投票

就像回显php值一样简单。new Array(<?php echo $php_lat;?>, <?php echo $php_long;?>, icon0 etc...


0
投票

我通过此javascript数组初始化制作了动态横幅。当javascript嵌入在php中时,效果很好。

    <?php
      // This is our php array with URLs obtained from the server
      $urlsPHP = ["img/img01.jpg","img/img02.jpg","img/img03.jpg"];

      return = "
        //...Some HTML...

        <script type='text/javascript'>

        // Now we use this inside the javascript
        var urlsJavaScript = ".stripslashes(json_encode($urlsPHP)).";

        //...Some javascript style to animate the banner...
        </script>
      ";


      // if we print this:
      echo stripslashes(json_encode($urlsPHP));
      // We obtain:
      // ["img/banner/bak01.jpg","img/banner/bak02.jpg","img/banner/bak03.jpg"]
      // This is a good syntax to initialize our javascript array


      // if we print this:
      echo json_encode($urlsPHP);
      // We obtain:
      // ["img\/banner\/bak01.jpg","img\/banner\/bak02.jpg","img\/banner\/bak03.jpg"]
      // This is not a good syntax to initialize our javascript URLs array
?>
© www.soinside.com 2019 - 2024. All rights reserved.