Google Maps Добавляют Маркер, чтобы Отобразиться, затем Сохранить Широту и Долготу в Ruby on Rails

Нет никакого различия между bool? b = null и Nullable<bool> b = null. Эти ? просто сахар синтаксиса компилятора C#.

5
задан Erika 17 November 2009 в 02:42
поделиться

4 ответа

Я думаю, что первым шагом было бы заставить ваши представления работать без карты. Введите широту / долготу вручную, чтобы знать, что ваши представления и контроллеры работают. Когда вы дойдете до этой точки, взгляните на документацию по API Карт Google . Добавьте карту к виду, выясните, как добавить маркер . Когда вы добавляете / удаляете маркер, вы можете обновлять свои входные данные широты и долготы с помощью JavaScript (я бы лично использовал jQuery). На этом этапе вы можете сделать вводы широты / долготы скрытыми или доступными только для чтения - если у ваших пользователей нет причины обновлять широту / долготу вручную.

К вашему сведению - Google мог предложить использовать V3 API Карт, но когда я попытался использовать его, оказалось, что слишком много недостающих частей. Я бы остановился на версии 2.

3
ответ дан 14 December 2019 в 08:53
поделиться

Я не знаю подробностей, но я хотел бы проверить API Карт Google для функции обратного вызова, которая вызывается, когда пользователь сбрасывает маркер. Я уверен, что он есть. Когда эта функция обратного вызова вызывается, ей передается широта и долгота. С его помощью вы можете обновить атрибуты формы, указав правильные значения.

Просто чтобы помочь вам двигаться в правильном направлении.

0
ответ дан 14 December 2019 в 08:53
поделиться

Вот краткий пример:

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);
}
}
4
ответ дан 14 December 2019 в 08:53
поделиться

Если вы пытаетесь использовать Google Maps API в одном из ваших Rails проектов, то я бы настоятельно рекомендовал использовать плагин YM4R. Плагин обеспечивает хорошую инкапсуляцию Google Maps API в виде объектов, дружественных к рубину. В README в Rdoc есть отличный код примеров того, как начать отображать карту и выводить один или несколько маркеров.

Большим преимуществом использования плагина является то, что плагин абстрагирует весь GMaps API за рубиновыми объектами, так что вы можете создавать и добавлять на карту, используя только код Ruby. Вам не придется писать никакой Javascript... если только вы этого не захотите ;)

.
0
ответ дан 14 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: