【问题标题】:How to set longitude and latitude ranges for Bokeh Google Maps plot in Python?如何在 Python 中为 Bokeh Google Maps plot 设置经度和纬度范围?
【发布时间】:2018-04-03 18:49:42
【问题描述】:

我只能设置缩放,但我需要有一个非常具体的位置,这样我才能将它覆盖在另一个图上。 我如何仅从我在下面指定的限制中获得视图? 现在我只能设置难以覆盖在另一个绘图上的缩放。

from bokeh.io import output_file, show
from bokeh.models import ColumnDataSource, GMapOptions
from bokeh.plotting import gmap

output_file("gmap.html")

lat_lims = (42.418574999999997, 42.420059000000002)
lon_lims = (-70.907111, -70.904135999999994)
map_options = GMapOptions(lat=np.mean(lat_lims), lng=np.mean(lon_lims), map_type="satellite", zoom=18)

# For GMaps to function, Google requires you obtain and enable an API key:
#
#     https://developers.google.com/maps/documentation/javascript/get-api-key
#
# Replace the value below with your personal API key:
p = gmap(googlemaps_api_key, map_options)


show(p)

【问题讨论】:

    标签: python google-maps google-maps-api-3 bokeh satellite


    【解决方案1】:

    如果您正在运行 Bokeh Server 应用程序,则可能会以某种方式将边界返回给 Python,但恐怕在独立的 Bokeh 文档(即 HTML 文件)中这是不可能的.我们受到使用 Google 地图 API 的限制,并且您要求的边界只有在 JavaScript 代码在浏览器中执行后才可用。 Google API 不接受用户提供的任意边界,它只接受中心/缩放或建议 区域。真正的边界仅由 Google API 计算并返回(给浏览器),在 Python 中永远不会计算或可用。

    您可能会查看可用的非谷歌TileProvider plots。与 GMap 绘图不同,您可以自己设置地图边界。

    【讨论】:

    • 谢谢,有趣的是,Google Maps API 不包含此类功能,因为这似乎是一种非常常见的用法。你知道瓦片提供者的地块是否有地图样式的卫星视图?
    • Google API 不允许任意地图边界的原因是因为他们选择保持对像素纵横比等的严格控制,以确保视觉显示始终准确无误。瓦片提供者地图提供了“更大的灵活性”,但代价是如果您不小心,图像可能会向一个方向或另一个方向拉伸。即,如果您要求它在方形视口中显示 10 毫米 x 1 公里米的区域,它会这样做,并且在一维上非常压缩。不过,谷歌地图永远不会像这样延伸。
    • 不幸的是,我也不确定 satellite 图像。我知道的两个服务,Carto 和 Stamen,不提供我知道的卫星图块(但我可能错了)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多