google Maps, RemoveOverlay funktioniert nicht
stiller
- javascript
Hallo
Beim Klick auf ein Marker öffne ich die Infobox und zeichen ein Kreis.
Nun möchte ich beim Schliessen diesen Kreis wieder ausblenden.
Mein Code:
var map;
var lumkreis;
function drawCircle(lat, lng, radius, strokeColor, strokeWidth,
strokeOpacity, fillColor, fillOpacity) {
var d2r = Math.PI/180;
var r2d = 180/Math.PI;
var Clat = radius * 0.014483; // Convert statute miles into degrees latitude
var Clng = Clat/Math.cos(lat*d2r);
var Cpoints = [];
for (var i=0; i < 33; i++) {
var theta = Math.PI * (i/16);
Cy = lat + (Clat * Math.sin(theta));
Cx = lng + (Clng * Math.cos(theta));
var P = new GLatLng(Cy, Cx);
Cpoints.push(P);
}
var polygon = new GPolygon(Cpoints, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity);
lumkreis = map.addOverlay(polygon);
}
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(46.817918027732226, 8.24228669051081), 8);
map.setMapType(G_HYBRID_MAP);
map.setUIToDefault();
var point1 = new GPoint(8.6383103041907,47.6182092440135);
var beck1 = new GMarker(point1);
map.addOverlay(beck1);
GEvent.addListener(beck1, 'click', function() {
beck1.openInfoWindowHtml('<span style="font-size:10px;color:#000000;">Int. Kunden-Nr.: 0<br /><strong>Mr. Been</strong><br />8460 Marthalen<br /><br />Art: Händler<br />Masslieferung seit: 12.6.2010<br />Umsatz: 12,000,000.00<br />Lieferkreis: 150 km</span>');
drawCircle(47.6182092440135,8.6383103041907, 94, "#000080", 1, 0.75, "#0000FF",.5);
});
GEvent.addListener(beck1, 'infowindowclose', function() {
map.removeOverlay(lumkreis);
});
var point2 = new GPoint(10.21268935,46.765501);
var beck2 = new GMarker(point2);
map.addOverlay(beck2);
GEvent.addListener(beck2, 'click', function() {
beck2.openInfoWindowHtml('<span style="font-size: 10px;color:#000000;">Int. Kunden-Nr.: 0<br /><strong>0000 aaaaa</strong><br />8888 Züri<br /><br />Masslieferung seit: 1.1.2011<br />Umsatz: 0.00<br />Lieferkreis: 0 km</span>');
});
GEvent.addListener(beck2, 'infowindowclose', function() {
map.removeOverlay(lumkreis);
});
}
}
Hat jemand eine Ahnung warum das mit map.removeOverlay nicht funktioniert?
Danke für eure Hilfe.
Gruss
Tom
Hallo stiller,
var polygon = new GPolygon(Cpoints, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity);
lumkreis = map.addOverlay(polygon);
map.removeOverlay(lumkreis);
die Referenz auf das Polygon steckt in polygon und nicht in lumkreis, daher removest du nicht das richtige. versuch mal
lumkreis = new GPolygon(Cpoints, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity);
map.addOverlay(lumkreis);
map.removeOverlay(lumkreis);
Gruß, Jürgen
Hallo Jürgen
Danke für deine Antwort.
var polygon = new GPolygon(Cpoints, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity);
lumkreis = map.addOverlay(polygon);map.removeOverlay(lumkreis);
die Referenz auf das Polygon steckt in polygon und nicht in lumkreis, daher removest du nicht das richtige. versuch mal
lumkreis = new GPolygon(Cpoints, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity);
map.addOverlay(lumkreis);map.removeOverlay(lumkreis);
Leider gehts noch nicht. Ich bekomme immer die Meldung "lumkreis is not defined". Kann es irgendwie damit zusammenhängen das die variable nur in der Polygon-Funktion gültig ist? Ich definiere sie aber doch am Anfang mit var lumkreis.
Gruss
Thomas
Hallo stiller,
Leider gehts noch nicht. Ich bekomme immer die Meldung "lumkreis is not defined". Kann es irgendwie damit zusammenhängen das die variable nur in der Polygon-Funktion gültig ist? Ich definiere sie aber doch am Anfang mit var lumkreis.
wahrscheinlich, aber ohne Code oder Link zur Beispielseite kann ich da nichts zu sagen. Kennst du den Unterschied zwischen lokalen und globalen Variablen?
"var x" in einer Funktion macht x zur lokalen Variablen, ohne var wird die Variable im Kontext von "window", also global angelegt.
Gruß, Jürgen
Guten Morgen Jürgen
"var x" in einer Funktion macht x zur lokalen Variablen, ohne var wird die Variable im Kontext von "window", also global angelegt.
Vielen Dank! Du hast mir gerade die Lösung gegeben - ein kleines var weg und es funktioniert. Ich dachte das verhalte sich gleich umgekehrt.
Schönen Tag + Gruss
Stiller