是否可以在Python中使用基于缩放的动态大小在Circle()
画布中绘制GMapPlot
字形对象?我想显示一个圆形区域,其中我有中心点,半径以米为单位。我希望这个圆圈能够根据缩放谷歌地图以更小和更大的尺寸显示。
这可以通过某种方式实现吗?
更新 我可以使用以下代码绘制固定大小的圆圈:
from bokeh.document import Document
from bokeh.embed import file_html
from bokeh.resources import INLINE
from bokeh.models import (GMapPlot, GMapOptions, ColumnDataSource,
Circle, DataRange1d, PanTool, WheelZoomTool, BoxSelectTool)
map_options = GMapOptions(lat=30.29, lng=-97.73, map_type="roadmap", zoom=11)
plot = GMapPlot(x_range=DataRange1d(), y_range=DataRange1d(), map_options=map_options,
title="Austin", api_key=GOOGLE_API_KEY)
source = ColumnDataSource(data=dict(lat=[30.29, 30.20, 30.29],
lon=[-97.70, -97.74, -97.78],))
circle = Circle(x="lon", y="lat", size=15, fill_color="blue", fill_alpha=0.8,
line_color=None)
plot.add_glyph(source, circle)
plot.add_tools(PanTool(), WheelZoomTool(), BoxSelectTool())
# Save HTML file
doc = Document()
doc.add_root(plot)
filename = './google_maps_test.html'
with open(filename, "w") as f:
f.write(file_html(doc, INLINE, 'Google Maps plot'))
此处size=15
表示在我滚动图表时不会改变的像素或某些固定大小...我的radius
中可能有一个ColumnDataSource
对象,其中值将是以米为单位的半径(例如,50,75,100)。我会使用size=radius
...
谢谢!
答案 0 :(得分:2)
Circle
字形接受size
和radius
属性(其中之一)。默认情况下,size
位于"屏幕单元" (像素,基本上)。这就是为什么它们保持相同的大小,无论缩放级别如何。如果您希望使用缩放级别缩放圆圈,则最好提供radius
值,因为默认情况下radius
被解释为数据空间单位" 。即在这种情况下,它将以米为单位(因为GMapPlot
轴的单位是米)。
circle = Circle(x="lon",
y="lat",
# corresponds to 15 meters, so scales accordingly with zoom
radius=15,
fill_color="blue",
fill_alpha=0.8,
line_color=None)