点击功能的传单
Leaflet clicking on features
本文关键字:功能 更新时间:2023-09-26
因此,我正试图使用传单w/geojson作为坐标来绘制公交路线。我在一个方面遇到了困难,点击一次,总线就会加粗,理想情况下,最后一次点击的功能会返回到默认样式。
到目前为止我有什么
function $onEachFeature(feature, layer) {
layer.on({
click: function(e) {
//calls up the feature clicked on
var $layer = e.target;
var highlightStyle = {
opacity: 1,
weight: 5
};
$layer.bringToFront();
$layer.setStyle(highlightStyle);
}
});
}
//imagine all the leaflet map tile code here
//this is where the features get added in and the $oneachfeature function
var busFeature = L.geoJson(busRoutes, {
style: defaultBusRouteColor,
onEachFeature : $onEachFeature
});
busFeature.addTo(map);
上面,我现在已经成功地将特性的样式更改为highlightStyle
中的样式。但是,当单击另一个功能时,样式将保持不变。如何删除以前单击的功能的样式,以便一次只有一个功能具有样式highlightStyle
?
我已经尝试过的事情:使用addClass/removeClass到jQuery方法,使用带有传单的layer.resetStyle()
,以及其他一些仍然不起作用的事情。注意:这将理想地用于移动版本,因为桌面版本使用悬停功能来强调功能,没有问题。这个:
function $oneachfeature(feature, layer){
layer.on({
mouseover: function (e){makes feature bold}
});
layer.on({
mouseout: function (e){makes feature normal again}
});
}
有什么建议吗?
存储对高亮显示层的引用,以便以后可以在其上调用resetStyle
:
// Variable to store selected
var selected
// Create new geojson layer
new L.GeoJSON(collection, {
// Set default style
'style': function () {
return {
'color': 'yellow',
}
}
}).on('click', function (e) {
// Check for selected
if (selected) {
// Reset selected to default style
e.target.resetStyle(selected)
}
// Assign new selected
selected = e.layer
// Bring selected to front
selected.bringToFront()
// Style selected
selected.setStyle({
'color': 'red'
})
}).addTo(map)
- 示例:http://embed.plnkr.co/RnQO1s/preview
- 参考:http://leafletjs.com/reference.html#geojson-resetstyle
使用resetStyle()似乎是一个更容易的解决方案。。。在将新样式应用于特征之前,只需重置图层的样式即可。这只需要在原始函数中添加一行代码:
function $onEachFeature(feature, layer) {
layer.on({
click: function(e) {
//calls up the feature clicked on
var $layer = e.target;
var highlightStyle = {
opacity: 1,
weight: 5
};
busFeature.resetStyle();
$layer.bringToFront();
$layer.setStyle(highlightStyle);
}
});
}
在添加下一个突出显示之前先删除前一个:
.removeLayer()使用.addTo()删除之前设置的geoJSON选择
theMap = yourMap.Map
geoJson = yourMap.geoJSON();
onclick() {
const highlightedFeature = {
'color': '#12FF38',
'fillColor': '#30D8E0',
'fillOpacity': 0.3
};
this.theMap.removeLayer(this.geoJson);
this.geoJson = yourMap.geoJSON( Feature, {
style: highlightedFeature
});
this.geoJson.addTo(this.theMap);
}
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- Graphiti中是否有任何工具提示功能
- React redux初始化功能,无论状态变化如何
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 正在获取select上的功能id
- Rhino打印功能
- 使用(navigator.geolocation)检测浏览器功能错误
- 主体单击删除功能上的输入框宽度
- JQuery使用相同的功能自动完成各种输入文本
- OpenLayers在悬停时高亮显示功能,并在单击时选择