0

因此,这里是我的代码...谷歌地图API V3没有显示标记

首先我检查数据库...

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

这将是谷歌的该功能

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

因此,我调用的初始化(即功能)的映射的console.log HTML文件的标签

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

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

回答

0

的主要问题是调用

var markers = readMonActual().myCoords; 

应该

var markers = readMonActual(); 

您正在返回从功能的阵列。

而且数组的定义for循环的前丢失:

var marker = []; 

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

+0

它仍然不起作用。我以为我没有得到的位置,所以我试图创建一个div来打印位置,但该div甚至不会出现。并警报不会带来任何东西.. – arrigonfr

+0

我现在看到。问题是我没有正确导入.js文件,而且我正在尝试,但调试器仍然说它无法找到该文件。 看到,我使用节点的快速框架。并在我的项目目录中,我有,其中,这些文件夹: -views(这是框架的一部分)。 -custom_modules(我创建的)。 我必须将位于custom_modules文件夹中的js文件加载到视图中的.html文件中。但这不起作用。 arrigonfr

+0

基本上我需要从'project/views/map.html'中调用'project/custom_modules/files.js' – arrigonfr