如何解决如何将填充背景添加到大叶的圆中?
有什么方法可以添加图案填充,例如在大叶中填充图案填充背景吗?可以使用GeoJSON对象和folium.plugins.StripePattern(https://github.com/python-visualization/folium/blob/master/tests/plugins/test_pattern.py)对多边形使用阴影填充,但是我没有看到圆形的实现,也没有运气。 / p>
此功能在带有https://github.com/teastman/Leaflet.pattern的传单中可用,例如:
var myPattern = new L.StripePattern({ angle: -45,weight: 3,color: 'black',opacity: 1.0});
myPattern.addTo(m);
var circle = new L.Circle([42,-105],40000,{fillPattern: myPattern,fillOpacity: 1.0});
circle.addTo(m);
解决方法
我创建了一个函数来解决我的问题。该函数的参数是圆的位置(经度/纬度)的numpy数组,以及圆的半径(以米为单位)的浮点数。
#Function to inject leaflet hatching code for circles
def injectHatch_f(xO_v,yO_v,rO):
#Get map name
mName = m.get_name()
#Generate javascript (note use of Jinja2 tags to place javascript code after map is initialized): https://github.com/python-visualization/folium/issues/854
js = '''{{% macro script(this,kwargs) %}}
var myPattern = new L.StripePattern({{ angle: -45,weight: 3,color: 'black',opacity: 1.0}});
myPattern.addTo({0});
'''.format(mName) + \
'\n'.join(["var circle = new L.Circle([{1},{2}],{3},{{fillPattern: myPattern,fillOpacity: 1.0}}).addTo({0});".format(mName,yO_v[i],xO_v[i],rO) for i in range(xO_v.shape[0])]) + \
'{% endmacro %}'
#Add leaflet pattern plugin
m.get_root().html.add_child(JavascriptLink('https://teastman.github.io/Leaflet.pattern/leaflet.pattern.js'))
#Inject javascript code
element = folium.MacroElement().add_to(m)
element._template = jinja2.Template(js)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。