javascript - 有没有办法在新点击时重置突出显示功能和信息面板?
问题描述
我有一个 geoJson 数据路径来在网站上创建地图。我希望信息面板在用户单击地图中的图层时填充信息,并希望在地图的不同部分有新的单击时重置突出显示和信息面板。目前,每当您“鼠标移出”图层时,信息面板都会重置。我不确定如何为信息框编写代码以保持信息填充,直到有新的点击。
function createMap(lat,lon,zl){
map = L.map('map').setView([lat,lon], zl);
L.tileLayer('https://api.mapbox.com/styles/v1/mapbox/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}',
{
attribution: 'Map data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 18,
id: 'light-v10',
tileSize: 512,
zoomOffset: -1,
accessToken: 'pk.eyJ1Ijoic2FyYWhwZXJlejEiLCJhIjoiY2t0MG9hZDNnMDZ2NDJ1c2M5dzBmb201OSJ9.5fv8NqX5cfA0NMcmEW_63g'
})
}
function onEachFeature(feature, layer) {
layer.on({
mouseover: highlightFeature,
mouseout: resetHighlight,
click: zoomToFeature,
});
}
// on mouse over, highlight the feature
function highlightFeature(e) {
var layer = e.target;
// style to use on mouse over
layer.setStyle({
weight: 2,
color: '#666',
fillOpacity: 0.7
});
if (!L.Browser.ie && !L.Browser.opera && !L.Browser.edge) {
layer.bringToFront();
}
createDashboard(layer.feature.properties);
info_panel.update(layer.feature.properties);
}
// on mouse out, reset the style, otherwise, it will remain highlighted
function resetHighlight(e) {
geojson_layer.resetStyle(e.target);
info_panel.update() // resets infopanel
}
// on mouse click on a feature, zoom in to it
function zoomToFeature(e) {
map.fitBounds(e.target.getBounds());
}
解决方案
推荐阅读
- java - Java jdom 不打印所有元素,打印空字符串
- r - 我在 R 中导入的 .csv 中的第一列以 0 开头,我想更改它
- angular - Angular 4 - 使用 .htaccess 重定向到 https 时出现错误 404
- typescript - 带有未定义可变参数的打字稿回调
- react-admin - 如何在 react-admin 的另一个组件中显示 ImageInput src?
- javascript - 无法在js中将数据推送到空数组中
- tensorflow - 使用 sse2 构建和使用 tensorflow
- python - Scrapy使用指定网卡发送请求 python 3
- css - 使用 Angular 进行动态样式导入
- javascript - 单击按钮时替换图像 src 属性中的文件夹名称