【问题标题】:gmaps4rails v2.0.3 - Gmaps.map is undefinedgmaps4rails v2.0.3 - Gmaps.map 未定义
【发布时间】:2013-11-27 01:06:23
【问题描述】:

我正在尝试使用this example 之后的 Gmaps4rails gem 来实现标记拖动功能,但我在使用未定义的“Gmaps.map”对象时遇到问题,我无法为要处理的地图添加回调可拖动的标记。

现在地图显示正确,但我卡在拖动部分。

我正在使用“gmaps4rails”、“2.0.3”

我在控制器中创建标记:

@locations = Location.all
@hash = Gmaps4rails.build_markers(@locations) do |location, marker|
  marker.lat location.latitude
  marker.lng location.longitude
end

在视图中:

= content_for :scripts do
  = javascript_include_tag "//maps.google.com/maps/api/js?v=3.13&sensor=false&libraries=geometry"
  = javascript_include_tag '//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js'
  = javascript_include_tag "/assets/custom_scripts/map_scripts.js"

%div{ :style => 'width: 800px;' }
#map{ :style => 'width: 800px; height: 400px;' }

:javascript
  createMap(#{raw @hash.to_json });

在 JS 中:

function createMap(items){
  var handler = Gmaps.build('Google');
  handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
    markers = handler.addMarkers(items);
    handler.bounds.extendWith(markers);
    handler.fitMapToBounds();
  });
}

我不确定此文档是否已过时,因为它们仍在使用

<%= gmaps("markers" => {"data" => @json, "options" => { "draggable" => true  } } ) %> 

我读到 Gmaps4rails v2 上不再使用“gmap”功能

【问题讨论】:

  • 我确认您正在混合 v1 和 v2 ode。请阅读自述文件或观看视频

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


【解决方案1】:

地图对象现在附加到处理程序。

  • handler.map 检索 gem 构建的用于处理地图的 js 代理对象,您可以自定义该对象
  • handler.getMap() 检索谷歌地图对象
  • handler.map.getServiceObject() 是从代理对象获取 google 对象的规范

回调现在是你传入buildMap的函数。

您的markers var 中有所有标记。他们遵循规范,因此您可以访问 google 标记对象:markers[0].getServiceObject()

如果您想将选项传递给标记,请将它们添加为第二个参数:

handler.addMarkers(items, options);

文档在代码中,在构建器中,see here

【讨论】:

  • 感谢您提供非常有用的信息。
  • 我将可拖动选项传递给添加标记功能,它工作正常,但标记图像显示为拉伸,我是否需要添加任何其他内容以保持正常的标记图像大小?
  • 看文档,最好给图片大小
【解决方案2】:

我会在 github 页面上提交问题:

https://github.com/apneadiving/Google-Maps-for-Rails/issues

似乎该 repo 得到了积极维护,所以我相信 repo 所有者不会介意更新他的一些 wiki 页面。

也就是说,似乎对视图辅助方法的需求已被通过 DOM 元素附加地图所取代,因此可能根本不需要辅助方法。换句话说,我敢打赌,如果您只是从示例源代码中删除该行,它可能会按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多