From 2c07d2b803bc86de482e545fd65e661af7bba2ff Mon Sep 17 00:00:00 2001 From: Stefan Breunig Date: Tue, 12 Mar 2013 10:12:31 +0100 Subject: [PATCH] only update the GMaps part that require updating. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Even when the zoom doesn’t change by repeatedly calling setZoom, Firefox shows network operations. These can be avoided, although this doesn’t improve the performance much when using the GMaps layers. --- external/leaflet_google.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/external/leaflet_google.js b/external/leaflet_google.js index fd2d608a..7402e540 100644 --- a/external/leaflet_google.js +++ b/external/leaflet_google.js @@ -109,6 +109,8 @@ L.Google = L.Class.extend({ map.backgroundColor = '#ff0000'; this._google = map; + this._lastZoomPosition = null; + this._lastMapPosition = null; }, _resetCallback: function(e) { @@ -122,11 +124,20 @@ L.Google = L.Class.extend({ _update: function() { this._resize(); - var center = this._map.getCenter(); - var _center = new google.maps.LatLng(center.lat, center.lng); + // update map position if required + var newCenter = this._map.getCenter(); + if(this._lastMapPosition !== newCenter) { + var _center = new google.maps.LatLng(newCenter.lat, newCenter.lng); + this._google.setCenter(_center); + } + this._lastMapPosition = newCenter; - this._google.setCenter(_center); - this._google.setZoom(this._map.getZoom()); + // update zoom level if required + var newZoom = this._map.getZoom(); + if(this._lastZoomPosition !== newZoom) { + this._google.setZoom(this._map.getZoom()); + } + this._lastZoomPosition = newZoom; }, _resize: function() {