Javascript 在谷歌地图的回调函数中添加多个标记
我试图在谷歌地图上添加几个标记。 但是,只添加了最后一个。这可能是因为删除了引用,但我不知道javascript是如何工作的。我使用Parse来管理我的数据,它的工作原理类似于Backbone.jsJavascript 在谷歌地图的回调函数中添加多个标记,javascript,google-maps,backbone.js,google-maps-markers,parse-platform,Javascript,Google Maps,Backbone.js,Google Maps Markers,Parse Platform,我试图在谷歌地图上添加几个标记。 但是,只添加了最后一个。这可能是因为删除了引用,但我不知道javascript是如何工作的。我使用Parse来管理我的数据,它的工作原理类似于Backbone.js query.find()返回一个包含两个Foo对象的promise对象。我调用buildMarker(因为我在初始化时无法构建标记)和addToMap,但最后只添加了最后一个。 你能解释一下为什么它是这样工作的吗 我向您展示我的代码: 非常感谢,创建标记的代码在哪里?保留一个标记数组并将新标记推入
query.find()
返回一个包含两个Foo对象的promise对象。我调用buildMarker(因为我在初始化时无法构建标记)和addToMap,但最后只添加了最后一个。
你能解释一下为什么它是这样工作的吗
我向您展示我的代码:
非常感谢,创建标记的代码在哪里?保留一个标记数组并将新标记推入其中,而不是重用对象Foo中包含的同一个标记。Foo::buildMarker()设置标记的位置,Foo::addToMap()设置映射。因此,每个标记都存储在“集合”中
promise
。我不想分离标记和Foo对象。。。
$(function(){
var Foo = Parse.Object.extend({
className: "Foo",
initialize: function(){
},
marker: new google.maps.Marker(),
buildMarker: function(){
var pos = this.get("position");
this.marker.setPosition(new google.maps.LatLng(pos.latitude, pos.longitude));
},
addToMap: function(map){
this.marker.setMap(map);
},
removeFromMap: function(map){
this.marker.setMap(null)
}
});
var query = new Parse.Query(Foo);
promise = query.find({
success: function(results){
alert("success : " + results.length);
}
});
promise.then(function(foo){
foo.forEach(function(a){
a.buildMarker();
a.addToMap(map);
});
});
});