Вероятно, у вас есть объекты, видимые в пределах 180 метров от долготы / широты 0,0 в Атлантике в стиле OpenLayers по умолчанию.Вы не можете установить стиль OpenLayers через GeoJSON, он должен быть установлен на слое или на объекте с помощью setStyle()
.Также featureProjection
в формате используется только в настройках источника слоя, если вы используете readFeatures
, это должно быть указано там:
var GeoJSON = {};
GeoJSON.type = "FeatureCollection";
GeoJSON.features = [];
var iconStyle = new ol.style.Style({
image: new ol.style.Icon(({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 0.75,
src: "~/icons/delivery-truck.png"
}))
});
for (var i = 0; i < data.length; i++) {
var machineGeoObject = {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [data[i]["longitude"], data[i]["latitude"]],
},
"properties": data[i],
}
GeoJSON.features.push(machineGeoObject);
} //end of loop
var format = new ol.format.GeoJSON();
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
features: format.readFeatures(GeoJSON, {
featureProjection: "EPSG:3857"
})
}),
style: iconStyle
});
Также убедитесь, что ваш значок src
url правильный (должен ~
be .
или ..
?) И убедитесь, что data[i]["longitude"]
и data[i]["latitude"]
являются числами, а не строками (используйте Number()
при необходимости).