【问题标题】:google maps api v3 not showing markers谷歌地图 api v3 不显示标记
【发布时间】:2014-03-05 07:14:28
【问题描述】:

这是我的代码...

首先我检查数据库...

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

在转换函数中,我调用另一个函数,将数组保存到 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 ] ]

所以我从谷歌地图 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);

这是我尝试显示地图标记的众多方法之一,但它们仍然不会显示。一些帮助将不胜感激

【问题讨论】:

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


    【解决方案1】:

    主要问题是调用

    var markers = readMonActual().myCoords;
    

    应该是

    var markers = readMonActual();
    

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

    并且marker 数组的定义在for 循环前面丢失:

    var marker = [];
    

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

    【讨论】:

    • 还是不行。我以为我没有得到位置,所以我尝试创建一个 div 来打印那里的位置,但 div 甚至不会出现。并且警报不会带来任何东西..
    • 我现在明白了。问题是我没有正确导入 .js 文件,我正在尝试但调试器仍然说它找不到该文件。看,我正在使用 node 的 express 框架。在我的项目目录中,我有以下文件夹:-views(它是框架的一部分)。 -custom_modules(我创建的)。我必须将 custom_modules 文件夹中的 js 文件加载到视图中的 .html 文件中。但这不起作用。
    • 基本上我需要从'project/views/map.html'调用'project/custom_modules/files.js'
    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 2013-01-30
    相关资源
    最近更新 更多