@@ -9,23 +9,6 @@ angular.module("leaflet-directive").factory('leafletMarkersHelpers', function ($
99 safeApply = leafletHelpers . safeApply ,
1010 availableMarkerEvents = leafletEvents . getAvailableMarkerEvents ( ) ;
1111
12- var LeafletDefaultIcon = L . Icon . extend ( {
13- options : {
14- iconUrl : 'http://cdn.leafletjs.com/leaflet-0.7/images/marker-icon.png' ,
15- iconRetinaUrl : 'http://cdn.leafletjs.com/leaflet-0.7/images/marker-icon-2x.png' ,
16- iconSize : [ 25 , 41 ] ,
17- iconAnchor : [ 12 , 40 ] ,
18- labelAnchor : [ 10 , - 20 ] ,
19- popupAnchor : [ 0 , - 40 ] ,
20- shadow : {
21- url : 'http://cdn.leafletjs.com/leaflet-0.7/images/marker-shadow.png' ,
22- retinaUrl : 'http://cdn.leafletjs.com/leaflet-0.7/images/marker-shadow.png' ,
23- size : [ 41 , 41 ] ,
24- anchor : [ 12 , 40 ]
25- }
26- }
27- } ) ;
28-
2912 var hasLabel = function ( marker ) {
3013 return Helpers . LabelPlugin . isLoaded ( ) && isDefined ( marker . label ) ;
3114 } ;
@@ -38,42 +21,6 @@ angular.module("leaflet-directive").factory('leafletMarkersHelpers', function ($
3821 }
3922 } ;
4023
41- var getLeafletIcon = function ( data ) {
42- return new LeafletDefaultIcon ( data ) ;
43- } ;
44-
45- var buildMarker = function ( data ) {
46- if ( ! isDefined ( data ) ) {
47- return ;
48- }
49-
50- var micon = null ;
51- if ( data . icon ) {
52- micon = data . icon ;
53- } else {
54- micon = getLeafletIcon ( ) ;
55- }
56- var moptions = {
57- icon : micon ,
58- draggable : data . draggable ? true : false ,
59- clickable : isDefined ( data . clickable ) ? data . clickable : true ,
60- riseOnHover : isDefined ( data . riseOnHover ) ? data . riseOnHover : false
61- } ;
62- if ( data . title ) {
63- moptions . title = data . title ;
64- }
65- var marker = new L . marker ( data , moptions ) ;
66-
67- if ( data . message ) {
68- marker . bindPopup ( data . message ) ;
69- }
70- if ( Helpers . LabelPlugin . isLoaded ( ) && isDefined ( data . label ) && isDefined ( data . label . message ) ) {
71- marker . bindLabel ( data . label . message , data . label . options ) ;
72- }
73-
74- return marker ;
75- } ;
76-
7724 var genDispatchEventCB = function ( eventName , logic , scope_watch_name , leafletScope , marker , marker_data ) {
7825 return function ( e ) {
7926 var broadcastName = 'leafletDirectiveMarker.' + eventName ;
@@ -112,19 +59,50 @@ angular.module("leaflet-directive").factory('leafletMarkersHelpers', function ($
11259 } ;
11360 } ;
11461
62+ var getLeafletIcon = function ( iconData ) {
63+ if ( ! isDefined ( iconData ) ) {
64+ return new L . Icon . Default ( ) ;
65+ }
66+ return new L . Icon . Default ( iconData ) ;
67+ } ;
68+
69+ var buildMarker = function ( data ) {
70+ if ( ! isDefined ( data ) ) {
71+ return ;
72+ }
73+ var markerOptions = {
74+ icon : getLeafletIcon ( data . icon ) ,
75+ draggable : isDefined ( data . draggable ) ? data . draggable : false ,
76+ clickable : isDefined ( data . clickable ) ? data . clickable : true ,
77+ riseOnHover : isDefined ( data . riseOnHover ) ? data . riseOnHover : false
78+ } ;
79+ if ( isDefined ( data . title ) ) {
80+ markerOptions . title = data . title ;
81+ }
82+ var marker = new L . marker ( data , markerOptions ) ;
83+
84+ if ( isDefined ( data . message ) ) {
85+ marker . bindPopup ( data . message ) ;
86+ }
87+ if ( Helpers . LabelPlugin . isLoaded ( ) && isDefined ( data . label ) && isDefined ( data . label . message ) ) {
88+ marker . bindLabel ( data . label . message , data . label . options ) ;
89+ }
90+
91+ return marker ;
92+ } ;
93+
11594 return {
11695 getLeafletIcon : getLeafletIcon ,
11796
118- deleteMarker : function ( map , leafletMarkers , layers , groups , name ) {
119- var marker = leafletMarkers [ name ] ;
120-
97+ deleteMarker : function ( map , marker , layers , groups ) {
12198 // There is no easy way to know if a marker is added to a layer, so we search for it
12299 // if there are overlays
123100 if ( isDefined ( layers ) && isDefined ( layers . overlays ) ) {
124101 for ( var key in layers . overlays ) {
125102 if ( layers . overlays [ key ] instanceof L . LayerGroup ) {
126103 if ( layers . overlays [ key ] . hasLayer ( marker ) ) {
127104 layers . overlays [ key ] . removeLayer ( marker ) ;
105+ continue ;
128106 }
129107 }
130108 }
@@ -134,18 +112,19 @@ angular.module("leaflet-directive").factory('leafletMarkersHelpers', function ($
134112 for ( var groupKey in groups ) {
135113 if ( groups [ groupKey ] . hasLayer ( marker ) ) {
136114 groups [ groupKey ] . removeLayer ( marker ) ;
115+ continue ;
137116 }
138117 }
139118 }
140119
141120 map . removeLayer ( marker ) ;
142- delete leafletMarkers [ name ] ;
143121 } ,
144122
145123 createMarker : function ( scope_watch_name , marker_data , leafletScope , map , layers , groups , shouldWatch ) {
146124 var marker = buildMarker ( marker_data ) ;
147125
148126 if ( ! isDefined ( marker ) ) {
127+ $log . error ( '[AngularJS - Leaflet] The marker definition is not valid.' ) ;
149128 return ;
150129 }
151130
0 commit comments