【问题标题】:Google Maps Api markers array node.jsGoogle Maps Api 标记数组 node.js
【发布时间】:2014-03-03 22:52:03
【问题描述】:

我正在尝试传递一个将数组带入谷歌地图 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});
      });
}

function initialize() {
          //var location = new google.maps.LatLng(10.191, -68.191);
        var mapOptions = {
          center: new google.maps.LatLng(10.191, -68.191),
          zoom: 8,

        };
        var map = new google.maps.Map(document.getElementById("map-canvas"),
            mapOptions);

        marker = new google.maps.Marker({
            position: buscarCoords(function(resultsObject){
                        new google.maps.LatLng(ConvertFromGrdToGoogle(resultsObject.result).LtLn);
                      }),
            map: map
        });

      }

在这段代码中,ConvertFromGrdToGoogle 是一个函数,正如它所说,它将数据转换为谷歌可以接受的格式。它可以像这样工作并返回坐标:

[ '10.1850, -68.334',
  '10.1850, 68.334',
  '10.1853, -68.334',
  '10.1853, -68.334' ]

现在的问题是,即使加载了地图,它也不会显示标记。

【问题讨论】:

  • A google.maps.LatLng 将两个数字作为其参数。不是带有逗号的字符串(或此类字符串的数组)。

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


【解决方案1】:

当您从数据库中获取数据时,您需要创建标记,此代码应该适合您,您可以看到在 http://jsfiddle.net/victorv977/vX3Lc/ 上工作:

function initialize() {
//var location = new google.maps.LatLng(10.191, -68.191);
var mapOptions = {
    center: new google.maps.LatLng(10.191, -68.191),
    zoom: 8
 };

var map = new google.maps.Map(document.getElementById("map-canvas"),
                              mapOptions);

buscarCoords(function(resultsObject) {
    var coordsArray = ConvertFromGrdToGoogle(resultsObject.result);
    for (var i = 0; i < coordsArray.length; i++) {
        var coords = coordsArray[i].split(", ");
        new google.maps.Marker({
            position: new google.maps.LatLng(parseFloat(coords[0]), parseFloat(coords[1])),
            map: map
        });
    };

});
}

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

【讨论】:

  • 你在那里做的很棒,实际上我真的认为它会起作用,但它仍然没有:S
  • 地图加载和一切,但它仍然不会显示标记
  • 我确定问题在于标记来自回调函数“buscarCoords”内部,因此初始化函数不会读取它们。太糟糕了,我对范围太生疏了......而且我不知道我是否可以从外部调用回调内部的变量
  • 嗨,我只是用硬编码值为你做了一个小提琴jsfiddle.net/victorv977/vX3Lc,希望对您有所帮助。
  • 那会很好用......还有一个问题......我正在使用 express for node.js,如何从'project/views/index.html' 中的 html 视图?我需要这样做才能调用最终返回数组的函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
  • 2013-05-02
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
相关资源
最近更新 更多