Опишу ситуацию:
Есть веб-приложение для картографии, использующее библиотеку LeafletJS. Необходимо на карте отобразить большое количество полигонов-участков (замкнутые многоугольники, с заливкой или без дело второе) по координатам. На участках постоянно (не по щелчку на участок, а ПОСТОЯННО) должна отображаться информация (заранее заданные номера или текстовые названия), Изначально использовались средства самой библиотеки Leaflet (L.Polygon и названия при помощи bindTooltip), но при появлении большего количества участков все это начало жутко тормозить. Решено использовать GeoServer.
Что делаю:
Создаю шейп (shp) файл с участками, при помощи PostGIS импортирую его в базу PostgreSQL. (делал по туториалу, при необходимости могу прикрепить ссылку)
Затем на GeoServer'е опубликовал слой(формируется по информации которую загрузили в базу PgSQL), прописал стиль - указал TextSymbolizer Label, теперь на участках отображается нужная информация. Вот так отображается на GeoServer'е Далее в само приложение пишу код, который обращается к GeoServer'у и тянет созданный слой.
JS:_______________________________________
Спойлер
getInformFromGeoserv(){
var kvartLayer= L.tileLayer.wms("http://localhost:8080/geoserver/data_nl/wms?service=WMS", {
layers: 'data_nl:kvart',
styles: 'kvartStyle',
format: 'image/png',
transparent: true,
color: "red"
});
this.getMap().addLayer(kvartLayer);
this.getMap().setView([59.220496, 39.891523],8);
//59.220496, 39.891523
}
var kvartLayer= L.tileLayer.wms("http://localhost:8080/geoserver/data_nl/wms?service=WMS", {
layers: 'data_nl:kvart',
styles: 'kvartStyle',
format: 'image/png',
transparent: true,
color: "red"
});
this.getMap().addLayer(kvartLayer);
this.getMap().setView([59.220496, 39.891523],8);
//59.220496, 39.891523
}