我正在尝试使用我的数据库中的邮政编码将标记放入谷歌地图中。 我将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));
}
});
}
可以在地图上找到合适的标记吗?
感谢。
答案 0 :(得分:2)
使用json_encode()
构建数组:
var js_array = <?php echo json_encode($postal) ?>;
我真的不知道你在尝试做什么:
var postcodes = "[" + postal + "]";
您已将postal
定义为数组。你为什么试图在它周围放上方括号?我想你可以删除那一行。
事实上,你的整个循环看起来没必要。为什么要在价值观附近加上双引号?杀掉所有这一切。只是做:
var postcodes = <?php echo json_encode($postal) ?>;
alert(postcodes.length);
答案 1 :(得分:0)
执行此操作时:
var postcodes = "[" + postal + "]";
你正在创建一个字符串。您看到的长度是该字符串的长度,而不是数组的长度。
答案 2 :(得分:0)
我认为你没有获得数组的长度,但实际上是一个字符串,在这里。
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);