我正在尝试学习如何使用Node.js从Mongodb加载Google地图标记的位置。我设法从数据库和console.log中检索位置。我在节点模块中定义了一个变量,所以我可以在我的谷歌地图脚本中直接引用它,我也尝试在这个问题中使用答案(How can I add markers to Google Maps using Node.js/Express/MongoDB?),但我不想让它们在在页面正文中,我想直接将变量用作标记在谷歌地图脚本中的位置,但地图不会显示任何内容。 这是我app.js中的代码
var data = require ("./public/assets/js/data.js");
app.get('/test', function(req, res){
console.log (data)
res.render('ViewMode');
});
这是我的data.js文件:
var mongoose = require ('mongoose');
var data = new Array();
mongoose.model('stories').find({},function(err, companies) {
for (var i = 0; i < companies.length; i++) {
data[i] = JSON.stringify(companies[i].location);
}
});
module.exports = data;
这是我的Google地图脚本:
<script src="assets/js/data.js"></script>
<script>
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var mapOptions = {
center: new google.maps.LatLng(53.467216, -2.233701),
disableDoubleClickZoom: true,
zoom: 15,
};
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var markers = [];
for (var i = 0; i < 100; i++) {
var location = data[i];
var latLng = new google.maps.LatLng(location);
var marker = new google.maps.Marker({
position: latLng
});
markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
如果你告诉我哪里做错了,我真的很感激。 感谢
答案 0 :(得分:0)
因此,如果您的数据数组如下所示:
[
'"(53.464111624815494, -2.2338683903217316)"',
'"(53.46692188087774, -2.2315509617328644)"',
'"(53.46413717343583, -2.2330529987812042)"',
'"(53.4639838814831, -2.235284596681595)"',
'"(53.464034978862195, -2.232538014650345)"',
'"(53.466385391816004, -2.2270019352436066)"'
]
然后每个位置实例看起来像(包括"
个字符):
"(53.464111624815494, -2.2338683903217316)"
因此,您需要解析该字符串中的各个纬度和经度值。我尝试过类似的事情:
<script>
var data = [
'"(53.464111624815494, -2.2338683903217316)"',
'"(53.46692188087774, -2.2315509617328644)"',
'"(53.46413717343583, -2.2330529987812042)"',
'"(53.4639838814831, -2.235284596681595)"',
'"(53.464034978862195, -2.232538014650345)"',
'"(53.466385391816004, -2.2270019352436066)"'
];
for (var i = 0; i < data.length; i++) {
var mylocation = data[i];
var lat = mylocation.replace(/^\"\(([0-9-.]*),.*/g, "$1");
var lng = mylocation.replace(/.*,\s*([0-9-.]*)\)\"$/g, "$1");
var latLng = new google.maps.LatLng(lat, lng);
}
</script>
注意:我也非常谨慎使用名为location
的变量 - 这可能会导致混淆并可能与location object发生冲突。