0

我一直在使用 gmaps4 rails 来构建一个站点,而 gem 是我项目的超级补充。但是,对于嵌套模型和多边形,我遇到了一些麻烦。

我也想做这样的事情: Gmaps4rails custom info window with javascript content

楷模:

  class Zone < ActiveRecord::Base
    acts_as_gmappable

    has_many :points, :as => :pointable
    accepts_nested_attributes_for :points

    def self.create_with_points(name, points)
      zone = Zone.create(:name => name)
      points.map { |point| zone.points.create(:latitude => point[0],
                                              :longitude => point[1]) }
      zone
    end

    def as_polygon_data
      points.collect { |point| { "lat" => point.latitude.to_f,
                                 "lng" => point.longitude.to_f,
                                 "strokeColor" => "#EBAC2A",
                                 "strokeOpacity" => 0.65,
                                 "strokeWeight" => 2,
                                 "fillColor" => "#606F81",
                                 "fillOpacity" => 0.4
                               } }
    end

    def self.all_as_polygon_data
      Zone.all.collect { |zone| zone.as_polygon_data }
    end
  end

  class Point < ActiveRecord::Base
    belongs_to :pointable, :polymorphic => :true
    acts_as_gmappable
  end

要调用控制器中的区域,我必须使用 to_json 而不是 to_gmaps4rails 调用它:

@polygon_json = Zone.all_as_polygon_data.to_json

多边形完美地呈现在地图上,但我无法向它们添加信息窗口。我在上述帖子中尝试了点击事件回调,但它对我不起作用。

我还想知道如何获取这些多边形的句柄,以便使用复选框隐藏它们。

感谢您的时间。希望我提供了足够的信息。

4

1 回答 1

2

but it did not work for me不是一个非常有用的语句。

我不知道你的问题是什么:你有任何 js 错误吗?

您可以使用整个 google js api,gem 不是刹车,它只是一个包装器。

如果要与多边形交互:

  • 您在视图中传递的数据存储在对象数组中:Gmaps.map.polygons

  • 在页面加载时,谷歌的多边形被创建并存储在我调用的对象中serviceObject

总而言之,Gmaps.map.polygons[0].serviceObject是一个可以自由交互的谷歌多边形对象。

为确保创建了 google 的对象,请将您的自定义方法插入 gmaps4rails js 回调中。

于 2012-04-21T17:51:06.307 回答