Apply patch from John Cole to make closeBox show up in AnchoredBubble
popups. (Thanks John!) I like this solution better than hacking Rico. Closes #698. git-svn-id: http://svn.openlayers.org/trunk/openlayers@3149 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
OpenLayers contributors:
|
OpenLayers contributors:
|
||||||
Howard Butler
|
Howard Butler
|
||||||
Bertil Chaupis
|
Bertil Chaupis
|
||||||
|
John Cole
|
||||||
Jeff Dege
|
Jeff Dege
|
||||||
Schuyler Erle
|
Schuyler Erle
|
||||||
Christian López Espínola
|
Christian López Espínola
|
||||||
|
|||||||
+11
-2
@@ -47,7 +47,7 @@
|
|||||||
popup = new OpenLayers.Popup.Anchored("chicken",
|
popup = new OpenLayers.Popup.Anchored("chicken",
|
||||||
new OpenLayers.LonLat(5,40),
|
new OpenLayers.LonLat(5,40),
|
||||||
new OpenLayers.Size(200,200),
|
new OpenLayers.Size(200,200),
|
||||||
"example popup");
|
"example popup", true);
|
||||||
|
|
||||||
map.addPopup(popup);
|
map.addPopup(popup);
|
||||||
}
|
}
|
||||||
@@ -69,8 +69,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function mousedown(evt) {
|
function mousedown(evt) {
|
||||||
|
// check to see if the popup was hidden by the close box
|
||||||
|
// if so, then destroy it before continuing
|
||||||
|
if (popup != null) {
|
||||||
|
if (!popup.visible()) {
|
||||||
|
markers.map.removePopup(popup);
|
||||||
|
popup.destroy();
|
||||||
|
popup = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (popup == null) {
|
if (popup == null) {
|
||||||
popup = feature.createPopup();
|
popup = feature.createPopup(true);
|
||||||
popup.setContentHTML("<a href='http://www.somethingconstructive.net' target='_blank'>click me</a>");
|
popup.setContentHTML("<a href='http://www.somethingconstructive.net' target='_blank'>click me</a>");
|
||||||
popup.setBackgroundColor("yellow");
|
popup.setBackgroundColor("yellow");
|
||||||
popup.setOpacity(0.7);
|
popup.setOpacity(0.7);
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ OpenLayers.Feature.prototype= {
|
|||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param {Boolean} closeBox create popup with closebox or not
|
||||||
* @returns A Popup Object created from the 'lonlat', 'popupSize',
|
* @returns A Popup Object created from the 'lonlat', 'popupSize',
|
||||||
* and 'popupContentHTML' properties set in this.data. It uses
|
* and 'popupContentHTML' properties set in this.data. It uses
|
||||||
* this.marker.icon as default anchor.
|
* this.marker.icon as default anchor.
|
||||||
@@ -132,7 +133,7 @@ OpenLayers.Feature.prototype= {
|
|||||||
*
|
*
|
||||||
* @type OpenLayers.Popup.AnchoredBubble
|
* @type OpenLayers.Popup.AnchoredBubble
|
||||||
*/
|
*/
|
||||||
createPopup: function() {
|
createPopup: function(closeBox) {
|
||||||
|
|
||||||
if (this.lonlat != null) {
|
if (this.lonlat != null) {
|
||||||
|
|
||||||
@@ -143,7 +144,7 @@ OpenLayers.Feature.prototype= {
|
|||||||
this.lonlat,
|
this.lonlat,
|
||||||
this.data.popupSize,
|
this.data.popupSize,
|
||||||
this.data.popupContentHTML,
|
this.data.popupContentHTML,
|
||||||
anchor);
|
anchor, closeBox);
|
||||||
}
|
}
|
||||||
return this.popup;
|
return this.popup;
|
||||||
},
|
},
|
||||||
|
|||||||
+10
-2
@@ -45,6 +45,9 @@ OpenLayers.Popup.prototype = {
|
|||||||
|
|
||||||
/** @type DOMElement */
|
/** @type DOMElement */
|
||||||
contentDiv:null,
|
contentDiv:null,
|
||||||
|
|
||||||
|
/** @type DOMElement */
|
||||||
|
groupDiv:null,
|
||||||
|
|
||||||
/** @type int */
|
/** @type int */
|
||||||
padding: 5,
|
padding: 5,
|
||||||
@@ -84,13 +87,18 @@ OpenLayers.Popup.prototype = {
|
|||||||
this.div = OpenLayers.Util.createDiv(this.id, null, null,
|
this.div = OpenLayers.Util.createDiv(this.id, null, null,
|
||||||
null, null, null, "hidden");
|
null, null, null, "hidden");
|
||||||
this.div.className = 'olPopup';
|
this.div.className = 'olPopup';
|
||||||
|
|
||||||
|
this.groupDiv = OpenLayers.Util.createDiv(null, null, null,
|
||||||
|
null, "relative", null,
|
||||||
|
"hidden");
|
||||||
|
|
||||||
var id = this.div.id + "_contentDiv";
|
var id = this.div.id + "_contentDiv";
|
||||||
this.contentDiv = OpenLayers.Util.createDiv(id, null, this.size.clone(),
|
this.contentDiv = OpenLayers.Util.createDiv(id, null, this.size.clone(),
|
||||||
null, "relative", null,
|
null, "relative", null,
|
||||||
"hidden");
|
"hidden");
|
||||||
this.contentDiv.className = 'olPopupContent';
|
this.contentDiv.className = 'olPopupContent';
|
||||||
this.div.appendChild(this.contentDiv);
|
this.groupDiv.appendChild(this.contentDiv);
|
||||||
|
this.div.appendChild(this.groupDiv);
|
||||||
|
|
||||||
if (closeBox == true) {
|
if (closeBox == true) {
|
||||||
// close icon
|
// close icon
|
||||||
@@ -102,7 +110,7 @@ OpenLayers.Popup.prototype = {
|
|||||||
img);
|
img);
|
||||||
closeImg.style.right = this.padding + "px";
|
closeImg.style.right = this.padding + "px";
|
||||||
closeImg.style.top = this.padding + "px";
|
closeImg.style.top = this.padding + "px";
|
||||||
this.div.appendChild(closeImg);
|
this.groupDiv.appendChild(closeImg);
|
||||||
|
|
||||||
var closePopup = function(e) {
|
var closePopup = function(e) {
|
||||||
this.hide();
|
this.hide();
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ OpenLayers.Popup.AnchoredBubble.prototype =
|
|||||||
if (firstTime) {
|
if (firstTime) {
|
||||||
OpenLayers.Rico.Corner.round(this.div, options);
|
OpenLayers.Rico.Corner.round(this.div, options);
|
||||||
} else {
|
} else {
|
||||||
OpenLayers.Rico.Corner.reRound(this.contentDiv, options);
|
OpenLayers.Rico.Corner.reRound(this.groupDiv, options);
|
||||||
//set the popup color and opacity
|
//set the popup color and opacity
|
||||||
this.setBackgroundColor();
|
this.setBackgroundColor();
|
||||||
this.setOpacity();
|
this.setOpacity();
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
t.eq(popup.div.style.width, w + "px", "width position of popup.div set correctly");
|
t.eq(popup.div.style.width, w + "px", "width position of popup.div set correctly");
|
||||||
t.eq(popup.div.style.height, h + "px", "heightposition of popup.div set correctly");
|
t.eq(popup.div.style.height, h + "px", "heightposition of popup.div set correctly");
|
||||||
|
|
||||||
var contentDiv = popup.div.childNodes[0];
|
var contentDiv = popup.div.childNodes[0].childNodes[0];
|
||||||
|
|
||||||
t.eq(contentDiv.className, "olPopupContent", "correct content div className");
|
t.eq(contentDiv.className, "olPopupContent", "correct content div className");
|
||||||
t.eq(contentDiv.id, "chicken_contentDiv", "correct content div id");
|
t.eq(contentDiv.id, "chicken_contentDiv", "correct content div id");
|
||||||
|
|||||||
Reference in New Issue
Block a user