我正在尝试在谷歌地图中显示标记,但它还没有工作。我正在使用node.js和express。 所以这是我的代码
首先是javascript函数,它从文件中读取一组位置,并转换整个脚本
var readMonActual = function(){
var coordsArray=fs.readFileSync("grd2google.txt", "utf8");
var coordsArray=coordsArray.substring(1,coordsArray.length-1);
var myCoords=[];
data=coordsArray.split(',');
for (var i=0;i<data.length;i+=3){
myCoords.push([
Number(String(data[i]).replace(/\'/g, "")),
Number(String(data[i+1]).replace(/\'/g, "")),
Number(String(data[i+2]).replace(/\'/g, ""))
]);
}
//return {myCoords:myCoords};
return myCoords;
}
然后是html文件中的函数
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(10.191, -68.192),
zoom: 7,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map-canvas"),mapOptions);
var markers=readMonActual(); //<- this returns as undefined
var marker = new Array();
for(i=0; i< markers.length; i++ ) {
var position = new google.maps.LatLng(parseFloat(markers[i][1]), parseFloat(markers[i][2]));
new google.maps.Marker({
position: position,
map: map,
title: String(markers[i][0])
});
}
}
google.maps.event.addDomListener(window, 'load', initialize);
地图加载,.js脚本加载,但它仍然没有显示标记,因为包含数组的变量返回空白(即使readMonActual函数的console.log()显示我的数组位置)
答案 0 :(得分:0)
这是由同步文件进程引起的。 initialize
尝试使用尚未返回的数据。我已经将函数简化了一点以节省一些空间。简而言之,将回调函数传递给readMonActual
,这将在文件处理完成后返回标记。
function initialize() {
// rest of codecode
// pass in a callback to readMonActual
readMonActual(function (markers) {
for(i=0; i< markers.length; i++ ) {
// do loop
}
});
}
var readMonActual = function (callback) {
var coordsArray=fs.readFileSync("grd2google.txt", "utf8");
var coordsArray=coordsArray.substring(1,coordsArray.length-1);
var myCoords=[];
// the rest of the code
// return the markers via the callback
callback(myCoords);
}