2012-07-12 101 views
0

我在這裏是新的,所以我有一個律問題...關於...好吧,我不知道這到底是什麼問題,所以我希望你能給我一些線索。我希望不要讓你厭煩,所以我們開始吧。一些原型與谷歌地圖infowindow

我製作了一個原型「類方法」(使用this)。它完美的作品。

然後,我開始喜歡這個

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 
    } 
}}); 

編寫我的GoogleMap的 「類」 顯示在地圖[檢查]

顯示標記[檢查]

顯示在信息窗口點擊[]

這裏有什麼問題?如果您需要更多信息或代碼,請告訴我。

+0

JavaScript控制檯中的任何錯誤? – 2012-07-12 04:42:38

+0

nop,什麼都沒有......一切都清楚了 – drakezilla 2012-07-12 15:35:03

+0

好吧,經過loooooooong午睡,我已經注意到,點擊偵聽器不工作......我會盡量讓它工作,可能是主要問題 – drakezilla 2012-07-12 16:05:18

回答

0

好,我知道......我對混亂和愚蠢的問題真的很抱歉,但我做的一切工作......

的事情是,我是reffering上下文「這個」內google.maps.event.addListener函數...在內部函數中,我無法引用父函數方法(如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); 
     }); 
    } 
} 

而這就是它......就像魅​​力:)

再次感謝很多關於閱讀,對不起,我的英語不好和問候來自委內瑞拉!