From 45a64bcccf7fb4d9df56f23e1a3fc2df5d3e5058 Mon Sep 17 00:00:00 2001 From: Hans Kristian Flaatten Date: Thu, 21 Feb 2013 22:03:20 +0100 Subject: [PATCH] Fixes #80 when adding markers over polygons --- src/draw/handler/Draw.Marker.js | 35 +++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/src/draw/handler/Draw.Marker.js b/src/draw/handler/Draw.Marker.js index 690e0dcad..9ddf3ab8d 100644 --- a/src/draw/handler/Draw.Marker.js +++ b/src/draw/handler/Draw.Marker.js @@ -20,7 +20,27 @@ L.Draw.Marker = L.Draw.Feature.extend({ if (this._map) { this._tooltip.updateContent({ text: 'Click map to place marker.' }); - this._map.on('mousemove', this._onMouseMove, this); + + // Same mouseMarker as in Draw.Polyline + if (!this._mouseMarker) { + this._mouseMarker = L.marker(this._map.getCenter(), { + icon: L.divIcon({ + className: 'leaflet-mouse-marker', + iconAnchor: [20, 20], + iconSize: [40, 40] + }), + opacity: 0, + zIndexOffset: this.options.zIndexOffset + }); + } + + this._mouseMarker + .on('click', this._onClick, this) + .addTo(this._map); + + this._map + .on('mousemove', this._onMouseMove, this) + .on('zoomend', this._onZoomEnd, this); } }, @@ -36,15 +56,22 @@ L.Draw.Marker = L.Draw.Feature.extend({ delete this._marker; } - this._map.off('mousemove', this._onMouseMove); - } + this._mouseMarker.off('click', this._onClick); + this._map.removeLayer(this._mouseMarker); + delete this._mouseMarker; + + this._map + .off('mousemove', this._onMouseMove) + .off('zoomend', this._onZoomEnd); + } }, _onMouseMove: function (e) { var latlng = e.latlng; this._tooltip.updatePosition(latlng); - + this._mouseMarker.setLatLng(latlng); + if (!this._marker) { this._marker = new L.Marker(latlng, { icon: this.options.icon,