:: Yves Jacolin :: Ludovic Granjon :: Softlibre :: OSGeo-fr ::
"Quand on veut reprendre avec utilité, et montrer à un autre qu'il se trompe, il faut observer par quel côté il envisage la chose, car elle est vraie ordinairement de ce côté-là, et lui avouer cette vérité, mais lui découvrir le côté où elle est fausse." Pascal, Pensées Br. 9, Lafuma 5.

Sommaire


Trucs et astuces

Généralité

Quels sont les navigateurs gérés par OpenLayers ?

La liste officielle est située sur cette page, voici un extrait :

  • Mozilla v1.8
  • FireFox? 1.0+
  • Internet Explorer 6.0+
  • Safari v2.0+
  • Opera v9.0+
  • Netscape vX.X

Comment accélérer la vitesse d'affichage des tuiles ?

Vous avez deux manières pour accélérer la vitesse d'affichage des tuiles :

  1. {buffer: 0} dans les options de vos couches. cela diminuera les tuiles chargées en dehors de la carte d'une façon importante. Si le chargement des tuiles est lent, faites cela en premier.
  2. URL en multi-hôtes : http://a.myserver.example.com, http://b.myserver.example.com/ . De cette manière, le navigateur chargera plus de tuiles à la fois. Le nombre d'hôtes optimal est probablement de 3. Voyez l'exemple multiserver.html.

Comment forcer le chargement des tuiles lors d'un échec ?

Insérez cette ligne dans votre code javascript :

OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;

Class GML

La méthode map.addLayer accepte seulement un seul paramètre.

map.addLayer(new OpenLayers.Layer.GML("Regions", "gml/output.gml"));

Pour appliquer un style à la couche GML, il faut lui donner une option :

map.addLayer(new OpenLayers.Layer.GML(“Regions”, “gml/output.gml”,{style: style_green}));

D'autres options sont possibles :

fillColor: "#ee9900"
fillOpacity: 0.4

zoomToScale

Is it possible to zoom at a specified scale with openlayers ?

Currently, when you define your map, you make a fixed list of scales.

However, you can change this list on the layer. It's possibly not the most sane solution, but what you can do is this:

m = new OpenLayers.Map("map");
l = new OpenLayers.Layer.WMS(etc.)
m.addLayer(l);

then to pick a scale:

l.resolutions = [OpenLayers.Util.getResolutionFromScale(20000)];
m.zoomTo(1);
m.zoomTo(0);

zoomToExtent

Comment zoomer sur une bbox ?

bbox ="594467,2423939,606334,2433389";
map.zoomToExtent(new OpenLayers.Bounds(bbox));

Mise en page

Comment modifier la boite de control de la position de la souris ?

Placer ceci dans votre fichier css :

div.olControlMousePosition {
 bottom: 0em;
 right: 3px;
 display: block;
 position: absolute;
 font-family: Arial;
 color: #ffffff;
 font-size: 13px;
 font-weight:bold;
}

Comment modifier le style du pop-up ?

I would like to configure the markers' popup boxes so they look a little nicer, maybe add a border and a background color, that sort of thing.

The JS to generate the popups is in lib/OpenLayers/Layer/GeoRSS.js around line 150. The CSS items in question are :

div.olPopup                  The popup div itself.
div.olPopupContent         Inside the popup, contains the items below.
div.olLayerGeoRSSClose     The X in the popup.
div.olLayerGeoRSSTitle     The title.
div.olLayerGeoRSSTitle link   The title hyperlink itself.
div.olLayerGeoRSSDescription   The description.

Comment afficher par défaut le layerSwitcher ?

var layer_switcher = new OpenLayers.Control.LayerSwitcher(); map.addControl(layer_switcher); layer_switcher.maximizeControl();

Comment ajouter une icône au dessus de la carte ?

Uniquement en ajoutant du code html de ce type :

<div id="map">      
  <div id="arrow" style="position: relative; top: 30px; left: 400px;">
    <img src="arrow.png" />
  </div>
</div

L'utilisation d'une boite de contrôle est une mauvaise idée.

TileCache

Les tuiles ne coincident pas exactement, le texte/ligne/polygone sont coupés entre deux tuiles !

Définissez le paramètre metaTile à True dans votre fichier de config de TileCache

metaTile=yes

Comment calculer la résolution d'une carte sous OpenLayers ?

La résolution est une unité par pixel, plutôt que par tuile : vous désirez probablement quelques chose comme 0.140625 (36 degrés / 256) pour obtenir des carrés de 36 degrés.

Marker

Comment modifier l'icône des objets ?

OpenLayers.Layer.GeoRSS inherets from OpenLayers.Layer.Markers (http://dev.openlayers.org/docs/files/OpenLayers/Layer/Markers-js.html# OpenLayers.Layer.Markers). Trying to add the marker with the addMarker method will probably solve your problem.

var layer = new OpenLayers.Layer.GeoRSS(...)
var marker = new OpenLayers.Marker(
                new OpenLayers.LonLat(y,x), 
                  new OpenLayers.Icon(
                  path, // e.g. "http://openlayers.org/api/img/marker.png" 
                   new OpenLayers.Size(img_w,img_h)
                    )); 
Layer.addMarker(marker)

Layers

Comment recharger une couche geoRSS ?

En désactivant la couche puis en la rechargeant :

layer.loaded = false;
layer.loadRSS();

Notez que cette manière de faire n'est pas propre à l'API et que les méthodes peuvent évoluer. Une autre méthode consiste à charger une nouvelle couche à chaque nouveau chargement.

Sources

Les sources issus de cette page sont diverses :

  • liste de diffusion
  • FAQ OpenLayers traduite

Yves Jacolin 2008/07/17 21:49

Contact - Information et copyright - Statistique

Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki