2015-01-11 4 views
5

Я работаю над openlayers 3 и хочу реализовать функцию поиска, которая получает название места и позиционирует маркер на карте. Я могу получить координаты, но когда я хочу добавить маркер на карту, я всегда получаю разные места. Маркер входного места не помещается в фактические координаты карты.Невозможно поместить маркер в нужные координаты с помощью openlayers 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() 

Я надеюсь, что я четко объяснил свою проблему, смотреть вперед для решения. Большое вам спасибо за ваше время и поддержку.

ответ

7

EPSG: 4326 координатный ордер lon, lat not lat, lon. Поэтому вы должны изменить строку, которая преобразует EPSG: 4326 в EPSG: 3857.

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

Нет еще такая же проблема, я вхожу в Мюнхен (фактическая Lat/Long являются: 48,1372719, 11,5754815), но он помещает маркер в Lat/Long: +11,557617187499996, -41,60722821271713 – Amir

+0

Но это работает, если я пишу жестко закодированные значения , Как показано ниже: ol.proj.transform ([11.5754815, 48.1372719], 'EPSG: 4326', 'EPSG: 3857') – Amir

+6

Возможно, ваши значения lon, lat являются строками. Преобразуйте их в числа, используя '+ lon' и' + lat', прежде чем передавать их для преобразования. – erilem

 Смежные вопросы

  • Нет связанных вопросов^_^