您的代码与带有标记的示例不同
- 标记的位置不会转换为地图的投影(就像您对 所做的那样
center
):
var VactorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: new ol.Feature({
geometry: new ol.geom.Point([51, 35]),
应该:
var VactorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: new ol.Feature({
geometry: new ol.geom.Point(ol.proj.fromLonLat([51, 35])),
- 中的
features
数组VectorSource
应该是一个数组:
var VactorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: new ol.Feature({
geometry: new ol.geom.Point([51, 35]),
name: 'Null Island',
population: 4000,
rainfall: 500,
})
应该:
var VactorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [new ol.Feature({
geometry: new ol.geom.Point([51, 35]),
name: 'Null Island',
population: 4000,
rainfall: 500,
})]
然后出现“标记”,但没有正确的样式。
代码片段:
html,
body {
height: 100%;
width: 100%;
padding: 0px;
margin: 0px;
}
.map {
height: 95%;
width: 100%;
}
<link rel="stylesheet" href="https://openlayers.org/en/v5.1.3/css/ol.css" type="text/css">
<script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.1.3/build/ol.js"></script>
<div id="map" class="map"></div>
<script>
var view = new ol.View({
center: ol.proj.fromLonLat([51.40876293182373, 35.757448286487595]),
zoom: 6,
maxZoom: 19,
});
var rasterLayer = new ol.layer.Tile({
source: new ol.source.OSM()
});
var VactorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [new ol.Feature({
geometry: new ol.geom.Point(ol.proj.fromLonLat([51, 35])),
name: 'Null Island',
population: 4000,
rainfall: 500,
setStyle: new ol.style.Style({
image: new ol.style.Icon({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: "http://openlayers.org/en/v3.7.0/examples/data/icon.png",
})
})
})]
})
});
var map = new ol.Map({
target: 'map',
controls: new ol.control.defaults({
attributionOptions: {
collapsible: false
}
}),
layers: [rasterLayer, VactorLayer],
view: view,
});
</script>
要使用与示例中相同的图标,请将其创建为“功能”并在该功能上调用 setStyle(没有setStyle
功能的属性)。
var iconFeature = new ol.Feature({
geometry: new ol.geom.Point(ol.proj.fromLonLat([51, 35])),
name: 'Null Island',
population: 4000,
rainfall: 500,
});
iconFeature.setStyle(new ol.style.Style({
image: new ol.style.Icon({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: "http://openlayers.org/en/v3.7.0/examples/data/icon.png",
})
}));
var VactorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [iconFeature]
})
});
代码片段:
html,
body {
height: 100%;
width: 100%;
padding: 0px;
margin: 0px;
}
.map {
height: 95%;
width: 100%;
}
<link rel="stylesheet" href="https://openlayers.org/en/v5.1.3/css/ol.css" type="text/css">
<script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.1.3/build/ol.js"></script>
<div id="map" class="map"></div>
<script>
var view = new ol.View({
center: ol.proj.fromLonLat([51.40876293182373, 35.757448286487595]),
zoom: 7,
maxZoom: 19,
});
var rasterLayer = new ol.layer.Tile({
source: new ol.source.OSM()
});
var iconFeature = new ol.Feature({
geometry: new ol.geom.Point(ol.proj.fromLonLat([51, 35])),
name: 'Null Island',
population: 4000,
rainfall: 500,
});
iconFeature.setStyle(new ol.style.Style({
image: new ol.style.Icon({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: "http://openlayers.org/en/v3.7.0/examples/data/icon.png",
})
}));
var VactorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [iconFeature]
})
});
var map = new ol.Map({
target: 'map',
controls: new ol.control.defaults({
attributionOptions: {
collapsible: false
}
}),
layers: [rasterLayer, VactorLayer],
view: view,
});
</script>