Gmaps4Rails与Stamen Maps集成

时间:2012-07-06 05:06:18

标签: ruby-on-rails google-maps gmaps4rails stamen-maps

有没有人想出如何将Stamen瓷砖与Gmaps4rails集成?由于未在Gmaps4Rails gem中显式调用google.maps,因此有点令人困惑。会喜欢任何关于如何挂钩所需信息的建议。

1 个答案:

答案 0 :(得分:1)

我找到了一种(粗略的)方法,使用gmaps4rails创建一个带有OSM图块的滑动贴图。从它的外观来看,雄蕊地图应该更容易。您可以在这里找到一些提示如何使用gem来查看我的解决方案:Slippy maps for gmaps4rails

之前我没有遇到雄蕊地图。他们看起来很棒。遗憾的是地形地图在欧洲不可用。明天我会玩它,看看能不能找到更多。

编辑:

gmaps4rails.base.js.coffee中添加此方法:

 #creates a Stamen Map layer with the mapTypeId "toner"
 createStamenMap : ->
  StamenMapTypeOptions = new google.maps.ImageMapType(
    getTileUrl: (coord, zoom) ->
      "http://tile.stamen.com/toner/" + zoom + "/" + coord.x + "/" + coord.y + ".png"
    tileSize: new google.maps.Size(256, 256)
    name: "toner"
    maxZoom: 18
  )
  @serviceObject.mapTypes.set("toner", StamenMapTypeOptions)
  @serviceObject.setMapTypeId("toner")

如果你想要水彩或地形,你需要在toner所说的任何地方交换你想要的东西(包括TileUrl!)。

js_builder.rb中添加对此方法的调用

@js << "#{gmap_id}.createStamenMap();"

@js << "#{gmap_id}.initialize();"之后。

如果您使用像我一样的rvm js_builder.rb将不在您的应用目录中,对我来说它位于/Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/gmaps4rails-1.5.2

最后,更改您的视图代码:

 <%= gmaps("markers" => {"data" => @json},
                "map_options" => {"type" => "TERRAIN", :raw => '{mapTypeControlOptions: {mapTypeIds: ["toner", google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.TERRAIN], style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}}'}) %>

我确信有一种更漂亮的方法可以做到这一点,但似乎有效。