谷歌地图api v3没有显示标记

时间:2014-02-07 18:28:43

标签: javascript node.js google-maps google-maps-api-3 google-maps-markers

所以这是我的代码......

首先,我检查数据库...

function buscarCoords(callback){
      var result = result;
      connection.query('SELECT * FROM monitoreo_actual', function(err, result){
        if(err){
          console.log(err);
        }
        callback({result:result});
      });
}

然后我有一个回调函数,基本上调用另一个函数,将数据转换为谷歌地图latLng格式(我知道太多功能,我将在以后修复)

database.buscarCoords(function(resultsObject){
    convert.ConvertFromGrdToGoogle(resultsObject.result);
});

在convert函数内部,我调用另一个将数组保存到txt文件的函数

function ConvertFromGrdToGoogle(grd){
........
files.saveMonActual(JSON.stringify(arrCoords));
}

这是保存到文件的功能

var saveMonActual = function(grd){
  fs.writeFile("grd2google.txt", grd, 'UTF-8', function(err) {
    if(err) {
      console.log(err);
    } else {
      console.log("=> grd2google.txt actualizado con las coordenadas convertidas a Google");
    }
  });
}

输出的一个例子

"'2','10.1850','-68.334','4','10.1850','68.334','3','10.1853','-68.334','5','10.1853','-68.334'"

最后但并非最不重要的是我有一个函数来读取数据并从不必要的引号和单引号中删除它。

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;
}

这将是该函数的console.log

[ [ 2, 10.185, -68.334 ],
  [ 4, 10.185, 68.334 ],
  [ 3, 10.1853, -68.334 ],
  [ 5, 10.1853, -68.334 ] ]

所以我从google maps html文件标签中的initialize()调用该函数

function initialize() {
  var mapOptions = {
    center: new google.maps.LatLng(10.191, -68.191),
    zoom: 7,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("map-canvas"),mapOptions);
  var markers = readMonActual().myCoords;
  for(i=0; i<markers.length; i++ ) {
    var position = new google.maps.LatLng(Number(markers[i][1]), Number(markers[i][2]));
    //bounds.extend(position);
    marker = new google.maps.Marker({
             position: position,
             map: map,
             title: String(markers[i][0])
             });
  }
}
 google.maps.event.addDomListener(window, 'load', initialize);

这是我尝试显示地图标记的众多方法之一,但它们仍然无法显示。非常感谢一些帮助

1 个答案:

答案 0 :(得分:0)

主要问题是电话

var markers = readMonActual().myCoords;

应该是

var markers = readMonActual();

您正在从函数返回一个数组。

marker循环前面缺少for数组的定义:

var marker = [];

检查example at jsBin。函数readMonActual()被更改为仅返回正确的结果。我无法测试数据库部分。