生成一张街道地图图像。

3
我正在重新开发一个脚本,它可以在生成的街道地图图像上绘制游戏数据。目前的解决方案是使用R语言,但它使用的API已经无法工作,并且我个人不熟悉R语言。
我正在寻找一种方法,在我更熟悉的语言(如Ruby或Lua)中获取给定经度/纬度范围内某个区域的图像。我已经寻找了解决方案,但Ruby包(例如Google Maps for Rails)似乎还没有完成,而且经常专注于在网页中嵌入谷歌地图。地图的确切外观并不那么重要,只要街道布局对当地人可识别即可。
如何自动生成这样的街道地图图像?
3个回答

3
最终,您只需下载相关地图瓦片。对于OSM瓦片服务器,请查看滑动地图的tilenames。它会解释如何根据纬度、经度和缩放级别计算瓦片名称。它还包含各种编程和脚本语言的示例实现。

此外,请确保阅读所选择的瓦片服务器的瓦片使用政策/服务条款。


谢谢。我使用MiniMagick和瓦片名称成功编写了代码。虽然不像之前的单行解决方案那样简单,但它能够正常工作。 - Sander

3

由于这个问题没有完整的答案,我构建了一个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")

enter image description here


0

看一下这个静态地图助手的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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接