无法使用 openlayers 3 将标记放置在正确的坐标处
Cannot place marker at the right coordinates using 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()
我希望我已经清楚地解释了我的问题,期待解决方案。非常感谢您的时间和支持。
EPSG:4326坐标顺序lon,lat不是lat,lon。因此,您应该更改执行 EPSG:4326 到 EPSG:3857 转换的行。
ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857')
我正在开发 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()
我希望我已经清楚地解释了我的问题,期待解决方案。非常感谢您的时间和支持。
EPSG:4326坐标顺序lon,lat不是lat,lon。因此,您应该更改执行 EPSG:4326 到 EPSG:3857 转换的行。
ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857')