2012-10-23 97 views
1

嗨,我是使用Openlayer地圖這是我的腳本,圖的是確定,但標記不會工作:OpenLayer地圖標記不工作

var map = new OpenLayers.Map ('open_map', { 
     controls:[ 
     new OpenLayers.Control.Navigation() 
     ], 
     projection: new OpenLayers.Projection("EPSG:900913"), 
     displayProjection: new OpenLayers.Projection("EPSG:4326") 
    }); 
    var lonLat = new OpenLayers.LonLat(_json.lon, _json.lat).transform (
    new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 
    map.getProjectionObject() // to Spherical Mercator Projection 
); 

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

    var size = new OpenLayers.Size(16,27); 
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h); 
    var icon = new OpenLayers.Icon('http://www.google.com/mapfiles/marker.png', size, offset); 
    markers.addMarker(new OpenLayers.Marker(lonLat, icon.clone())); 

    var mapnik = new OpenLayers.Layer.OSM("Test"); 
    map.addLayer(mapnik); 

    map.setCenter (lonLat, 5 /* zoom lvl */); 

    console.log(lonLat); 
console.log(_json.lon); 
console.log(_json.lat); 

這是控制檯日誌:

enter image description here 當我不使用標記地圖縮放正好在lon和lat我通過,而如果我使用標記標記是真正被放在他們需要的地方之外。

有沒有人有建議?

回答

3

目前你:

  1. 創建標記從原始座標
  2. 轉換座標從4326至900913,並利用這些地圖中心。

在_json對象中您的座標是什麼系統?在情況下,它們是EPSG:4325(從-180到180或0到360),從變換後的座標創建標記:

var lonLat = new OpenLayers.LonLat(_json.lon, _json.lat).transform (
    new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 
    new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection 
    // map.getProjectionObject() doesn't work for unknown reason 
); 

markers.addMarker(new OpenLayers.Marker(lonLat, icon)); 
markers.addMarker(new OpenLayers.Marker(lonLat, icon.clone())); 

map.setCenter (lonLat, 5 /* zoom lvl */); 

PS,是否有任何特別的原因,以創建兩個標記,以相同的地方:

markers.addMarker(new OpenLayers.Marker(lonLat, icon.clone())); 
+0

我剛纔複製的openlayer官方網站例如 – sbaaaang

+0

我編輯我的問題,現在標記的作品,但它的推杆出經度和緯度我傳遞給lotLan VAR – sbaaaang

+0

而沒有標記在地圖上的座標都ok – sbaaaang