Google Maps и Rails 3 - PullRequest
       1

Google Maps и Rails 3

3 голосов
/ 02 апреля 2011

В свое время я собрал приложение на рельсах 2.3x, используя geokit и y4mr-gm.

Я сейчас создаю приложение и Rails 3, и мне интересно, есть ли какие-нибудь лучшие решения.

По сути, у меня есть модель Бизнеса, у которой есть адрес. Когда пользователь ищет или просматривает предприятия, в нижней части которого я хочу разместить карту, на которой отображается маркер для каждого предприятия.

Я мог бы сделать это через geokit и y4mr-gm (хотя я слышал, что могут быть некоторые проблемы с Rails 3), но я надеюсь на более элегантное решение. Есть ли что-нибудь недавнее, что я мог бы использовать?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 02 апреля 2011

Я был действительно счастлив с Геокодером .Его активно поддерживают и очень просто.Я запрашиваю адрес улицы и заставляю геокодер заполнять поля lat / lng перед тем, как сохранить свою модель.Это действительно безболезненно для реализации.

Когда дело доходит до отображения материала на карте, я все еще пишу JS сам, но использую jQuery для этого.Если вы ищете рабочий пример JS с jQuery, вы можете увидеть мой здесь .

2 голосов
/ 03 апреля 2011

Я бы сказал, прикрути плагины и просто используй JavaScript из Google Maps API v3 ... это действительно не так уж много кода, а G имеет очень точный геокодер.Просто создайте в своем представлении массив предприятий js и используйте несколько js для загрузки карты и маркеров.

НЕПРОВЕРЕННЫЙ код, но он должен быть довольно близок:

<script type="text/javascript">
addresses = [];
<% @businessses.each do |biz| %>
  addresses.push('<%=biz.address%>');
<% end %>

function renderYoMap(addresses){
  var gmapOptions = {
    zoom: 12,
    center: new google.maps.LatLng(38,-97),  //near the middle of the US
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  // initialize the map with your options
  gmap = new google.maps.Map(document.getElementById("map_canvas"),gmapOptions);

  // probably want to recenter on the first marker, so lets use a flag
  recentered = false;

  //iterate through your addresses
  for (i in addresses) {
    address = addresses[i];
    geocoder = new google.maps.Geocoder();
    //geocode it to get marker position
    geocoder.geocode( { 'address': address }, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      lat = results[0].geometry.location.lat();
      lng = results[0].geometry.location.lng();
      position = new google.maps.LatLng(lat,lng);
      markerOptions = {
        map: gmap,
        position: position
      };
      //create your marker on the map
      new google.maps.Marker(markerOptions);

      //recenter that thang if it hasnt been already
      if (!recentered){
        gmap.setCenter(position);
        recentered = true;
      }
    }
  }
}

renderYoMap(businesses);
</script>

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

1 голос
/ 02 апреля 2011

Ну, у вас есть несколько вариантов, ящик для инструментов ruby ​​ может помочь, но он не выглядит актуальным.

Я предлагаю https://github.com/joshuamiller/cartographer

Картограф создает безболезненные Карты Google для вашего приложения Rails.Он поддерживает Google Maps API v3 и поставляется со всеми полезными функциями (MarkerManager && MarkerClusterer) для управления большим количеством маркеров с наименьшими усилиями.

весело

1 голос
/ 02 апреля 2011

Вот тот, который вы должны проверить:

https://github.com/apneadiving/Google-Maps-for-Rails

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...