Je chante OpenLayers pour afficher une carte. Je veux centrer la carte en utilisant les coordonnées latLon. J'utilise le code de démarrage rapide pour commencer. En utilisant ce code, je ne peux pas changer le centre de la carte. Je pense que cela a quelque chose à voir avec Spherical Mercator projection
. La seule chose est que je n'ai que des coordonnées lat lon.
Quelqu'un sait-il comment centrer une carte à partir d'Openlayers v3?
Vous devez transformer les coordonnées lon/lat en projection correcte (ou système de coordonnées) à l'aide
var olCoordinates = ol.proj.transform([lon, lat],"WGS84", "EPSG:900913")
Vous pouvez maintenant définir le centre avec olCorrdinates.
Différentes projections ont des noms de code différents. WGS84 est lon/lat "normal" et EPSG: 900913 est la projection souvent utilisée dans les cartes Web comme google maps, openstreetmap et bing.
Je pense que OpenLayers 3 a un support intégré pour la transformation à partir de WGS84/EPSG: 4326 (lon/lat), mais si vous devez convertir vers ou depuis d'autres systèmes de coordonnées, vous pouvez inclure la bibliothèque proj4js. Openlayers s'intégrera à cette lib et pourra effectuer les transformations de la même manière.
Transformez la documentation http://openlayers.org/en/v3.1.1/apidoc/ol.proj.html
Proj4 lib https://github.com/proj4js/proj4js
Modifier: Dans l'exemple auquel vous vous référez, l'emplacement central est en fait défini avec lon/lat.
view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
zoom: 4
})
EPSG: 4326 est en fait identique à WGS84 et EPSG: 3857 est identique à EPSG: 900913. C'est très déroutant. Je m'y suis rendu moi-même.
Vous avez juste besoin de changer les nombres 37,41 et 8,82 en vos coordonnées lon/lat. Si vous souhaitez modifier l'emplacement central après l'initialisation, vous devrez utiliser setCenter ();
map.getView().setCenter(ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857'))
OpenLayers introduit ol.proj.fromLonLat
et ol.proj.toLonLat
fonctions mars 2015 .
Pour centrer la carte, vous souhaiterez peut-être l'utiliser lors de l'initialisation
view: new ol.View({
center: ol.proj.fromLonLat([lon, lat])
})
ou après la création de la carte
map.getView().setCenter(ol.proj.fromLonLat([lon, lat]))
Bien qu'ils soient juste des wrappers of ol.proj.transform
, je les trouve plus simples à utiliser.
Les Web Mercators par défaut sont EPSG:4326
et EPSG:3857
.
Comme Ole Borgersen déclare , WGS84
est le même que EPSG:4326
qui est le type de coordonnées Long-Lat avec lequel nous avons l'habitude de travailler.
ol.proj.fromLonLat([lon, lat]);
// is equivalent of
ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857')
ol.proj.toLonLat([lon, lat]);
// is equivalent of
ol.proj.transform([lon, lat], 'EPSG:3857', 'EPSG:4326')
dépend de la façon dont vous utilisez?
Pour une utilisation uniquement par navigateur:
<script src='https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js'></script>
ol.proj.transform()
ol.proj.transform([long, lat], 'EPSG:4326', 'EPSG:3857');
Pour une utilisation js-app
// for projection
import {transform} from 'ol/proj.js';
// use this one : transform([-118.246521, 34.049039], 'EPSG:4326', 'EPSG:3857')
var map = new Map({
layers: layers,
target: 'map',
view: new View({
//center: [-118.246521, 34.049039],
center: transform([-118.246521, 34.049039], 'EPSG:4326', 'EPSG:3857'),
zoom: 16
})
});