var MarkerOverlayEventPrefix = 'MARKEROVERLAYCLICK';
var unitLengthsForExtent = { 'degrees': 180, 'm': 20001364.487263177, 'ft': 65621309.99999999 };
var updateTimers = new Array();
if (window.Node && Node.prototype && !Node.prototype.contains) {
Node.prototype.contains = function (arg) {
return !!(this.compareDocumentPosition(arg) & 16)
}
}
var Class = {
Create: function () {
return function () {
this.initialize.apply(this, arguments);
}
},
Extent: function (destination, source) {
for (var key in source) {
destination[key] = source[key];
}
return destination;
}
};
function isIos() {
var ua = navigator.userAgent.toLowerCase();
var s = ua.match(/ipad/i);
if (s == "ipad") { return true; }
else if (ua.match(/iphone/i) == "iphone") { return true; }
else if (ua.match(/android/i) == "android") { return true; }
else { return false; }
}
function handleMeasurements(feature) {
var units = feature.units;
var measure = feature.measure.toFixed(3);
if (feature.order == 1) {
html = String.format("
Total Length: {0} {1}
", measure.toString(), units.toString());
}
else {
html = String.format("Total Area: {0} {1}2
", measure.toString(), units.toString());
}
if (feature.geometry.CLASS_NAME.indexOf('LineString') > -1) {
var length = feature.geometry.components.length;
lonLat = { lon: feature.geometry.components[length - 1].x, lat: feature.geometry.components[length - 1].y };
}
else {
var length = feature.geometry.components[0].components.length;
lonLat = { lon: feature.geometry.components[0].components[length - 2].x, lat: feature.geometry.components[0].components[length - 2].y };
}
var size = new OpenLayers.Size(450, 200);
var popup = new OpenLayers.Popup.FramedCloud('DistancePopup', lonLat, size, html, null, true);
popup.isAlphaImage = true; // fix IE 6.0 problem
this.map.addPopup(popup);
}
function GetShorterGeographyUnit(unit) {
switch (unit) {
case 'Feet': return 'ft';
case 'Meter': return 'm';
default: return 'degrees'
}
}
function GetMaxExtentByUnits(unit) {
var unitLength = unitLengthsForExtent[unit];
if (unitLength)
return new OpenLayers.Bounds(unitLength * -1, unitLength * -1, unitLength, unitLength);
}
function ConvertJsonToBounds(json) {
return new OpenLayers.Bounds(json.left, json.bottom, json.right, json.top);
}
function ConvertJsonToLonLat(json) {
return new OpenLayers.LonLat(json.x, json.y);
}
function ConvertJsonToIcon(json, imgRootPath) {
var size;
if (json.w == 0 && json.h == 0) {
size = null;
}
else {
size = new OpenLayers.Size(json.w, json.h);
}
if (json.url == '') {
json.url = imgRootPath + 'theme/default/img/marker_blue.gif';
}
var icon = new OpenLayers.Icon(json.url, size);
if (size) {
icon.offset = new OpenLayers.Pixel(CalculateOffset(json.ox, size.w), CalculateOffset(json.oy, size.h));
}
else {
icon.offset = new OpenLayers.Pixel(json.ox, json.oy);
}
return icon;
}
function ConvertJsonToSize(json) {
if (json.w != 0 && json.h != 0) {
return new OpenLayers.Size(json.w, json.h);
} else {
return null;
}
}
function CalculateOffset(offset, width) {
if (offset == NaN || offset.toString().toUpperCase() == 'NAN') {
return -width / 2;
} else {
return offset;
}
}
function ConvertBoundsToString(bounds) {
return (bounds.left + ',' + bounds.bottom + ',' + bounds.right + ',' + bounds.top);
}
function ConvertLonLatToString(lonlat) {
return lonlat.lon + ',' + lonlat.lat;
}
function CreateImageNode(id, infos, parentW, parentH, localUrl) {
var w = infos.w == 0 ? 128 : infos.w;
var h = infos.h == 0 ? 15 : infos.h;
var url = infos.uri;
var img = NewDomNode('IMG');
img.style.position = 'absolute';
img.style.zIndex = 100000;
img.style.width = w + 'px';
img.style.height = h + 'px';
img.style.left = ((parentW / 2) - (w / 2)) + 'px';
img.style.top = ((parentH / 2) - (h / 2)) + 'px';
img.style.display = 'none';
img.id = id;
img.src = (!url || url == '') ? localUrl : url;
return img;
}
function HideContextMenus() {
if (CurrentContextMenu) {
CurrentContextMenu.display(false);
}
}
function NewDomNode(tagName) {
return document.createElement(tagName);
}
function GetDomNode(id) {
return document.getElementById(id);
}
function CheckObjectExists(obj) {
if (obj && obj != 'undefined' && obj != undefined) {
return true;
} else {
return false;
}
}
function IsBoundsValidated(extent) {
return (extent.left != null
&& extent.bottom != null
&& extent.right != null
&& extent.top != null);
}
function AddMarkersByAjax(map, json) {
var markerOverlays = eval('(' + json + ')');
if (markerOverlays && markerOverlays.length != 0) {
for (var i = 0; i < markerOverlays.length; i++) {
var layer = map.getLayer(markerOverlays[i].id);
if (layer) {
RemoveMarkerPopups(layer);
var markersCount = layer.markers.length;
for (var j = 0; j < markersCount; j++) {
var removeMarker = layer.markers[0];
layer.removeMarker(removeMarker);
removeMarker.destroy();
}
var hasCtx = false;
var rootPath = layer.rootPath;
if (markerOverlays[i].markers && markerOverlays[i].markers.length != 0) {
for (var j = 0; j < markerOverlays[i].markers.length; j++) {
var markerJson = markerOverlays[i].markers[j];
var markerCreator = new Marker(markerJson, rootPath);
markerCreator.overlayId = layer.id;
markerCreator.mapUid = map.uniqueId;
markerCreator.mapCid = map.clientId;
markerCreator.currentZoom = map.getZoom();
if (markerJson.contextMenu && markerJson.contextMenu != 'undefined' && markerJson.contextMenu.items.length != 0) {
markerCreator.setContextMenu(markerJson);
hasCtx = true;
}
var marker = markerCreator.element;
if (markerOverlays[i].iscluster && markerOverlays[i].iscluster == '1') {
if (markerJson.popup && markerJson.popup != 'undefined') {
marker.events.register('mouseover', marker, function (evt) {
if (this.id) {
var url = "popup_GeoResource.axd?oid=" + layer.id + "&id=" + this.id + "&t=" + (new Date()).toString();
var mapparser = eval(map.clientId + ".GetMapParser();");
url += '&pageName=' + mapparser.pageName;
url += '&clientId=' + map.clientId;
url += '&zoom=' + (parseInt(map.getZoom()) + 1)
var m = this;
var httpRequest = new OpenLayers.Ajax.Request(url, { 'method': 'get', 'onComplete': function (transport) {
if (transport.status == 200) {
var resdpopup = eval('(' + transport.responseText + ')');
if (resdpopup && resdpopup.html != '') {
m.popupJson = resdpopup;
m.popupJson.id = m.id + '_popup';
m.popupDelay = markerJson.popupDelay;
var p = contains(map.popups, m.popupJson.id);
if (p == '-1') {
m.initializePopup(map);
}
m.Popup = p;
m.popup.show();
m.events.register('mouseover', m, function (evt) { this.showPopup(); });
m.events.register('mouseout', m, function (evt) { this.hidePopup(); });
}
}
}
});
}
});
}
} else if (markerJson.popup && markerJson.popup != 'undefined' && markerJson.popup.html && markerJson.popup.html != '') {
marker.popupJson = markerJson.popup;
marker.popupDelay = markerJson.popupdelay;
marker.initializePopup(map);
marker.events.register('mouseover', marker, function (evt) { this.showPopup(); });
marker.events.register('mouseout', marker, function (evt) { this.hidePopup(); });
}
marker = GetHookedClickEventMarker(marker, layer);
layer.addMarker(marker);
if (hasCtx) {
layer.div.oncontextmenu = function () { return false; };
} else {
layer.div.oncontextmenu = null;
}
}
}
}
}
}
}
function contains(popupsArray, obj) {
var i = popupsArray.length;
while (i--) {
if (popupsArray[i].id === obj) {
return popupsArray[i];
}
}
return '-1';
}
function RemoveMarkerPopups(layer) {
for (var i = 0; i < layer.markers.length; i++) {
if (layer.markers[i].popup) {
var removePopup = layer.markers[i].popup;
layer.map.removePopup(removePopup);
removePopup.destroy();
}
}
}
function GetHookedClickEventMarker(marker, markerOverlay) {
marker.parentId = markerOverlay.id;
if (markerOverlay.click) {
marker.icon.imageDiv.style.cursor = 'pointer';
marker.events.register('click', marker, function (evt) {
__doPostBack(this.map.uniqueId, MarkerOverlayEventPrefix + '^' + this.parentId + '^' + this.id);
});
}
return marker;
}
function HasObject(array, value) {
for (var i = 0; i < array.length; i++) {
if (array[i] == value) {
return true;
}
}
return false;
}
function CreateAllMaps() {
for (var i = 0; i < MultiMap.length; i++) {
eval('var parser = parser' + MultiMap[i]);
parser.createMap();
}
}
function CleanMap(mapId) {
var map = eval(mapId);
if (map) {
map.Destory();
}
}
function CleanAllMaps() {
for (var i = 0; i < MultiMap.length; i++) {
CleanMap(MultiMap[i]);
}
}
function keepsession() {
window.setInterval("IssueKeepSessionRequest()", 900000);
}
function IssueKeepSessionRequest() {
OpenLayers.Request.issue({ url: 'session_GeoResource.axd' });
}
function OnMapRefresh(map) {
for (var i in map.layers) {
var layer = map.layers[i];
var UpdateInterval = layer.autoRefreshMilliseconds;
var tick = layer.tick;
if (tick && UpdateInterval && UpdateInterval != 0) {
var timer = window.setInterval(Function.createDelegate({ 'args': 'AutoRefresh', 'id': layer.id }, function (evt) {
var args = this.args + "_" + this.id;
eval("CallServerMethod" + map.clientId + "(args, map.clientId)");
}), UpdateInterval);
updateTimers.push(timer);
}
}
}
function AutoRefreshCompleted(args, context) {
eval('var map = ' + context + ".GetOpenLayersMap();");
var argsArray = args.split("^");
var currentExtentArray = argsArray[0];
var markersJson = argsArray[1];
for (var i in map.layers) {
var UpdateInterval = map.layers[i].autoRefreshMilliseconds;
var layer = map.layers[i];
if (UpdateInterval && UpdateInterval != 0) {
if (layer instanceof OpenLayers.Layer.WMS) {
layer.redraw(true);
}
else if (layer.CLASS_NAME == "OpenLayers.Layer.Markers.DragMarkers") {
var serial = Sys.Serialization.JavaScriptSerializer;
var json = serial.deserialize(markersJson);
for (var i = 0; i < layer.markers.length; i++) {
if (layer.markers[i].popup) {
layer.markers[i].popup.destroy();
map.removePopup(layer.markers[i].popup);
}
}
if (layer.markers != null) {
while (layer.markers.length > 0) {
layer.markers[0].destroy();
layer.removeMarker(layer.markers[0]);
}
}
layer.wireDragEvents();
var hasCtx = false;
var rootPath = layer.rootPath;
if (json && json != 'undefined') {
if (json.markers && json.markers.length != 0) {
for (var j = 0; j < json.markers.length; j++) {
var markerJson = json.markers[j];
if (!markerJson.visible) {
continue;
}
var markerCreator = new Marker(markerJson, rootPath);
markerCreator.overlayId = layer.id;
markerCreator.mapUid = map.uniqueId;
markerCreator.mapCid = map.clientId;
markerCreator.currentZoom = map.getZoom();
if (markerJson.contextMenu && markerJson.contextMenu != 'undefined' && markerJson.contextMenu.items.length != 0) {
markerCreator.setContextMenu(markerJson);
hasCtx = true;
}
var marker = markerCreator.element;
if (markerJson.popup && markerJson.popup != 'undefined' && markerJson.popup.html && markerJson.popup.html != '') {
marker.popupJson = markerJson.popup;
marker.popupDelay = markerJson.popupdelay;
marker.initializePopup(map);
marker.events.register('mouseover', marker, function (evt) { this.showPopup(); });
marker.events.register('mouseout', marker, function (evt) { this.hidePopup(); });
}
marker = GetHookedClickEventMarker(marker, layer);
layer.addMarker(marker);
if (hasCtx) {
layer.div.oncontextmenu = function () { return false; };
} else {
layer.div.oncontextmenu = null;
}
}
json.markers = null;
}
}
}
else {
eval('parser' + context).sendMarkersRequest();
}
}
}
if (currentExtentArray != null && currentExtentArray != "") {
var currentExtent = currentExtentArray.split(",");
if (currentExtent.length == 4) {
var extent = new OpenLayers.Bounds(currentExtent[0], currentExtent[3], currentExtent[2], currentExtent[1]);
if (IsBoundsValidated(extent)) {
var center = extent.getCenterLonLat();
var zoom = map.getZoomForExtent(extent);
map.events.triggerEvent("maprefreshcompleted", { center: center, zoom: zoom });
}
}
}
}
var Overlay = Class.Create();
var SphericalOverlay = Class.Create();
var WmsOverlay = Class.Create();
var ArcGISServerRestOverlay = Class.Create();
var LayerOverlay = Class.Create();
var MarkerOverlay = Class.Create();
var SimpleMarkerOverlay = Class.Create();
var AdornmentOverlay = Class.Create();
var Control = Class.Create();
var Popup = Class.Create();
var Marker = Class.Create();
Class.Extent(Overlay.prototype, {
id: null,
options: {},
element: null,
initialize: function (json) {
this.options = {};
this.setCommonOptions(json);
},
setCommonOptions: function (json) {
this.id = json.Id;
this.name = json.name;
if (this.name == 'undefined' || !this.name) {
this.name = '';
}
this.options.isBaseLayer = json.isBaseLayer;
this.options.visibility = json.visibility;
this.options.initVisibility = json.visibility;
this.options.name = this.name;
this.options.opacity = json.opacity;
this.options.displayInLayerSwitcher = json.displayInLayerSwitcher;
this.autoRefreshMilliseconds = json.AutoRefreshMilliseconds;
this.tick = json.tick;
}
});
Class.Extent(SphericalOverlay.prototype, Overlay.prototype);
Class.Extent(SphericalOverlay.prototype, {
json: null,
type: null,
overlayType: null,
initialize: function (json) {
this.options = {};
this.json = json;
this.setCommonOptions(json);
this.type = json.otype;
this.options.type = eval(json.type);
this.options.sphericalMercator = true;
this.options.maxResolution = 156543.0339;
this.options.maxExtent = new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34);
},
createGoogleOverlay: function () {
this.element = new OpenLayers.Layer.Google(this.name, this.options);
this.setTickEventArguments();
},
createVirtualEarthOverlay: function () {
this.options.animationEnabled = false;
this.element = new OpenLayers.Layer.VirtualEarth(this.name, this.options);
if (this.json.key) { this.element.key = this.json.key; }
this.setTickEventArguments();
},
createYahooOverlay: function () {
this.element = new OpenLayers.Layer.Yahoo(this.name, this.options);
this.setTickEventArguments();
},
createOSMOverlay: function () {
this.element = new OpenLayers.Layer.OSM(this.name);
this.element.setTileSize(new OpenLayers.Size(this.json.w, this.json.h));
this.setTickEventArguments();
},
createCustomerOverlay: function () {
this.element = this.getCustomerOverlay(this.json);
this.setTickEventArguments();
},
setTickEventArguments: function () {
this.element.autoRefreshMilliseconds = this.autoRefreshMilliseconds;
this.element.tick = this.tick;
},
getCustomerOverlay: function (json) { return null },
createOverlay: function () {
switch (this.type.toUpperCase()) {
case "GOOGLE": this.createGoogleOverlay(); break;
case "VIRTUALEARTH": this.createVirtualEarthOverlay(); break;
case "YAHOO": this.createYahooOverlay(); break;
case "OSM": this.createOSMOverlay(); break;
default: this.createCustomerOverlay(); break;
}
this.element.id = this.id;
}
});
Class.Extent(ArcGISServerRestOverlay.prototype, Overlay.prototype);
Class.Extent(ArcGISServerRestOverlay.prototype, {
url: null,
params: {},
pageName: null,
initialize: function (json, pageName) {
this.setCommonOptions(json);
if (!this.url) { this.url = json.uri }
this.pageName = pageName;
this.options.ratio = 1;
this.options.singleTile = (parseInt(json.singleTile) == 1);
this.options.tileSize = new OpenLayers.Size(json.w, json.h);
this.options.transitionEffect = json.transitionEffect;
this.options.layername = json.layername;
this.setParameters(json);
},
setParameters: function (json) {
for (var key in json.parameters) {
this.params[key] = json.parameters[key];
}
},
createArcGISServerRest: function () {
this.element = new OpenLayers.Layer.ArcGIS93Rest(this.name, this.url, this.params, this.options);
this.element.id = this.id;
this.element.autoRefreshMilliseconds = this.autoRefreshMilliseconds;
this.element.tick = this.tick;
}
});
Class.Extent(WmsOverlay.prototype, Overlay.prototype);
Class.Extent(WmsOverlay.prototype, {
url: null,
params: {},
pageName: null,
initialize: function (json, pageName) {
this.params = {};
this.setCommonOptions(json);
if (!this.url) {
this.url = json.uris;
}
this.pageName = pageName;
if (json.buffer && json.buffer != 'undefined') {
this.options.buffer = json.buffer;
} else {
this.options.buffer = 0;
}
this.options.wrapDateLine = json.wrapDateLine == "1" ? true : false;
this.options.ratio = 1;
//this.options.displayOutsideMaxExtent = true;
this.options.singleTile = (parseInt(json.singleTile) == 1);
this.options.tileSize = new OpenLayers.Size(json.w, json.h);
this.options.transitionEffect = json.transitionEffect;
this.setAlphaChanel();
this.setParameters(json);
},
setResolutions: function (resolutions) {
this.options.resolutions = resolutions;
},
setAlphaChanel: function () {
var versionString = navigator.appVersion.split("MSIE");
var version = parseFloat(versionString[1]);
if (version == 6) {
this.options.alpha = true;
}
},
setProjection: function (srs) {
if (srs && srs != 'undefined') {
this.element.projection = srs;
}
},
setWebImageFormat: function (format) {
if (format && typeof (format) != 'undefined') {
this.element.params.FORMAT = format;
}
},
setParameters: function (json) {
this.setCustomerParams(json);
},
createWms: function () {
this.element = new OpenLayers.Layer.WMS(this.name, this.url, this.params, this.options);
this.element.autoRefreshMilliseconds = this.autoRefreshMilliseconds;
this.element.tick = this.tick;
this.element.id = this.id;
},
hookLoadingImage: function (mapClientId) {
this.element.mapClientId = mapClientId;
this.element.events.register('loadstart', this.element, function (evt) {
var loadingDiv = GetDomNode('loading' + this.mapClientId);
if (loadingDiv) {
loadingDiv.style.display = 'block';
}
});
this.element.events.register('loadend', this.element, function (evt) {
var loadingDiv = GetDomNode('loading' + this.mapClientId);
if (loadingDiv) {
loadingDiv.style.display = 'none';
}
});
},
setCustomerParams: function (json) {
for (var key in json.parameters) {
if (key.toUpperCase() == 'SRS') {
this.options.projection = new OpenLayers.Projection(json.parameters[key.toString()]);
} else {
this.params[key] = json.parameters[key];
}
}
},
setDefaultParams: function (json) {
this.params.overlayid = escape(json.Id);
this.params.format = json.imageFormat;
this.params.cacheid = escape(json.clientCache.cacheId);
this.params.pageName = escape(this.pageName);
this.params.exceptions = null;
this.params.request = null;
this.params.service = null;
this.params.version = null;
this.params.style = null;
}
});
Class.Extent(LayerOverlay.prototype, WmsOverlay.prototype);
Class.Extent(LayerOverlay.prototype, {
url: 'tile_GeoResource.axd',
setParameters: function (json) {
if (json.singleThread) {
this.url = 'singletile_GeoResource.axd';
}
WmsOverlay.prototype.setParameters.apply(this, arguments);
this.setDefaultParams(json);
}
});
Class.Extent(AdornmentOverlay.prototype, WmsOverlay.prototype);
Class.Extent(AdornmentOverlay.prototype, {
url: 'adornment_GeoResource.axd',
createWms: function () {
this.element = new OpenLayers.Layer.AdornmentLayer(this.name, this.url, this.params, this.options);
this.element.id = this.id;
},
setParameters: function (json) {
WmsOverlay.prototype.setParameters.apply(this, arguments);
this.options.isDynamic = json.isDynamic;
this.params.overlayid = encodeURIComponent(this.id);
this.params.pageName = encodeURIComponent(this.pageName);
}
});
Class.Extent(MarkerOverlay.prototype, Overlay.prototype);
Class.Extent(MarkerOverlay.prototype, {
element: null,
createMarkerOverlay: function () {
this.element = new OpenLayers.Layer.Markers(this.name, this.options);
this.element.autoRefreshMilliseconds = this.autoRefreshMilliseconds;
this.element.tick = this.tick;
this.element.id = this.id;
},
hookEvent: function (flag) {
if (flag) {
this.element.click = true;
}
}
});
Class.Extent(SimpleMarkerOverlay.prototype, MarkerOverlay.prototype);
Class.Extent(SimpleMarkerOverlay.prototype, {
createMarkerOverlay: function () {
this.element = new OpenLayers.Layer.Markers.DragableMarkers(this.name, this.options);
this.element.id = this.id;
this.element.isSimpleMarkerOverlay = true;
this.element.autoRefreshMilliseconds = this.autoRefreshMilliseconds;
this.element.tick = this.tick;
},
setOptions: function (json) {
this.options.dragMode = json.dragMode;
this.options.draggedEvent = json.draggedEvent;
},
hookMarkersJson: function (markersJson) {
this.element.markersJson = markersJson;
},
hookEvent: function (flag) {
if (flag) {
this.element.click = true;
}
}
});
Class.Extent(Control.prototype, {
element: null,
initialize: function (name, options) {
if (options.enabled) {
this.element = eval('new OpenLayers.Control.' + name + '()');
for (var key in options) {
if (key != 'enabled')
this.element[key] = options[key];
}
}
}
});
Class.Extent(Popup.prototype, {
element: null,
initialize: function (json, anchor) {
var lonlat = ConvertJsonToLonLat(json.lonlat);
var size = ConvertJsonToSize({ 'w': json.w, 'h': json.h });
if (json.popupType == 'NormalPopup') {
this.element = new OpenLayers.Popup.Anchored(json.id, lonlat, size, json.html, anchor, json.closable);
this.setBorder(json);
this.setBgColor(json);
this.setBgImg(json);
} else if (json.popupType == 'CloudPopup') {
this.element = new OpenLayers.Popup.FramedCloud(json.id, lonlat, size, json.html, anchor, json.closable);
this.setAlphaChanel();
} else {
this.element = this.getCustomerPopup(json);
}
this.element.panMapIfOutOfView = json.autopan;
this.element.autoSize = json.autosize;
this.setOffset(json);
},
setAlphaChanel: function () {
var versionString = navigator.appVersion.split("MSIE");
var version = parseFloat(versionString[1]);
if (version == 6) {
this.element.isAlphaImage = true;
}
},
setBorder: function (json) {
this.element.border = 'solid ' + json.bw + 'px ' + json.bdcolor;
},
setBgColor: function (json) {
if (json.bgcolor.toUpperCase == 'TRANSPARENT') {
this.element.backgroundColor = '';
this.element.groupDiv.style.backgroundColor = null;
} else {
this.element.backgroundColor = json.bgcolor;
}
},
setBgImg: function (json) {
if (CheckObjectExists(json.backImg)) {
this.element.div.style.backgroundImage = 'url("' + json.backImg + '")';
}
},
setVisible: function (visible) {
if (visible) {
this.element.show();
} else {
this.element.hide();
}
},
setOffset: function (json) {
if (json.ox && json.ox != 'undefined' && json.ox != 0) {
this.element.offsetX = json.ox;
}
if (json.oy && json.oy != 'undefined' && json.oy != 0) {
this.element.offsetY = json.oy;
}
},
getCustomerPopup: function (json) {
return null;
}
});
Class.Extent(Marker.prototype, {
element: null,
overlayId: null,
mapUid: null,
mapCid: null,
currentZoom: null,
initialize: function (json, imgRootPath) {
var popupJson = json.popup;
var lonlat = ConvertJsonToLonLat(json.lonlat);
var icon = ConvertJsonToIcon(json.img, imgRootPath);
this.element = new OpenLayers.Marker.GeoMarker(json.id, lonlat, icon);
if (json.opacity && json.opacity != 'undefined') {
this.element.setOpacity(json.opacity);
}
},
setContextMenu: function (json) {
this.element.contextMenu = json.contextMenu;
this.element.overlayId = this.overlayId;
this.element.mapUid = this.mapUid;
this.element.mapCid = this.mapCid;
this.element.currentZoom = this.currentZoom;
this.element.events.register('mousedown', this.element, function (evt) {
if (evt && evt.button == 2) {
var lonlat = this.lonlat;
var target = this.CLASS_NAME + '|' + this.overlayId + '|' + this.currentZoom;
HideContextMenus();
var contextMenu = new ContextMenu(this.contextMenu, lonlat, target, this.mapUid);
for (var i = 0; i < this.contextMenu.items.length; i++) {
contextMenu.addItem(this.contextMenu.items[i]);
}
contextMenu.moveTo(evt.clientX, evt.clientY);
contextMenu.display(true);
document.getElementById(this.mapCid).parentNode.appendChild(contextMenu.div);
CurrentContextMenu = contextMenu;
return false;
}
});
}
});