2016-12-21 6 views
0

У меня есть следующий код для отображения карты с маркером. Я использую OpenLayers3. Проблема заключается в том, что маркер обычно не отображается в правильном положении. Он должен отображаться в Канаде, но она отображается в центре картыМестоположение iconFeature openlayers3

var iconFeature = new ol.Feature({ 
    geometry: new ol.geom.Point([-72.66, 45.04]), 
    name: 'Null Island' 
    }); 

    var iconStyle = new ol.style.Style({ 
    image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({ 
    anchor: [0.5, 46], 
    anchorXUnits: 'fraction', 
    anchorYUnits: 'pixels', 
    src: 'https://openlayers.org/en/v3.20.0/examples/data/icon.png' 
    })) 
    }); 

    iconFeature.setStyle(iconStyle); 

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

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


    //map 
    var map = new ol.Map({ 
    target: 'map', 
    layers: [ 
     new ol.layer.Tile({ 
     source: new ol.source.OSM() 
     }),vectorLayer 
    ], 
    view: new ol.View({ 
     center: ol.proj.fromLonLat([-72, 45]), 
     zoom: 6 
    }) 
    }); 

Как я могу сделать маркер в нужном месте. Спасибо.

ответ

0

OSM-слой проецируется в EPSG: проекционная система 3857. Но координаты, переданные значку, находятся в проекционной системе WGS84. При настройке центра координаты преобразуются. Нужно применять одно и то же для iconFeature Object.

Значок преобразования ЗначокФункции объектов объектов, как и для центра.

var iconFeature = new ol.Feature({ 
    geometry: new ol.geom.Point(ol.proj.fromLonLat([-72.66, 45.04])), 
    name: 'Null Island' 
}); 

Смотрите обновленный код в этом plunker link

.