javascript - 基础层更改后的 setDrawingOptions Leaflet Draw
问题描述
更改基础层后,我正在尝试更改多边形的颜色。我用过setDrawingOptions
,但是没用。。。
当我在setDrawingOptions
它更改之前和之后记录对象时。但我没有看到已经绘制的多边形的变化。当我绘制一个新多边形时,它会使用新颜色绘制。
我正在使用 Leaflet 0.7.x
map.on('baselayerchange', function(){
map.drawControl.setDrawingOptions({
polygon: {
shapeOptions: {
color: "#fff"
}
}
});
});
事件被触发。并且没有控制台错误
解决方案
我想 drawControl 的创建方式如下:
var drawControl = new L.Control.Draw();
如果是,那么它不是地图对象的属性,在您的控制台中,您应该有如下错误:
"map.drawControl is undefined"
请尝试以下代码(我只删除了“drawControl”之前的“map.”部分)
map.on('baselayerchange', function(){
drawControl.setDrawingOptions({
polygon: {
shapeOptions: {
color: "#fff"
}
}
});
});
编辑:现在你编辑了你的帖子,很清楚。您还希望已经绘制的多边形也改变颜色。您创建的多边形托管在 layerGroup 或 featureGroup 中,我们称之为“drawnItems”。所以你要做的很简单:
map.on('baselayerchange', function(){
drawControl.setDrawingOptions({
polygon: {
shapeOptions: {
color: "#fff"
}
}
});
drawnItems.setStyle({
color:"#fff"
})
});
这是一个有效的 jsfiddle: https ://jsfiddle.net/jt7wy4eg/2/ 当用户放大/缩小时应用更改(多边形变为红色,即使是绘制的多边形)。
推荐阅读
- ld - ld:警告:找不到入口符号_start;
- python-3.x - ICMP - 如何在请求中保留不同数据的同时修复“未找到响应” - 回复
- node.js - CORS 错误:尽管设置了代理,但请求的资源上不存在“Access-Control-Allow-Origin”标头
- android - 如何在 Android 上将 Qt 应用程序安装为系统应用程序?
- performance - 查找附近值的二进制搜索
- typescript - 变量中的 mapGetters['getters'] (Decorator, ts, vue)
- php - 使用作曲家时出现分段错误
- python - 在运行 python 的 ubuntu 中找不到文件
- javascript - express 应用程序没有给出任何响应,但数据已保存到 mongodb。ERR_HTTP_HEADERS_SENT
- microsoft-graph-api - 如何在 microsoft-teams graph api 中获得“已看到”聊天消息的状态?