我正试图使用数据库中的postalcodes在谷歌地图中放置标记。我将php-arry提取到javascript数组中,如下所示:
var js_array = [<?php echo '"'.implode('","', $postal).'"' ?>];
var postal = new Array();
var postcodes = new Array();
for (var i=0;i<js_array.length;i++){
postal[i] = "'"" + js_array[i] + "'"";
}
var postcodes = "[" + postal + "]";
alert(postcodes.length);
数据库中只有2个邮政编码。但它显示我19岁。构造javascript数组有什么错误吗?
我用这个在谷歌地图上放标记:
map.setCenter(new GLatLng(43.65, -79.38),5);
for (i = 0; i < postcodes.length; i++) {
geocoder.getLatLng(postcodes[i] + ', CANADA', function (point) {
if (point) {
map.addOverlay(new GMarker(point));
}
});
}
这可以在地图上找到合适的标记吗?
谢谢。
使用json_encode()
构建数组:
var js_array = <?php echo json_encode($postal) ?>;
我真的不知道你想用这个做什么:
var postcodes = "[" + postal + "]";
您已经将postal
定义为数组。你为什么要在它周围加方括号?我想你可以删掉那行。
事实上,你的整个循环看起来没有必要。为什么要在值周围加双引号?杀死所有这些。只需:
var postcodes = <?php echo json_encode($postal) ?>;
alert(postcodes.length);
执行此操作时:
var postcodes = "[" + postal + "]";
你正在创建一个字符串。你看到的长度是字符串的长度,而不是数组的长度。
我不认为你得到的是数组的长度,实际上是字符串的长度。
var postcodes = "[" + postal + "]";
重新键入"var"将重置最初设置的变量。尝试删除它。
var js_array = [<?php echo '"'.implode('","', $postal).'"' ?>];
var postal = new Array();
var postcodes = new Array();
for (var i=0;i<js_array.length;i++){
postal[i] = "'"" + js_array[i] + "'"";
}
postcodes = "[" + postal + "]";
alert(postcodes.length);