簡體   English   中英

谷歌地圖API v3不顯示標記

[英]google maps api v3 not showing markers

所以這是我的代碼...

首先,我檢查數據庫...

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

然后,我有一個回調函數,該函數基本上調用了另一個函數,該函數會將數據轉換為google maps 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 ] ]

所以我從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);

這是我嘗試顯示地圖標記的許多方法之一,但它們仍然不會顯示。 一些幫助將不勝感激

主要問題是通話

var markers = readMonActual().myCoords;

它應該是

var markers = readMonActual();

您正在從函數返回數組。

並且for循環前面缺少marker數組的定義:

var marker = [];

在jsBin檢查示例 函數readMonActual()更改為僅返回正確的結果。 我無法測試數據庫部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM