我正在尝试使用传单多面体对象的相当常见的用例。
我使用geojson创建MultiPolygon:
var layer = L.GeoJSON(g, style_opts);
我想要的是在每个多边形的中心放置一个简单的文本标签。 (例如,将州名放在每个州的中心)。
我看过: https://groups.google.com/forum/?fromgroups=#!topic/leaflet-js/sA2HnU5W9Fw
这实际上覆盖了文本,但是当我添加一堆多边形时,它似乎以偏怪的方式将标签偏离中心,而我目前无法追踪问题。
我也看过:https://github.com/jacobtoye/Leaflet.label
但是当你将鼠标悬停在多边形上时,它似乎只会将标签放在多边形上,并且不会静态地保留在多边形上。
我认为我最好的做法是使用第一个链接,并追踪它为什么会改变位置,但与此同时,如果有人知道在传单中在多边形上放置标签的快捷方式,我非常感激。
另外,如果我对上述两个链接有任何错误的假设,请随时理解我。
非常感谢。
答案 0 :(得分:22)
传单标签插件还允许使用静态标签,请参阅demo。 折线标签不是静态的唯一原因是它沿着折线移动时会移动。
通过覆盖多边形的bindLabel(),你可以做得更好,但这是一种向多边形中心添加静态标签的简单方法:
label = new L.Label()
label.setContent("static label")
label.setLatLng(polygon.getBounds().getCenter())
map.showLabel(label);
答案 1 :(得分:14)
您可以使用public class SQLDetailRepository : IDetailRepository {
ApplicationDbContext camOnlineDb = new ApplicationDbContext();
public IEnumerable<YearsModel> GetAllYearsFrom(int ClientID) {
var x = (from d in camOnlineDb.Details
where d.ClientID == ClientID
where d.NominalPeriod != null
select new {
d.NominalPeriod
});
return x.GroupBy(r => new { r.NominalPeriod })
.Select(g => new YearsModel {
Year = g.Key.NominalPeriod.ToString().Substring(0, 4)
})//Need another group by here to group after the substring has occrured
}
}
的{{1}}选项为每个多边形创建新的onEachFeature
。
L.geoJson