Le code ezpublish associé à géoportail (contenu dans le fichier ezgeoportail.tpl), quelque peu retouché par rapport au fichier d'origine de l'extension ezgeoportail pour notamment l'ajout de couches kml est le suivant :
(la partie modifiée se situe au niveau du de la fonction initGeoportalMap() )
$latitude = $attribute.content.latitude|explode(',')|implode('.')
$longitude = $attribute.content.longitude|explode(',')|implode('.')
$zoom = $attribute.content.zoom|explode(',')|implode('.')
{run-once}
<script type="text/javascript" src="http://api.ign.fr/geoportail/api/js/2.0.3/Geoportal.js" charset="utf-8"></script>
<div id="viewerDiv" style="height: 700px;width:598px"></div>
<script type="text/javascript">
{literal}
<!--
var popup = null;
viewer= null;
if (window.__Geoportal$timer===undefined) {
var __Geoportal$timer= null;
}
var Browser = {
Version: function() {
var version = 999; // we assume a sane browser
if (navigator.appVersion.indexOf("MSIE") != -1)
// bah, IE again, lets downgrade version number
version = parseFloat(navigator.appVersion.split("MSIE")[1]);
return version;
}
}
var version = Browser.Version();
if (version < 8)
{
document.getElementById("viewerDiv").innerHTML = "";
alert("Vous utilisez actuellement une version d'Internet explorer non supportée.\nMerci de le mettre Ã* jour ou de changer de navigateur.");
}
{/literal}
{def
$strl = $attribute.content.affpopup
$nb = $strl|count_chars()
$lcon = $strl|extract(0, $nb)|explode(";")
$i = 0}
{literal}
// la variable viewer n'est plus déclarée par l'API
viewer= null;
function initGeoportalMap() {
var map = Geoportal.load(
// div's ID:
'viewerDiv',
// API's keys:
['*********************'],
{// map's center :
// longitude:
lon:{/literal}{$longitude}{literal},
// latitude:
lat:{/literal}{$latitude}{literal}
},
{/literal}{$zoom}{literal},
{
language:'fr',
viewerClass:'Geoportal.Viewer.Default',
layersOptions:{
'ORTHOIMAGERY.ORTHOPHOTOS':{
visibility:false,
opacity:1
},
'GEOGRAPHICALGRIDSYSTEMS.MAPS':{
visibility:true,
opacity:1
}
},
// Une fois géoportail chargé
onView: function() {
// Ajout des fichiers KML
{/literal}
{* Récupération des fichiers KML ou GPX *}
{if $attribute.object.data_map.files_sig.has_content}
{foreach $attribute.object.data_map.files_sig.content.relation_list as $cle=>$fic}
{def $n_fic = fetch( 'content', 'node', hash( 'node_id', $fic.node_id ) )}
{* Récupération extension *}
{def $extension = $n_fic.data_map.file.content.filepath | extract_right(3)}
{def $ext = $extension | upcase()}
{def $chemin_sig = $n_fic.data_map.file.content.filepath}
{literal}
this.getViewer().getMap().addLayer(
"{/literal}{$ext}{literal}",
"{/literal}{$n_fic.data_map.name.data_text}{literal}",
"{/literal}{$chemin_sig | ezurl(no)}{literal}",
{
visibility:false
}
);
{/literal}
{undef $n_fic $extension $ext $chemin_sig}
{/foreach}
{/if}
{literal}
// Affichage des fenêtres
this.getViewer().openToolsPanel(false);
this.getViewer().openLayersPanel(false);
this.getViewer().setInformationPanelVisibility(false);
},
// Redimensionnement du logo
componentsOptions:{
'Geoportal.Component.LegalNotice.Logo':{
logoSize:25
}
}
}
);
}
function __checkApiLoading(retryClbk,clss) {
if (__Geoportal$timer!=null) {
//clearTimeout: annule le minuteur "__Geoportal$timer" avant sa
//fin
window.clearTimeout(__Geoportal$timer);
__Geoportal$timer= null;
}
/**
* Il se peut que l'init soit exécuté avant que l'API ne soit chargée
* Ajout d'un code temporisateur qui attend 300 ms avant de relancer
* l'init
*/
var f;
for (var i=0, l= clss.length; i<l; i++) {
try {
f= eval(clss[i]);
} catch (e) {
f= undefined;
}
if (typeof(f)==='undefined') {
__Geoportal$timer= window.setTimeout(retryClbk, 300);
return false;
}
}
return true;
}
function __loadClassesAPI() {
// on attend que les classes soient chargées
if (__checkApiLoading(__loadClassesAPI,['OpenLayers','Geoportal','Geoportal.Viewer','Geoportal.Viewer.Default'])===false) {
return;
}
// on charge la configuration de la clef API, puis on charge l'application
Geoportal.GeoRMHandler.getConfig(['*********************'], null, null, {
onContractsComplete: initGeoportalMap
});
}
function __loadPageAPI(e) {
// Remove it for Gecko based browsers
if (window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",__loadPageAPI,false);
// and for IE and Opera 4.x
else if(window.detachEvent) window.detachEvent("onload",__loadPageAPI);
__loadClassesAPI();
}
if(window.addEventListener) window.addEventListener("load",__loadPageAPI,false);
else if (window.attachEvent) window.attachEvent("onload",__loadPageAPI);
{/literal}
</script>
{/run-once}
Le problème persiste si je remplace le code javascript par celui de l'exemple
http://api.ign.fr/tech-docs-js/examp...simple1.1.html.
Partager