2016-11-11 6 views
0

Ich versuche, Code aus einer alten Karte in eine neue Karte zusammenzuführen, und ich bekomme den Fehler "Uncaught TypeError: Kann die Eigenschaft 'infoWindow' von undefined nicht festlegen" Diese ZeileUncaught TypeError: Kann die Eigenschaft 'infoWindow' von undefined nicht setzen

polygon.infoWindow = new google.maps.InfoWindow({content: html}); 

Aus diesem Ausschnitt unten. Ich habe infoWindow am Anfang des Skripts definiert, aber zur Kürze nicht enthalten.

geoXml.parseKmlString("<Placemark><name>"+name+"</name>"+kml+"</Placemark>"); 
     var html = "<strong>" + event + "</strong><br>Issued For: " + area + "<br>Expires: " +dtstring; 
     var polygon = geoXml.docs[0].gpolygons[0]; 
     polygon.infoWindow = new google.maps.InfoWindow({content: html}); 

     google.maps.event.addListener(polygon, 'mouseover', function(e) { 
      var latLng = e.latLng; 
       this.setOptions({fillOpacity:0.80}); 
       polygon.infoWindow.setPosition(latLng); 
       polygon.infoWindow.open(map); 
     }); 
+0

Wenn Sie console.log 'polygon' unmittelbar nachdem er erklärt , was bekommst du? – sideroxylon

+0

@sideroxylon danke für die Antwort. Ich bin mir nicht sicher, was genau du fragst. Ich habe die Informationen, die ich in meinem OP gepostet habe, von der Konsole aus gesammelt. Wenn es etwas weiter gibt, bin ich mir nicht sicher, was Sie von mir verlangen, aber Sie können sich die Testkarte ansehen http://stream.dfwstormforce.com/test/map.html – Texan78

+0

Wenn Sie hinzufügen (nach Zeile 521 in Ihrem Code) 'console.log (polygon)', was bekommen Sie in der Konsole? – sideroxylon

Antwort

1

Wenn man sich my example (sieht aus wie in dem der Code kam), würden Sie den gleichen Fehler gesehen haben (ich habe das Beispiel festgelegt). Dies passiert, wenn der Eintrag in der FusionTable, der von der Abfrage zurückgegeben wird, kein Polygon enthält. Der Eintrag in meinem Beispiel ist:

event:Special Weather Statement, expires:2013-05-02T18:00:00-06:00

Sie können defensiv Code nicht das Infofenster erstellen, wenn kein Polygon:

var polygon = geoXml.docs[0].gpolygons[0]; 
if (polygon) { 
    polygon.infoWindow = new google.maps.InfoWindow({content: html}); 
    google.maps.event.addListener(polygon, 'mouseover', function(e) { 
    var latLng = e.latLng; 
    this.setOptions({fillOpacity:0.80}); 
    polygon.infoWindow.setPosition(latLng); 
    polygon.infoWindow.open(map); 
    }); 
    google.maps.event.addListener(polygon, 'mouseout', function() { 
    this.setOptions({fillOpacity:0.35}); 
    polygon.infoWindow.close(); 
    }); 
} else console.log("event:"+event+", expires:"+expires);   
+0

BINGO! Das war es und ja, das war ein Teil deines erstaunlichen Codes, mit dem du mir vor ein paar Jahren geholfen hast. Du mein Freund bist ein Googles Map God! – Texan78

Verwandte Themen