Hogyan hozzunk létre és törölhet OpenLayers található tooltip - dotnetninja
Nemrég volt, hogy végre tippek, hogy a vektoros objektumokat a OpenLayers térképen. Tettem leírt mail-archive.com. de ahogy mozoghat a térképen volt egy hiba a módszer az objektum OpenLayers.Popup hide (), miután az első megjelenése a tooltip «»this.div.style«- van null vagy nem egy tárgy” vagy «this.div null».
map.addLayer (markerek);
// Létrehozunk válasszuk az tooltips (OpenLayers Feature Tooltip)
var highlightCtrl = new OpenLayers.Control.SelectFeature (markerek, lebeg: igaz,
highlightOnly: igaz,
renderIntent: 'ideiglenes',
eventListeners: featurehighlighted: tooltipSelect,
featureunhighlighted: tooltipUnselect
>
>);
// vezérlést a térképen
map.addControl (highlightCtrl);
// aktiválja tooltip ellenőrzés
highlightCtrl.activate ();
függvény tooltipSelect (args) if (typeof args.feature.tooltip! = 'definiálatlan' args.feature.tooltip = null) visszatérési !;
>
// eltávolítani tooltip, ha létezik
if (tooltipPopup = null!) map.removePopup (tooltipPopup);
tooltipPopup.destroy ();
tooltipPopup = null;
>
var htmlContent = ''+ Args.feature.attributes.name +'
„
. Var Center = args.feature.geometry.getBounds () getCenterLonLat ();
tooltipPopup = new OpenLayers.Popup (activetooltip "
központ,
új OpenLayers.Size (240, 25),
htmlContent,
false);
tooltipPopup.closeOnMove = true;
tooltipPopup.autoSize = true;
// állítsa tooltip stílus
tooltipPopup.backgroundColor = '# 000;
tooltipPopup.opacity = 0,85;
// jQuery borítás
$ (TooltipPopup.div) .css (border-width: '1px'
Border-color: '# 000'
'Border-sugár': '4px',
"Border-style: a 'szilárd',
„Betét”: „1px”
Margin-left: '10px'
'Margin-top': '4px'
>);
// jQuery borítás
$ (TooltipPopup.contentDiv) .css (overflow ": 'rejtett',
„Betét”: „8 képpont”,
'Color': '#fff'
>);
args.feature.tooltip = tooltipPopup;
map.addPopup (args.feature.tooltip);
>
működni tooltipUnselect (args) if (typeof args.feature.tooltip! == 'definiálatlan' args.feature.tooltip == null) map.removePopup (args.feature.tooltip) !;
args.feature.tooltip.destroy ();
args.feature.tooltip = null;
tooltipPopup = null;
>
>
[/ Code]
Hiba volt, hogy nézd meg a forráskódot, és példákat OpenLayers OpenLayers.Popup. A OpenLayers 2,11 hiba továbbra is fennáll: a példák, hogy láttam boltban létrehozott egy ablak felugró asszociatív tömbök, és amikor újra rákattint a legfontosabb, hogy ki onnan, és csak megváltoztatni a tartalmat (olyasmi, mint egy szótár vagy sablon objektum Pool, ahol a létesítmény objektum - egy bonyolult művelet, és ezért felesleges tárgyakat „tiszta”, és tegye a „hátizsák”). Talán ez egy jó ötlet - de úgy döntöttem, hogy mentse fel memóriát, és törölje felugró teljesen.
map.addLayer (markerek);
// Létrehozunk válasszuk az tooltips (OpenLayers Feature Tooltip)
var highlightCtrl = new OpenLayers.Control.SelectFeature (markerek, lebeg: igaz,
highlightOnly: igaz,
renderIntent: 'ideiglenes',
eventListeners: featurehighlighted: tooltipSelect,
featureunhighlighted: tooltipUnselect
>
>);
// vezérlést a térképen
map.addControl (highlightCtrl);
// aktiválja tooltip ellenőrzés
highlightCtrl.activate ();
függvény tooltipSelect (args) if (typeof args.feature.tooltip! = 'definiálatlan' args.feature.tooltip = null) visszatérési !;
>
// eltávolítani tooltip, ha létezik
if (tooltipPopup = null!) map.removePopup (tooltipPopup);
tooltipPopup.destroy ();
tooltipPopup = null;
>
var htmlContent = ''+ Args.feature.attributes.name +'
„
. Var Center = args.feature.geometry.getBounds () getCenterLonLat ();
tooltipPopup = new OpenLayers.Popup (activetooltip "
központ,
új OpenLayers.Size (240, 25),
htmlContent,
false);
tooltipPopup.closeOnMove = true;
tooltipPopup.autoSize = true;
// állítsa tooltip stílus
tooltipPopup.backgroundColor = '# 000;
tooltipPopup.opacity = 0,85;
// jQuery borítás
$ (TooltipPopup.div) .css (border-width: '1px'
Border-color: '# 000'
'Border-sugár': '4px',
"Border-style: a 'szilárd',
„Betét”: „1px”
Margin-left: '10px'
'Margin-top': '4px'
>);
// jQuery borítás
$ (TooltipPopup.contentDiv) .css (overflow ": 'rejtett',
„Betét”: „8 képpont”,
'Color': '#fff'
>);
args.feature.tooltip = tooltipPopup;
map.addPopup (args.feature.tooltip);
>
működni tooltipUnselect (args) if (typeof args.feature.tooltip! == 'definiálatlan' args.feature.tooltip == null) map.removePopup (args.feature.tooltip) !;
// fix: térkép ingatlan
args.feature.tooltip.map = térkép;
args.feature.tooltip.destroy ();
args.feature.tooltip = null;
tooltipPopup = null;
>
>
[/ Code]