Как обновить радиус радиуса с помощью гема gmaps4rails? - PullRequest
0 голосов
/ 03 июля 2011

Я использую гем gmaps4rails, чтобы показать карту в моем приложении rails. В некоторых местах пользователь может указать местоположение, радиус и тип радиуса.

Пример:

location => Chicago, IL,
within => 10, 
radius type => km(kilometer).

Я хочу обновить маркер и радиус круга, когда пользователь нажимает ссылку «Обновить обзор». Я уже заменил маркер, используя следующий синтаксис:

function add_marker(location_served) {
    var location = $(location_served).val();
    var geocoder;

    geocoder = new google.maps.Geocoder();
    geocoder.geocode( {
        'address': location
    }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            Gmaps4Rails.replace_markers([{
                "description": "",
                "title": "",
                "longitude": results[0].geometry.location.lng(),
                "latitude": results[0].geometry.location.lat(),
                "picture": "",
                "width": "",
                "height": ""
            }]);
        } else {
            alert("The location you've entered is invalid");
        }
    });
}

Но я понятия не имею, как обновить радиус круга. Я вижу create_circle метод в gmaps4rails.js, но я не знаю параметра, который должен быть передан при использовании этого метода.

Кто-нибудь знает, как динамически обновить круг?

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 августа 2011

Причиной, по которой круги не отображаются в ответе ниже, являются теги для lat / lng:

//brute way to do
...
Gmaps4Rails.circles = [{"latitude":  , "longitude": , "radius":}];

Должно быть

Gmaps4Rails.circles = [{"lat":  , "lng": , "radius":}];

Согласно строке gmaps4rails.base.js 165

0 голосов
/ 03 июля 2011
function add_marker(location_served) {
  var location = $(location_served).val();
  var geocoder;

  geocoder = new google.maps.Geocoder();
  geocoder.geocode( {
    'address': location
  }, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
     Gmaps4Rails.replace_markers([{
        "longitude": results[0].geometry.location.lng(),
        "latitude":  results[0].geometry.location.lat()
     }]);

     //brute way to do
     Gmaps4Rails.clear_circles();
     Gmaps4Rails.circles = [{"latitude":  , "longitude": , "radius":}];
     Gmaps4Rails.create_circles();

     //soft way (if you only want to update radius)
     Gmaps4Rails.circles[0].google_object.setRadius(number_here); //beware in the latest version of the gem I replaced google_object with serviceObject 

    } else {
      alert("The location you've entered is invalid");
    }
  });
}
...