3

所有,我有以下代码:

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 并仅输出纬度坐标时。我得到以下输出:

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

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

4

4 回答 4

7

将数组从 PHP 传递到 JavaScript 的一种简单而干净的方法是简单地传递数组echojson_encode版本。

$array = array(1,2,3,4,5,6);
echo 'var values = '.json_encode($array).';';
于 2011-11-29T18:54:27.657 回答
3

PHP 在发送到客户端之前在服务器上执行。因此,如果您可以执行以下操作:

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

您使用 PHP 从数据库中提取的值在哪里$lattitude和是什么。$longitude

当客户端请求此页面时,您的 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变量。

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

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

于 2011-11-29T18:52:53.227 回答
1

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

于 2011-11-29T18:52:03.850 回答
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
?>
于 2020-03-10T08:29:09.030 回答