生成街道地图图像

Generate a street map image

我正在重新开发一个脚本,用于在生成的街道地图图像上绘制游戏数据。目前的解决方案是在 R 中,但它使用的 API 不再有效,我个人对 R 不熟悉。

我正在寻找的是一种在给定 longitude/latitude 范围内以我更熟悉的语言(例如 Ruby 或 Lua 获取特定区域图像的方法.我一直在寻找解决方案,但 Ruby 包(例如 Rails 的 Google 地图)似乎尚未完成,并且通常专注于在网页中嵌入 google 地图。地图的确切外观并不重要,只要当地人能认出街道布局即可。

如何自动生成这样的街道地图图像?

最后你只需要下载相关地图即可tiles. For OSM tile servers take a look at the slippy map tilenames。它解释了如何根据纬度、经度和缩放级别计算切片名称。它还包含各种编程和脚本语言的数十个示例实现。

另外请务必阅读您选择的磁贴服务器的磁贴使用政策/服务条款。

看看这个静态地图助手 GIST:

module StaticMapHelper

  def static_map_for(location, options = {})
    params = {
      :center => [location.lat, location.lng].join(","),
      :zoom => 15,
      :size => "300x300",
      :markers => [location.lat, location.lng].join(","),
      :sensor => true,
      :maptype => 'satellite',
      }.merge(options)

    query_string =  params.map{|k,v| "#{k}=#{v}"}.join("&")
    image_tag "http://maps.googleapis.com/maps/api/staticmap?#{query_string}", :alt => location.name
  end

end

https://gist.github.com/mcasimir/2778938

鉴于此问题没有任何完整答案,我为此构建了一个gem。

https://gitlab.com/Qwertie/osm_tile_grabber

(检查存储库以获取最新信息,但目前这是 gem 用法)

require 'osm_tile_grabber'
osm = OSMTileGrabber.new(-34.9220585,138.5879188,-34.9397,138.6239,15)
osm.create_image("/tmp/output.png")