#1 Mon 03 December 2007 14:25
[CartoWeb] problème plugin pour zoomer sur une commu
Bonjour à tous,
J'ai essayé de mettre en place une fonction de zoom sur un polygone.
L'utilisateur choisi un département dans une liste déroulante, et en fonction du département, une liste de commune est proposé.
Pour faire cela, j'ai procédé ainsi :
- création des raccourcis des départements et des communes dans monprojet/server_conf/monprojet/location.ini
- modification de monprojet/coreplugins/location/templates/shortcuts.tpl
- ajout des fonctions javascript pour initialiser la liste de mes communes en fonction du département choisi dans monprojet/htdocs/js/shortcuts_reg.js
- intégration dans monprojet/templates/cartoclient.tpl
- activation du plugin dans monprojet/server_conf/monprojet/monprojet.ini
Voici les codes :
shortcuts_reg.js :
function maj_com(dept) {
document.getElementById('departement').disabled="t rue";
if (dept==02){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=10;i<=827;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);}
}
if (dept==14){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=828;i<=1534;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);}
}
if (dept==27){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=1535;i<=2210;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);} }
}
if (dept==50){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=2211;i<=2812;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);} }
}
if (dept==59){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=2813;i<=3463;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);} }
}
if (dept==60){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=3464;i<=4158;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);} }
}
if (dept==61){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=4159;i<=4667;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);} }
}
if (dept==62){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=4668;i<=5572;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);} }
}
if (dept==76){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=5573;i<=6318;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);} }
}
if (dept==80){
j=0;
document.getElementById('communes').options[j] = new Option("","");
for (i=6319;i<=7102;i++){
j++;
document.getElementById('communes').options[j] = new Option(document.getElementById('shortcut_id').opti ons[i].text,document.getElementById('shortcut_id').optio ns[i].value);} }
}
function zoom() {
i=document.getElementById('communes').options[document.getElementById('communes').options.select edIndex].value;
i=parseInt(i)+1;
document.getElementById('shortcut_id').options[i].selected = true;
document.carto_form.shortcut_doit.value=1;
FormItemSelected();
}
cartoclient.tpl :
<div id="folder2" class="folder">
{if $id_recenter_active|default:''}
{$id_recenter}
{/if}
{if $shortcuts_active|default:''}
{$shortcuts}
{/if}
<table>
<td>
{t}Departement{/t}
<br><br>
{t}Commune{/t}
</td>
<td>
<SELECT NAME="departement" ID="departement" onChange="maj_com(departement.value);">
<OPTION VALUE="">
<OPTION VALUE="02">Aisne
<OPTION VALUE="14">Calvados
<OPTION VALUE="27">Eure
<OPTION VALUE="50">Manche
<OPTION VALUE="59">Nord
<OPTION VALUE="60">Oise
<OPTION VALUE="61">Orne
<OPTION VALUE="62">Pas-de-Calais
<OPTION VALUE="76">Seine-Maritime
<OPTION VALUE="80">Somme
</SELECT>
<br><br>
<SELECT NAME="com_dept" ID="com_dept" onChange="zoom();" style='width: 200px' >
</SELECT>
</td>
</table>
</div>
Mon problème vient du fait que je peux sélectionner un département dans ma liste déroulante, mais ensuite ma liste de communes n'est pas initialisée.
J'ai l'impression que mon javascript (shortcuts_reg.js) n'est pas pris en compte.
Quelqu'un a t-il une solution ?
Avez-vous déjà réalisé cette fonction ?
Merci bien
Yohann
Dernière modification par cyohann (Mon 03 December 2007 15:17)
Hors ligne