2016-02-29 1 views
0

J'essaie de combiner l'exemple OSL OpenLayers avec les résultats que j'ai obtenus de query.wikidata.org, mais il semble que je fais la mauvaise transformation. Quelle serait la bonne transformation de long et lat?OpenLayers LonLat transformation

<html><body> 
    <div id="mapdiv"></div> 
    <script src="http://www.openlayers.org/api/OpenLayers.js"></script> 
    <script> 
    map = new OpenLayers.Map("mapdiv"); 
    map.addLayer(new OpenLayers.Layer.OSM()); 

    var lonLat = new OpenLayers.LonLat(40.228055555556, 27.242222222222) 
      .transform(
      new OpenLayers.Projection("EPSG:900913"), // transform from WGS 1984 
      map.getProjectionObject() // to Spherical Mercator Projection 
     ); 

    var zoom=16; 

    var markers = new OpenLayers.Layer.Markers("Markers"); 
    map.addLayer(markers); 

    markers.addMarker(new OpenLayers.Marker(lonLat)); 

    map.setCenter (lonLat, zoom); 
    </script> 
</body></html> 
+1

Qu'entendez-vous par * "il semble que je fais la mauvaise transformation" *? Qu'attendez-vous de voir et qu'allez-vous obtenir? – kryger

+0

J'utilise https://www.openstreetmap.org pour voir où se trouve le lat long. Par exemple, la bataille d'Aachen Point (50.766666666667 6.1) a eu lieu à Aix-la-Chapelle. Donc je m'attends à ce qu'il montre Aachen, mais à la place il montre le marqueur quelque part vraiment différent. – Spoom

Répondre

2

La transformation est erroné: votre variable lonLat est en EPSG: 4326, vous devez donc transformer de EPSG: 4326 EPSG: 900913

var lonLat = new OpenLayers.LonLat(27.242222222222, 40.228055555556) 
     .transform(
     new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 
     map.getProjectionObject() // to Spherical Mercator Projection 
    ); 
+0

Merci, mais je suppose que c'est encore faux, car il devrait être quelque part en Turquie. http://www.openstreetmap.org/search?query=40.228055555556%2C%2027.242222222222#map=6/40.229/27.235 – Spoom

+1

J'ai édité la réponse ci-dessus. La commande est (lon, lat), pas (lat, lon) comme dans la version précédente de l'extrait. – ahocevar

0

Lorsque vous utilisez Leaflet il n'est pas nécessaire de faire des transformation.

var map = L.map('map').setView(40.228055555556, 27.242222222222], 
    13); 

L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { 
    attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' 
}).addTo(map); 

L.marker([40.228055555556, 27.242222222222]).addTo(map) 
    .bindPopup('A pretty CSS3 popup.<br> Easily customizable.') 
    .openPopup();