我是新来的,我有一个小问题......好吧,我不知道到底有什么问题,所以我希望你能给我一些线索。我希望不要厌烦你,让我们开始吧。
我制作了一个原型“类方法”(使用this)。它运作得很好。
然后,我开始像这样编写我的GoogleMap“Class”
var map = Class.extend({
init: function(){
this.mystyles = [
{
featureType: "all",
elementType: "labels",
stylers: [
{
visibility: "off"
}
]
}
];
this.myoptions= {
zoom: 12,
disableDefaultUI: true,
center: new google.maps.LatLng(10.24462, -67.59374199999999),
mapTypeId: google.maps.MapTypeId.ROADMAP,
styles: this.mystyles
}
this.markerSucursal = new Array();
this.infoWindow = new Array();
},
initializeMap: function(divElemento){
this.objMap = new google.maps.Map(divElemento,this.myoptions);
},
preloadMarkers: function(jsonArray){
for(var k in jsonArray) {
var localizacion= new google.maps.LatLng(jsonArray[k].coordenada_x,jsonArray[k].coordenada_y);
var marker= new google.maps.Marker({
position: localizacion,
map: this.objMap
})
this.markerSucursal[k] = marker;
}
},
createDialogs: function(jsonArray){
for(var k in jsonArray) {
var marker = this.markerSucursal[k];
var contentDialog = "<div><p><strong>Testing testing</strong></p></div>"
var infowindow = new google.maps.InfoWindow({
content : contentDialog
})
google.maps.event.addListener(marker, "click", function() {
infowindow.open(this.objMap,marker)
})
this.infoWindow[k] = infowindow
}
}});
显示地图[检查]
显示标记[检查]
点击[]
显示信息窗口这里有什么问题?如果您需要更多信息或代码,请告诉我。
答案 0 :(得分:0)
好的,明白了...我对这个凌乱而愚蠢的问题感到非常抱歉,但我让一切都运转了......
问题是我正在google.maps.event.addListener函数内部的“this”中反复...在内部函数内部,我无法引用父函数方法(如this.objmap或this。 markerSucursal)。不要忘记我在调用google.map对象之前在原型方法内编码
仅仅是为了记录,我自己(以及其他所有有此问题的人)的回答是这样的(我只会展示createDialog和preloadMarkers方法)
preloadMarkers: function(jsonArray){
var objMap = this.objMap // the initializeMap method sets this object
for(var k in jsonArray) {
var localization= new google.maps.LatLng(jsonArray[k].coordenada_x,jsonArray[k].coordenada_y);
var marker= new google.maps.Marker({
position: localizacion,
map: objMap
})
this.markerSucursal[k] = marker;
}
},
createDialog: function(jsonArray){
for(var k in jsonArray) {
var marker = this.markerSucursal[k]
var objMap = this.objMap
contentDialog = "<div> <p>testing testing</p> </div>"
var infowindow = new google.maps.InfoWindow({
content: contentDialog
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(objMap,marker);
});
}
}
就是这样......就像魅力一样:)
再次,非常感谢阅读,抱歉委内瑞拉的英语和问候很糟糕!