2016-02-29 290 views
0

我想结合OSM OpenLayers示例与我从query.wikidata.org得到的结果,但似乎我做了错误的转换。 什么是长期和拉特的正确转变?OpenLayers LonLat转换

<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

你是什么意思?*“好像我在做错误的转变”*?你期望看到什么,你究竟得到了什么? – kryger

+0

我正在使用https://www.openstreetmap.org来查看长lat的实际位置。例如亚琛战役(50.766666666667 6.1)在亚琛战役。所以我希望它能够展示亚琛,但它却显示出真正不同的标记。 – Spoom

回答

2

转型是错误的:你lonLat变量是EPSG:4326,所以你应该从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

谢谢,但我想这仍然是错误的,因为它应该在土耳其的某个地方。 http://www.openstreetmap.org/search?query=40.228055555556%2C%2027.242222222222#map=6/40.229/27.235 – Spoom

+1

我编辑了上面的答案。顺序是(lon,lat),而不是(lat,lon),就像在前面版本的代码段中一样。 – ahocevar

0

当使用Leaflet也没有必要做任何转型。

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();