Bonjour,

Ma question est très spécifique vu qu'elle concerne du webmapping (cartographie web).

Pour cela, on utilise régulièrement deux langages de programmation principaux : le JS et le PHP.
OpenLayers est un framework en JS.

Je cherche à renseigner le champ qui détermine le centre de la carte par défaut. En gros, je lui demande "centre moi la carte à telle ou telle coordonnée".

Voici le code en entier (HTML, JS, PHP et CSS)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?php
 
$conn = pg_connect("dbname='***' user='***' password='***' host='***' port='***'");
 
if(!$conn) {
    echo "Not connected".pg_error();
    exit;
 
}
 
        $emp_nord = $_POST['emp_nord'];
        $emp_est = $_POST['emp_est'];
 
 
if (empty($_POST['emp_nord']) && empty($_POST['emp_est'])) {
 
                $req="SELECT emp_nord_1, emp_est_1 FROM emprise WHERE id=1";
                $result=pg_query($conn, $req);
 
                $arr = pg_fetch_array($result,null, PGSQL_BOTH);
 
                $center = $arr["emp_nord_1"].','.$arr["emp_est_1"];
 
                }
                else
                {
                    $req1= "UPDATE emprise SET emp_nord_1='$emp_nord', emp_est_1='$emp_est' WHERE id=2";
                    $req2= "SELECT * FROM vw_center_map";
 
                    if(isset($_POST['add']))
                        {
                                $result1=pg_query($conn, $req1); //fait la maj de la base -> écriture
                                $result2=pg_query($conn, $req2); //sélectionne emp_nord_1 et emp_est_1 -> lecture
 
                        $arr2 = pg_fetch_array($result2,null, PGSQL_BOTH);
                        $center = $arr2["emp_nord_1"].','.$arr2["emp_est_1"];
                                    }
                }
 
?>
 
<html>
<head>
            <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
 
            <link rel="stylesheet" type="text/css" href="https://openlayers.org/en/latest/css/ol.css"/>
            <link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/Viglino/ol-ext/master/dist/ol-ext.min.css" />  
            <script src="https://openlayers.org/en/latest/build/ol.js"></script>
            <script type="text/javascript" src="https://cdn.rawgit.com/Viglino/ol-ext/master/dist/ol-ext.min.js"></script> 
</head>
 
<body>
 
<div id="tableau">
    <form method="post">
    <input type="text" id="emp_est" name="emp_est" placeholder="X"/>
    <input type="text" id="emp_nord" name="emp_nord" placeholder="Y"/>
    <input type="submit" class="add" name="add" value="Valider"/>
    </form>
</div>
<div id="carte">
 
    </div>
 
</body> 
 
 
 
 
 
 
 
 
 
 
<script type="text/javascript">
 
var map = new ol.Map({
        target: 'carte',
 
        controls: ol.control.defaults().extend([ new ol.control.ScaleLine()]),
    });
 
        // VIEW
    map.setView(new ol.View({
projection:'EPSG:3857',
            center:[<?php
if($center){
         echo $center;}
        ?>],
            zoom: 7 
        })
    );
var donnees_osm =new ol.source.OSM() 
 
    //OpenStreetMap
var couche_osm = new ol.layer.Tile({
            source: donnees_osm,
            type:'base',
            title:'OpenStreetMap'
 
    });
 
//CANVAS
    map.addLayer(couche_osm);
 
// Controls
 
map.addControl(new ol.control.MousePosition({
projection:'EPSG:4326',
target:'carte',
className:'coordonnees',
coordinateFormat:function(coordinate) {
return ol.coordinate.format(coordinate, 'X : {x}, Y : {y}', 2);
        }
    })
);
 
 
    </script>
 
 
 
 
 
<style type="text/css">
 
      table {
    margin: 18px 0;
    width: 100%;
    border-collapse: collapse;
}
table th,
table td {
    text-align: left;
    padding: 6px;
}
table,
th,
td {
    border: 1px solid #000;
}
 
    #carte{
        height:400px;
        position:relative;
        bottom:0;
        border:1px solid black;
        margin-top:25px;
    }
 
</style>
 
<?php
    pg_close();
    ?>
 
</html>
Dans ma base j'ai une valeur par défaut qui est emp_nord = 0 et emp_est = 0. L'autre valeur est celle de l'utilisateur qui résulte d'un update.

Le problème c'est que le script précédent fonctionne, cependant, cela me renvoie des valeurs aberrantes : quand je rentre les coordonnées de Cherbourg, je me retrouve au large de la Somalie... Je crois qu'il y a un petit problème Mais comment le résoudre....

Soyez indulgent svp, je débute en PHP...

Merci pour votre aide :-)

Sylvain