2015-01-11 21 views
5

Openlayers 3 üzerinde çalışıyorum ve bir yer ismini alan ve harita üzerinde bir işaretçi yerleştiren bir arama işlevi uygulamak istiyorum. Koordinatları alabiliyorum ama harita üzerinde işaretleyici eklemek istediğimde, her zaman bunun için farklı konumlar alıyorum. Giriş yerinin işaretçisi haritanın gerçek koordinatlarına yerleştirilmiyor.Openlayers kullanarak doğru koordinatlarda işaretleyici yerleştirilemiyor 3

function addmarker(lat, long, pointerimgsrc){ 

    var iconFeature = new ol.Feature({  
     geometry: new ol.geom.Point(ol.proj.transform([lat, long], 'EPSG:4326', 'EPSG:3857')), 
     name: 'NULL' 
     }); 


    var iconStyle = new ol.style.Style({ 
     image: new ol.style.Icon(({ 
     anchor: [0.5, 46], 
     anchorXUnits: 'fraction', 
     anchorYUnits: 'pixels', 
     opacity: 0.75, 
     //src: 'data/icon.png' 
     src: pointerimgsrc 
     })) 
    }); 

    iconFeature.setStyle(iconStyle); 

    vectorSource = new ol.source.Vector({ 
     features: [iconFeature] 
    }); 

    vectorLayer = new ol.layer.Vector({ 
     source: vectorSource 
    }); 

    map.addLayer(vectorLayer); 

}// END addmarkerr() 

Ben açıkça bir çözüm için ileriye dönük, sorunumu açıkladım umut: Burada

ben çalışıyorum hangi koddur. Zamanınız ve desteğiniz için şimdiden çok teşekkür ederim.

cevap

7

EPSG: 4326 koordinat sırası lon, lat değil lat, lon. Yani EPSG: 4326’yı EPSG: 3857 dönüşümü yapan çizgiyi değiştirmelisiniz.

ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857') 
+0

Hayır hala aynı sorun, ben Münih giriyorum (gerçek Enlem/Uzun şunlardır: 48,1372719, 11,5754815) ama Lat/Long işaretçiyi yerleştirir: 11,557617187499996, -41,60722821271713 – Amir

+0

Ama sert kodlanmış değerleri yazarsanız, işleri . Aşağıdaki gibi: ol.proj.transform ([11.5754815, 48.1372719], 'EPSG: 4326', 'EPSG: 3857') – Amir

+6

Belki de lonlarınız lat değerleridir. Dönüştürmek için iletmeden önce, onları '+ lon' ve '+ lat 'kullanarak sayılara dönüştürün. – erilem

İlgili konular