【问题标题】:Google Maps Add a Marker to Map, then Store Latitude and Longitude in Ruby on RailsGoogle Maps 在地图上添加标记,然后在 Ruby on Rails 中存储纬度和经度
【发布时间】:2009-11-17 02:31:54
【问题描述】:

我看过之前提出的问题,但我似乎不太适合这个,所以这里是:

基本上,我有一个 Ruby on Rails 项目,我希望有一个页面,用户通过添加标记(只允许 1 个)在谷歌地图上确定他的位置,然后将经度和纬度存储在其中我正在从事的 Ruby on Rails 项目。

我想知道最好的方法是什么(使用 Javascript 添加地图?)但是当用户点击 ruby​​ on rails 中的按钮时,我将如何检索纬度和经度?

我非常感谢相关网站等的任何提示/链接,因为在 ruby​​ on rails 环境中工作对我来说是相当新的,我不知道如何进行上述操作。

非常感谢您

【问题讨论】:

    标签: javascript ruby-on-rails google-maps


    【解决方案1】:

    这是一个简短的例子:

    your_page.html

    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=xxx;hl=en" type='text/javascript'></script>
    
    <script type='text/javascript'>       
           var draggable_marker = null;
    
           $(document).ready(function() {
              if (GBrowserIsCompatible()) {
                map = new GMap2(document.getElementById('map_div'));
                map.addControl(new GSmallMapControl());
    
                draggable_marker = new GMarker(new GLatLng(42.6976489, 23.3221545), {draggable : true,title : "Place this marker to your location");
    
               GEvent.addListener(draggable_marker, 'dragend', function() {  
                  RubyGmap.setPosition(draggable_marker); 
               });
               GEvent.addListener(map, 'click', function(overlay, latlng, overlaylatlng){  
                  RubyGmap.setMarkerPosition(draggable_marker, latlng); 
               });
              }
           });
    </script>
    
    
    
    <div id="map_div" style="width:690px;height:340px;" ></div>
    

    ruby_gmap.js

    RubyGmap = {    
    setPosition: function(marker) {
        $('#latitude_field').val(marker.getLatLng().lat());
        $('#longitude_field').val(marker.getLatLng().lng());
    },
    setMarkerPosition: function(marker, latlng) {
        SELECTED = true;
        map.addOverlay(marker);
        marker.setLatLng(latlng);
        RubyGmap.setPosition(marker);
    }
    }
    

    【讨论】:

      【解决方案2】:

      我认为第一步是让您的视图在没有地图的情况下工作。手动输入 lat/long,这样您就知道您的视图和控制器正在工作。一旦达到这一点,请查看Google Maps API documentation。将地图添加到您的视图中,了解如何添加marker。当您添加/删除标记时,您可以使用 JavaScript 更新您的 lat/long 输入(我个人会使用 jQuery)。此时,您可以将 lat/long 输入隐藏或只读 - 除非您的用户有理由手动更新 lat/long。

      仅供参考 - Google 可能会建议使用 Maps API V3,但是当我尝试使用它时,丢失的部分太多了。我会坚持使用 V2。

      【讨论】:

        【解决方案3】:

        我不知道具体细节,但我会查看 Google Maps API 以了解当用户放下标记时调用的回调函数。我确信有一个。当调用该回调函数时,它将与纬度和经度一起传递。这样您就可以使用正确的值更新表单属性。

        只是为了帮助您找到正确的方向。

        【讨论】:

          【解决方案4】:

          如果您尝试在您的 Rails 项目中使用 Google Maps API,那么我强烈建议您使用YM4R plugin。该插件提供了一个对 ruby​​ 友好的 Google Maps API 对象封装。 README in the Rdoc 有很好的示例代码,说明如何开始显示地图并显示一个或多个标记。

          使用该插件的最大优势在于该插件将整个 GMaps API 抽象为 ruby​​ 对象,因此您可以仅使用 Ruby 代码创建和添加到地图。您不必编写任何 Javascript...除非您愿意 ;)

          【讨论】:

            【解决方案5】:

            Cartographer 插件支持 Rails 3+,

            它已被重写以适用于大量标记和集群

            它支持在 rails 中轻松集成 google maps v3,http://grati.la/cartorbflw

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-09-22
              • 1970-01-01
              • 1970-01-01
              • 2021-08-10
              • 2013-02-23
              • 2013-11-16
              • 2013-05-16
              • 1970-01-01
              相关资源
              最近更新 更多