Создаю самую простую карту приблизительно так:
Код: Выделить всё
map = new ol.Map({
controls : [
new ol.control.Rotate(),
new ol.control.ScaleLine(),
],
target : 'map',
layers : [
// Тут еще куча слоев с различных сервисов. Вырезано за ненадобностью
// OSM
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view : new ol.View({
center : ol.proj.fromLonLat([37.573856, 55.751574]),
zoom : 9
})
});
Код: Выделить всё
var vector = new ol.layer.Vector({
visible: true,
source : new ol.source.Vector({
url : 'SOME_SERVER_PATH',
format : new ol.format.GeoJSON()
}),
style : new ol.style.Style({
image: new ol.style.Circle({
radius: 5,
fill: new ol.style.Fill({
color: 'rgba(255, 0, 0, .25)'
}),
stroke: new ol.style.Stroke({
color: 'red',
width: 1
})
}),
text: new ol.style.Text({
text: 'TEST',
scale: 1.3,
fill: new ol.style.Fill({
color: '#000000'
}),
stroke: new ol.style.Stroke({
color: '#FFFF99',
width: 3.5
})
})
})
});
map.addLayer(vector);
Код: Выделить всё
{
"type":"FeatureCollection",
"features":[
{
"type":"Feature",
"properties":{
"name":"POINT 1"
},
"geometry":{
"type":"Point",
"coordinates":[
"37.573856",
"55.751574"
]
}
}
],
"crs":{
"type":"name",
"properties":{
"name":"EPSG:3857"
}
}
}
Вопрос в том, как вывести все точки на своих местах, используя координаты, хранящиеся в базе ? Т.е. Lat/Lon ? Единственный способ, приходящий в голову, получать с сервера данные, потом в цикле конвертировать каждую точку в отдельности. Но по моему это какое-то костыляторство.
Может можно все это решить как-то проще и логичнее ? Документация у OL еще та, по сравнению в гуглом или яндексом.
Да, в догонку. В коде выше (описание вида выводимого маркера) есть такой фрагмент ... text: new ol.style.Text({text: 'TEST', ... - вот как сюда передать имя точки из полученного GeoJSON ?
Заранее благодарю.