I am doing something similar here. The website is built on rails 2.3.9
and
uses prototype.

Almost all of what i need to happen does, but i get to the point where
the update happens and nothing does.

// add circles to map as it
initializes
    addCircles(sites, map, markerArray,
lineArray);

    var pe = new
PeriodicalExecuter(refreshCircleMarkers.curry(markerArray, lineArray,
map),
33);

    function refreshCircleMarkers(markerArray, lineArray, map)
{

      // first we remove the existing markers in
place
      for(i=0; i<markerArray.length; i++)
{
 
markerArray[i].setMap(null);
      }
      // and empty the array
itself
      markerArray =
[];

      var url = "/group/
update_mapv3_circles";
      new Ajax.Request(url,
{
        method:
'get',
        onSuccess: function(response)
{
          var sites =
response.responseText;
          addCircles(sites, map, markerArray,
lineArray);
    }
      });


If i do an alert(response.responseText) the alert will show up and
display the contents of the @mapped_sites.to_json ( i am using
render :json => @mapped_sites.to_json in the controller).
Please let me know if you see something i am doing wrong.
Thanks for your help on this so far Jim.

sk


On Dec 9, 11:49 pm, Jim Ruther Nill <[email protected]> wrote:
> On Sat, Dec 10, 2011 at 3:56 AM, skrite <[email protected]> wrote:
> > I am intrigued by this solution, Jim.
> > i have a couple of questions, as it seems this is a cleaner way than
> > what I am trying to do.
> > The values that determine the circle color are in the database, and
> > can change while the page is loaded. This is why i need them to
> > update.
>
> i'll still go with my suggestion earlier.  To update the colors, just update
> the sites variable after completing the ajax request and then call
> addCircles
>
> your ajax call may look like the following (this is totally untested :D)
>
> $.ajax({
>   url: your_url_here_that_returns_json_equivalent_of_@mapped_sites,
>   success: function(data) {
>     addCircles(data);
>   }
>
>
>
>
>
>
>
>
>
> });
> > So, somehow i still need to go to the server for that. I guess i am
> > missing the part about how to get the @mapped_sites variable to the
> > controller and back again to the page to rebuild the circles.
> > Thanks for your time on this.
> > sk
>
> > On Dec 9, 9:48 am, Jim Ruther Nill <[email protected]> wrote:
> > > On Fri, Dec 9, 2011 at 11:04 PM, skrite <[email protected]> wrote:
> > > > Hey, thanks for these links, very helpful.
> > > > -sk
>
> > > > On Dec 8, 7:49 pm, "L.Karthikeyan" <[email protected]> wrote:
> > > > > Hi,
>
> > > > >       For this you need to use rjs Ajax request. Please refer the
> > > > > following links, you will get an idea.
>
> > > > > 1.http://railscasts.com/episodes/43-ajax-with-rjs?autoplay=true,
> > > > > 2.
> >http://railscasts.com/episodes/229-polling-for-changes?autoplay=true
>
> > > one more option is to keep @mapped_sites to a javascript variable so you
> > > dont have to use ajax.  you might also want to move the makeMarker part
> > > to a js function to tidy up the view and just call that function when you
> > > need
> > > to update the colors
>
> > > something along the lines of
>
> > > var sites = <%= @mapped_sites.to_json %>;
> > > addCircles(sites);
>
> > > function addCircles(circles) {
> > >   for(i=0; i<circles.length; i++) {
> > >     center = new google.maps.LatLng(circles[i][0], circles[i][1]);
> > >     siteCircle = makeMarker({
> > >       position: center,
> > >       strokeColor: "#FF0000",
> > >       strokeOpacity: 0.8,
> > >       strokeWeight: 2,
> > >       fillColor: circles[i][7],
> > >       fillOpacity: 0.75,
> > >       radius: 560,
> > >       map: map,
> > >       center: center,
> > >       radius: circles[i][2],
> > >       title: circles[i][5],
> > >       content: 'content'
> > >     });
> > >   }
>
> > > }
>
> > > then you just need to update the sites variable using js. no need
> > > to go back to the server.
>
> > > > > On Thu, Dec 8, 2011 at 1:10 AM, skrite <[email protected]> wrote:
>
> > > > > > Hey all,
> > > > > > i have a google map and i am drawing circles on the map like this..
>
> > > > > >  var latlng = new google.maps.LatLng(35.931387,
> > > > > > -102.31062);
> > > > > >    var myMapOptions =
> > > > > > {
> > > > > >      zoom:
> > > > > > 12,
> > > > > >      center:
> > > > > > latlng,
> > > > > >      mapTypeId:
> > > > > > google.maps.MapTypeId.HYBRID
> > > > > >    };
>
> > > > > >    var map = new
> > > > > > google.maps.Map(document.getElementById("map_canvas"),
> > > > > > myMapOptions);
> > > > > >    var infoWindow = new
> > > > > > google.maps.InfoWindow();
> > > > > >    var markerBounds = new
> > > > > > google.maps.LatLngBounds();
>
> > > > > >   <% @mapped_sites.each do |row|
> > > > > > %>
>
> > > > > >        // main
> > > > > > circle
> > > > > >        center = new google.maps.LatLng(<%= "#{row[0]}" %>, <%=
> > > > > > "#{row[1]}"
> > > > > > %>);
> > > > > >        siteCircle =
> > > > > > makeMarker({
> > > > > >          position:
> > > > > > center,
> > > > > >          strokeColor:
> > > > > > "#FF0000",
> > > > > >          strokeOpacity:
> > > > > > 0.8,
> > > > > >          strokeWeight:
> > > > > > 2,
> > > > > >          fillColor: '<%= "#{row[7]}"
> > > > > > %>',
> > > > > >          fillOpacity:
> > > > > > 0.75,
> > > > > >          radius:
> > > > > > 560,
> > > > > >          map:
> > > > > > map,
> > > > > >          center:
> > > > > > center,
> > > > > >          radius: <%= "#{row[2]}"
> > > > > > %>,
> > > > > >          title: '<%= "#{row[5]}"
> > > > > > %>',
> > > > > >          content: '<%= "some contnet
> > > > > > %>'
> > > > > >       });
>
> > > > > >       markerArray.push(siteCircle);
>
> > > > > > my question is, that since the fillColor is going to change from
> > time
> > > > > > to time, i want to update all the colors of the circles
> > periodically.
> > > > > > What i don't know how to do is get the equivelent to the
> > > > > > @mapped_sites  because if i could, i think i could just delete the
> > > > > > existing circles and draw new ones.
>
> > > > > > How do i get info back from the server periodically to update the
> > > > > > circle colors?
>
> > > > > > thanks to all.
> > > > > > skrite
>
> > > > > > --
> > > > > > You received this message because you are subscribed to the Google
> > > > Groups "Ruby on Rails: Talk" group.
> > > > > > To post to this group, send email to
> > [email protected]
> > > > .
> > > > > > To unsubscribe from this group, send email to
> > > > [email protected].
> > > > > > For more options, visit this group athttp://
> > > > groups.google.com/group/rubyonrails-talk?hl=en.
>
> > > > > --
>
> > > > > Regards,
> > > > > L.KarthiKeyan.
>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > Groups
> > > > "Ruby on Rails: Talk" group.
> > > > To post to this group, send email to [email protected]
> > .
> > > > To unsubscribe from this group, send email to
> > > > [email protected].
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/rubyonrails-talk?hl=en.
>
> > > --
> > > -------------------------------------------------------------
> > > visit my blog athttp://jimlabs.heroku.com
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Ruby on Rails: Talk" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group at
> >http://groups.google.com/group/rubyonrails-talk?hl=en.
>
> --
> -------------------------------------------------------------
> visit my blog athttp://jimlabs.heroku.com

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to