2015-01-11 5 views
5

Pracuję nad otwartymi warstwami 3 i chcę zaimplementować funkcję wyszukiwania, która pobiera nazwę miejsca i umieszcza znacznik na mapie. Jestem w stanie uzyskać współrzędne, ale kiedy chcę dodać znacznik na mapie, zawsze znajduję dla niego inne lokalizacje. Znacznik miejsca wprowadzania nie jest umieszczany na rzeczywistych współrzędnych mapy.Nie można umieścić znacznika we właściwych współrzędnych za pomocą otwartych warstw 3

Oto kod, na których pracuję:

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

Mam nadzieję, że jasno wyjaśnia mój problem, szukasz rozwiązania do przodu. Z góry dziękuję za poświęcony czas i wsparcie.

Odpowiedz

7

Numer wewnętrzny EPSG: 4326, nie lat, lon. Więc powinieneś zmienić linię, która przetwarza EPSG: 4326 na EPSG: 3857.

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

No nadal ten sam problem, mam wejściem Monachium (rzeczywista Lat/Długi są: +48,1372719, +11,5754815), ale umieszcza znacznik na Lat/Long: +11,557617187499996, -41,60722821271713 – Amir

+0

Ale to działa, jeśli piszę zakodowanego wartości . Jak poniżej: ol.proj.transform ([11.5754815, 48.1372719], "EPSG: 4326", "EPSG: 3857") – Amir

+6

Może twoje wartości lon, lat są ciągami. Konwertuj je na liczby, używając '+ lon' i' + lat', zanim przekażesz je do przekształcenia. – erilem

Powiązane problemy