我正在尝试在Google地图中显示标记,但目前还无法正常工作。我正在使用node.js并表达。所以这是我的代码
首先是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()向我显示了具有位置的数组)
这是由同步文件进程引起的。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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句