2012-04-20 45 views
0

我一直在使用gmaps4軌打造出了一個網站,創業板是一個超級除了我的項目。然而,我有一些麻煩,嵌套模型和多邊形。Gmaps4Rails和自定義/嵌套點數型號

我也想這樣做: 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 

多邊形渲染在地圖上完美的,但我不能一個信息窗口中添加他們。我在上面提到的帖子中嘗試了click事件回調,但它對我不起作用。

我也想知道如何獲得這些多邊形的句柄,以便我可以使用複選框隱藏它們。

謝謝你的時間。希望我已經提供了足夠的信息。

回答

2

but it did not work for me是不是一個非常有益的發言。

我不知道什麼是你的問題:你有什麼JS錯誤?

你可以使用整個google js api,寶石不是剎車,它只是一個包裝。

如果你想用多邊形互動:

  • 您可以在視圖通過數據存儲對象的數組中:Gmaps.map.polygons

  • 在頁面加載時,將創建谷歌的多邊形和存儲在我稱爲serviceObject的對象中。

綜上所述,Gmaps.map.polygons[0].serviceObject是一個可以自由交互的Google多邊形對象。

爲了確保Google的對象已經創建,請在gmaps4rails js回調中插入您的自定義方法。

+0

我後來意識到,我並沒有真正提供足夠的信息來解決這個問題,但是離開了幾天,無法回到它。 (我很欣賞你採取迴應的時間)。當我寫下原始問題時,我剛開始嘗試實現可點擊的多邊形,但後來我發現了更多信息:當我檢查Firefox中的多邊形元素時,它顯示它們不可點擊,但奇怪的是當我運行它在本地不起作用,但是當我部署它時,它起作用! (我在Firefox和Safari中觀察到了這種行爲) – 2012-04-30 23:10:53

+0

我還編輯了gmaps4rails.base.js以將可點擊屬性添加到多邊形。 – 2012-04-30 23:18:22

+0

安裝Passenger並在本地設置Apache(在Mac上)後,多邊形和信息窗口可以正常工作。 – 2012-05-05 05:00:59