全部,我有以下代码:
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在发送到客户端之前在服务器上执行。因此,如果您可以做这样的事情:
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()
(这里没有什么麻烦)。
这就是我要做的。希望有帮助!
将数组从PHP传递到JavaScript的简便方法是简单地echo
该数组的json_encode
版本。
$array = array(1,2,3,4,5,6);
echo 'var values = '.json_encode($array).';';
就像回显php值一样简单。new Array(<?php echo $php_lat;?>, <?php echo $php_long;?>, icon0 etc...
我通过此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
?>