0

我有一個使用Google Maps API在您的地區找到拾取遊戲的導軌應用程序。您可以創建遊戲並設置您想要使用Places庫(我有那麼一點點)的地方。然而,現在我試圖做到這一點,當你點擊一個按鈕時,就需要人們創建的位置並將它們填充到地圖上。使用導軌將數據填充到Google地圖

我有一個地址欄的遊戲模型,我試圖獲取地址信息並在用戶按下按鈕時彈出地圖。

有沒有人有關於如何做到這一點的提示?

gem 'geocoder' 
gem 'gmaps4rails' 

雖然您可以繪製地址,我想轉換那些長期和緯度座標與「after_save的」方法(你必須:謝謝

回答

1

我會用兩種寶石的幫助下處理這個將兩列添加到您的遊戲模型)。

class Game < ActiveRecord::Base 

    after_save :cache_coordinates 

    def cache_coordinates 
    loc = Geocoder.coordinates(address) 
    return if loc.nil? 
    update_column(:latitude, loc[0]) 
    update_column(:longitude, loc[1]) 
    end 
end 

,請務必遵守這裏列出來獲得Gmaps工作的指示: Google-Maps-for-Rails

您的地圖控制器可看起來像這樣(不要忘記添加路線...)

class MapsController < ApplicationController 
    respond_to :html, :js 

    def index 
    @geolocations = Game.all 
    @hash = Gmaps4rails.build_markers(@geolocations) do |geolocation, marker| 
     marker.lat geolocation.latitude 
     marker.lng geolocation.longitude 
    end 
    end 
end 

和一個簡單的看法是這樣的:

// use your API key here... 
<%= javascript_include_tag "//maps.google.com/maps/api/js?v=3.23&amp;sensor=false&amp;libraries=geometry&key=YOURKEY" %> 
<%= javascript_include_tag "//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js" %> 
<script> 
    var mapStyle = []; 
    var mapOptions = {}; 
    var handler = Gmaps.build('Google', 
      {markers: 
      {clusterer: { 
       gridSize: 20, 
       maxZoom: 13 
      }}}); 
    handler.buildMap({ 
     internal: {id: 'multi_markers'}, 
     provider: { 
      scrollwheel: true, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     } 

    }, function(){ 
     var markers = handler.addMarkers(<%=raw @hash.to_json %>); 
     // some options you may or may not want to use 
     handler.map.centerOn([40.397, -95.644]); 
     handler.fitMapToBounds(); 
     handler.getMap().setZoom(4) 
    }); 
</script>