Skip to content

Commit afa2963

Browse files
committed
not-to-lose commits
1 parent f01dd4a commit afa2963

File tree

7 files changed

+4590
-50
lines changed

7 files changed

+4590
-50
lines changed

controllers/map-controller.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@
5555
if (obj.map) {
5656
var objs = obj.map[groupName];
5757
for (var name in objs) {
58-
objs[name] === obj && (delete objs[name]);
58+
if (objs[name] === obj) {
59+
google.maps.event.clearInstanceListeners(obj);
60+
delete objs[name];
61+
}
5962
}
6063

6164
/* delete from map */
@@ -107,7 +110,7 @@
107110
* @param {String} group name of group e.g., markers
108111
*/
109112
vm.objectChanged = function(group) {
110-
if (
113+
if ( vm.map &&
111114
(group == 'markers' || group == 'customMarkers') &&
112115
vm.map.zoomToIncludeMarkers == 'auto'
113116
) {

services/ng-map-pool.js

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
(function() {
2+
var mapInstances = [];
3+
4+
var add = function(el) {
5+
var ngMapDiv = getNgMapDiv(el);
6+
el.appendChild(ngMapDiv);
7+
var map = new google.maps.Map(ngMapDiv, {});
8+
mapInstances.push(map);
9+
return map;
10+
};
11+
12+
var find = function(el) {
13+
getMapInstance.forEach(function(map) {
14+
if (!map.inUse) {
15+
var mapDiv = map.getDiv();
16+
el.appendChild(mapDiv);
17+
return map;
18+
}
19+
});
20+
return;
21+
};
22+
23+
var getMapInstance = function(el) {
24+
var map = find(el) || add(el);
25+
map.inUse = true;
26+
return map;
27+
};
28+
29+
30+
/**
31+
* @memberof NgMapPool
32+
* @function getNgMapDiv
33+
* @param {HTMLElemnet} el html element
34+
* @returns map DIV elemnt
35+
* @desc
36+
* create a new `div` inside map tag, so that it does not touch map element
37+
* and disable drag event for the elmement
38+
*/
39+
var getNgMapDiv = function(ngMapEl) {
40+
var el = $document.createElement("div");
41+
var defaultStyle = ngMapEl.getAttribute('default-style');
42+
el.style.width = "100%";
43+
el.style.height = "100%";
44+
45+
//if style is not given to the map element, set display and height
46+
if (defaultStyle == "true") {
47+
ngMapEl.style.display = 'block';
48+
ngMapEl.style.height = '300px';
49+
} else {
50+
if (getStyle(ngMapEl, 'display') != "block") {
51+
ngMapEl.style.display = 'block';
52+
}
53+
if (getStyle(ngMapEl, 'height').match(/^(0|auto)/)) {
54+
ngMapEl.style.height = '300px';
55+
}
56+
}
57+
58+
// disable drag event
59+
el.addEventListener('dragstart', function (event) {
60+
event.preventDefault();
61+
return false;
62+
});
63+
return el;
64+
};
65+
66+
angular.module('ngMap').factory('NgMapPool', function() {
67+
var NgMapPool = function(_$document_) {
68+
$document = _$document_[0];
69+
70+
return {
71+
getMapInstance: getMapInstance
72+
};
73+
};
74+
NgMap.$inject = [ '$document' ];
75+
})();

services/ng-map.js

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,12 @@
7373
*/
7474
var deleteMap = function(mapCtrl) {
7575
var len = Object.keys(mapControllers).length - 1;
76-
delete mapControllers[mapCtrl.map.id || len];
76+
var mapController = mapControllers[mapCtrl.map.id || len];
77+
var map = mapController.map;
78+
var mapId = mapCtrl.map.id || len;
79+
80+
mapCtrl.map.inUse = false;
81+
delete mapControllers[mapId];
7782
};
7883

7984
/**
@@ -95,41 +100,6 @@
95100
return y;
96101
};
97102

98-
/**
99-
* @memberof NgMap
100-
* @function getNgMapDiv
101-
* @param {HTMLElemnet} el html element
102-
* @returns map DIV elemnt
103-
* @desc
104-
* create a new `div` inside map tag, so that it does not touch map element
105-
* and disable drag event for the elmement
106-
*/
107-
var getNgMapDiv = function(ngMapEl) {
108-
var el = $document.createElement("div");
109-
var defaultStyle = ngMapEl.getAttribute('default-style');
110-
el.style.width = "100%";
111-
el.style.height = "100%";
112-
113-
//if style is not given to the map element, set display and height
114-
if (defaultStyle == "true") {
115-
ngMapEl.style.display = 'block';
116-
ngMapEl.style.height = '300px';
117-
} else {
118-
if (getStyle(ngMapEl, 'display') != "block") {
119-
ngMapEl.style.display = 'block';
120-
}
121-
if (getStyle(ngMapEl, 'height').match(/^(0|auto)/)) {
122-
ngMapEl.style.height = '300px';
123-
}
124-
}
125-
126-
// disable drag event
127-
el.addEventListener('dragstart', function (event) {
128-
event.preventDefault();
129-
return false;
130-
});
131-
return el;
132-
};
133103

134104
/**
135105
* @memberof NgMap

0 commit comments

Comments
 (0)