1

有没有人想出如何将 Stamen 瓷砖与 Gmaps4rails 集成?这有点令人困惑,因为 google.maps 没有在 Gmaps4Rails gem 中明确调用。希望获得有关如何获取所需信息的任何建议。

4

1 回答 1

1

我找到了一种(粗略的)方法来使用 gmaps4rails 创建带有 OSM 瓦片的滑动地图。从外观上看,雄蕊图应该更容易。您可能会在此处查看我的解决方案,找到一些提示如何使用 gem 来实现此功能:gmaps4rails 的 Slippy maps

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

编辑:

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();"

如果您像我一样使用 rvmjs_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}}'}) %>

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

于 2012-07-11T22:55:43.070 回答