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>