Created
February 13, 2015 20:31
-
-
Save seyfro/5a469a4652a60f414696 to your computer and use it in GitHub Desktop.
leaflet / google maps addon
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"enabled" == mapsmarkerjspro.google_maps_api_status && (google.load("maps", "3", { | |
other_params: "sensor=false" + mapsmarkerjspro.googlemaps_language + mapsmarkerjspro.googlemaps_base_domain + mapsmarkerjspro.googlemaps_libraries | |
}), L.Google = L.Class.extend({ | |
includes: L.Mixin.Events, | |
options: { | |
minZoom: 0, | |
maxZoom: mapsmarkerjspro.maxzoom, | |
maxNativeZoom: 21, | |
tileSize: 256, | |
subdomains: "abc", | |
errorTileUrl: "", | |
attribution: "", | |
opacity: 1, | |
continuousWorld: !1, | |
noWrap: !1, | |
mapOptions: { | |
backgroundColor: "#F6F6F6" | |
} | |
}, | |
initialize: function(a, b) { | |
L.Util.setOptions(this, b), this._ready = void 0 != google.maps.Map, this._ready || L.Google.asyncWait.push(this), this._type = a || "SATELLITE" | |
}, | |
onAdd: function(a, b) { | |
this._map = a, this._insertAtTheBottom = b, this._initContainer(), this._initMapObject(), "enabled" == mapsmarkerjspro.google_adsense_status && this._initAdSense(), a.on("viewreset", this._resetCallback, this), this._limitedUpdate = L.Util.limitExecByInterval(this._update, 150, this), a.on("move", this._update, this), a.on("zoomanim", this._handleZoomAnim, this), a._controlCorners.bottomright.style.marginBottom = "15px", a._controlCorners.bottomleft.style.marginBottom = "21px", this._reset(), this._update() | |
}, | |
onRemove: function(a) { | |
a._container.removeChild(this._container), a.off("viewreset", this._resetCallback, this), a.off("move", this._update, this), a.off("zoomanim", this._handleZoomAnim, this), a._controlCorners.bottomright.style.marginBottom = "0em" | |
}, | |
getAttribution: function() { | |
return this.options.attribution | |
}, | |
setOpacity: function(a) { | |
this.options.opacity = a, 1 > a && L.DomUtil.setOpacity(this._container, a) | |
}, | |
setElementSize: function(a, b) { | |
a.style.width = b.x + "px", a.style.height = b.y + "px" | |
}, | |
_initContainer: function() { | |
var a = this._map._container, | |
b = a.firstChild; | |
this._container || (this._container = L.DomUtil.create("div", "leaflet-google-layer leaflet-top leaflet-left"), this._container.id = "_GMapContainer_" + L.Util.stamp(this), this._container.style.zIndex = "auto"), a.insertBefore(this._container, b), this.setOpacity(this.options.opacity), this.setElementSize(this._container, this._map.getSize()) | |
}, | |
_initMapObject: function() { | |
if (this._ready) { | |
this._google_center = new google.maps.LatLng(0, 0); | |
var map = new google.maps.Map(this._container, { | |
center: this._google_center, | |
zoom: 0, | |
tilt: 0, | |
mapTypeId: google.maps.MapTypeId[this._type], | |
disableDefaultUI: !0, | |
keyboardShortcuts: !1, | |
draggable: !1, | |
disableDoubleClickZoom: !0, | |
scrollwheel: !1, | |
streetViewControl: !1, | |
backgroundColor: this.options.mapOptions.backgroundColor | |
}); | |
if ("disabled" != mapsmarkerjspro.google_styling_json) { | |
var styles = eval(mapsmarkerjspro.google_styling_json); | |
map.setOptions({ | |
styles: styles | |
}) | |
} | |
var _this = this; | |
this._reposition = google.maps.event.addListenerOnce(map, "center_changed", function() { | |
_this.onReposition() | |
}), this._google = map, google.maps.event.addListenerOnce(map, "idle", function() { | |
_this._checkZoomLevels() | |
}), google.maps.event.addListenerOnce(map, "tilesloaded", function() { | |
_this.fire("load") | |
}), this.fire("MapObjectInitialized", { | |
mapObject: map | |
}) | |
} | |
}, | |
_checkZoomLevels: function() { | |
this._google.getZoom() !== this._map.getZoom() && this._map.setZoom(this._google.getZoom()) | |
}, | |
_resetCallback: function(a) { | |
this._reset(a.hard) | |
}, | |
_handleZoomAnim: function(a) { | |
var b = a.center, | |
c = new google.maps.LatLng(b.lat, b.lng); | |
this._google.setCenter(c), this._google.setZoom(Math.round(a.zoom)) | |
}, | |
_reset: function() { | |
this._initContainer() | |
}, | |
_update: function() { | |
if (this._google) { | |
this._resize(); | |
var b = this._map.getCenter(), | |
c = new google.maps.LatLng(b.lat, b.lng); | |
this._google.setCenter(c), this._google.setZoom(Math.round(this._map.getZoom())), this._checkZoomLevels(), this._google.getZoom() != this._map.getZoom() && this._map.setZoom(this._google.getZoom()) | |
} | |
}, | |
_resize: function() { | |
var a = this._map.getSize(); | |
(this._container.style.width != a.x || this._container.style.height != a.y) && (this.setElementSize(this._container, a), this.onReposition()) | |
}, | |
onReposition: function() { | |
this._google && google.maps.event.trigger(this._google, "resize") | |
}, | |
_initAdSense: function() { | |
var a = document.createElement("div"); | |
a.className = "leaflet-control", a.style.margin = "0", a.style.clear = "none"; | |
var b = new String; | |
b.format = google.maps.adsense.AdFormat[mapsmarkerjspro.google_adsense_format], b.position = google.maps.ControlPosition[mapsmarkerjspro.google_adsense_position], b.cposition = mapsmarkerjspro.google_adsense_position, b.backgroundColor = mapsmarkerjspro.google_adsense_backgroundColor, b.borderColor = mapsmarkerjspro.google_adsense_borderColor, b.titleColor = mapsmarkerjspro.google_adsense_titleColor, b.textColor = mapsmarkerjspro.google_adsense_textColor, b.urlColor = mapsmarkerjspro.google_adsense_urlColor, b.channelNumber = mapsmarkerjspro.google_adsense_channelNumber, b.publisherID = mapsmarkerjspro.google_adsense_publisherId; | |
var c = { | |
format: b.format, | |
position: b.position, | |
backgroundColor: b.backgroundColor, | |
borderColor: b.borderColor, | |
titleColor: b.titleColor, | |
textColor: b.textColor, | |
urlColor: b.urlColor, | |
map: this._google, | |
visible: !0, | |
channelNumber: b.channelNumber, | |
publisherId: b.publisherID | |
}, | |
d = this._map.getSize(); | |
d.x > 150 && (this._adUnit = new google.maps.adsense.AdUnit(a, c)) | |
} | |
}), L.Google.asyncWait = [], L.Google.asyncInitialize = function() { | |
var a; | |
for (a = 0; a < L.Google.asyncWait.length; a++) { | |
var b = L.Google.asyncWait[a]; | |
b._ready = !0, b._container && (b._initMapObject(), "enabled" == mapsmarkerjspro.google_adsense_status && b._initAdSense(), b._update()) | |
} | |
L.Google.asyncWait = [] | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment