2015-01-11 6 views
5

Ich arbeite an Openlayers 3 und möchte eine Suchfunktionalität implementieren, die einen Namen des Ortes erhält und einen Marker auf der Karte positioniert. Ich bin in der Lage, die Koordinaten zu bekommen, aber wenn ich seinen Marker auf der Karte hinzufügen will, bekomme ich immer verschiedene Orte dafür. Die Markierung des Eingabeplatzes wird nicht auf die tatsächlichen Koordinaten der Karte gesetzt. HierKann nicht mit Openlayern den Marker an den richtigen Koordinaten platzieren 3

ist der Code, an dem ich gearbeitet habe:

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

Ich hoffe, ich habe klar mein Problem erklärt, freuen uns auf eine Lösung. Vielen Dank im Voraus für Ihre Zeit und Unterstützung.

Antwort

7

Die EPSG: 4326 Koordinatenreihenfolge lon, lat not lat, lon. Sie sollten also die Zeile ändern, die die Umwandlung EPSG: 4326 in EPSG: 3857 durchführt.

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

Kein noch gleiches Problem, ich bin Eingabe München (tatsächliche Breite/Länge sind: 48,1372719, 11,5754815), aber es legt Marker an Breite/Länge: 11,557617187499996, -41,60722821271713 – Amir

+0

Aber es funktioniert, wenn ich hart codierte Werte schreiben . Wie unten: ol.proj.transform ([11.5754815, 48.1372719], 'EPSG: 4326', 'EPSG: 3857') – Amir

+6

Vielleicht sind Ihre lon, lat Werte Strings. Konvertiere sie mit '+ lon' und' + lat' in Zahlen, bevor du sie transformierst. – erilem