Afficher une barre d'échelle
Un autre widget typique à afficher sur une carte est la barre d'échelle. OpenLayers fournit un ol.control.ScaleLine
juste pour cela.
Créer un control
de barre d'échelle (ScaleLine
)
Tâches
Ouvrez
map.html
dans votre éditeur de texte.Quelque part dans la configuration de la carte, ajoutez le code suivant pour créer un nouveau
control
de barre d'échelle pour votre carte:controls: ol.control.defaults().extend([ new ol.control.ScaleLine() ]),
Sauvez vos changements et ouvrez
map.html
dans votre navigateur: http://localhost:5173/map.html
Déplacer le control
de type ScaleLine
Vous pouvez trouver la barre d'échelle difficile à lire par dessus le fond image. Il y a quelques approches à prendre en compte pour améliorer la visibilité de l'échelle. Si vous voulez gardez le control
dans la fenêtre d'affichage de carte, vous pouvez ajouter quelques déclarations de style dans le CSS de votre document. Pour tester cela, vous pouvez inclure une couleur de fond et une marge à la barre d'échelle avec quelque chose comme ce qui suit:
.ol-scale-line {
background: black;
padding: 5px;
}
Cependant, pour l'intérêt de l'exercice, admettons que vous pensez que l'affichage de la fenêtre de carte est vraiment absolument trop chargée. Pour éviter cet encombrement, vous pouvez afficher votre échelle dans un lieu différent. Pour accomplir ceci, nous avons besoin en premier de créer un élément additionnel dans notre balisage et ensuite, de dire au control
d'échelle de faire son rendu à l'intérieur de ce nouvel élément.
Tâches
Créez un nouvel élément de type block dans la partie
<body>
de votre page. Pour rendre cet élément facile à être référé, nous lui donnons un attributid
. Insérez le balisage suivant quelque part dans le<body>
de votre pagemap.html
. (en plaçant l'élément d'échelle juste après l'élement de la fenêtre d'affichage de carte<div id="map"></div>
est ce qui parait le plus logique.):<div id="scale-line" class="scale-line"></div>
Maintenant, modifiez le code créant le
control
d'échelle afin qu'il se réfère à l'élémentscale-line
:controls: ol.control.defaults().extend([ new ol.control.ScaleLine({className: 'ol-scale-line', target: document.getElementById('scale-line')}) ]),
Sauvez vos changements et ouvrez
map.html
dans votre navigateur: http://localhost:5173/map.html"Corrigez" la position du
control
avec, par exemple, les règles CSS suivantes:.scale-line { position: absolute; top: 350px; } .ol-scale-line { position: relative; bottom: 0px; left: 0px; }
Maintenant, sauvegardez vos changements et regardez
map.html
à nouveau dans votre navigateur: http://localhost:5173/map.html
Note - Pour créer un control
personnalisé, vous pouvez le faire hériter (en utilisant ol.inherits
) de ol.control.Control
. Pour voir, un exemple de cela, allez-voir: http://openlayers.org/en/latest/examples/custom-controls.html.