ym4r/GM GLatLng and RJS

I’m stepping through a variant of the tutorial for the ym4r/GM mapping
library here:

and with heavily simplified code I’m basically doing this in the
controller (assume @map and @zoom are all good):

    @center = GLatLng.new([ result.latitude, result.longitude ])

and in the .rjs file:

     page << @map.set_center(@center, @zoom)

And using Firebug to look at the javascript that’s returned, I get
this:

  map.setCenter(#<Ym4r::GmPlugin::GLatLng:0xb7530778>,12);

which makes it pretty clear that the GLatLng object is having to_s
called on it rather than the ym4r’s MappingObject.to_javascript method.
I’m still debugging but thought perhaps others have hit this issue.
As far as I can tell this is exactly how both tutorials walk through
doing this, so I’m not sure what’s going on.

Appreciate any suggestions or will let folks know what I find.

shaper wrote:

And using Firebug to look at the javascript that’s returned, I get
this:

  map.setCenter(#<Ym4r::GmPlugin::GLatLng:0xb7530778>,12);

which makes it pretty clear that the GLatLng object is having to_s
called on it rather than the ym4r’s MappingObject.to_javascript method.
I’m still debugging but thought perhaps others have hit this issue.
As far as I can tell this is exactly how both tutorials walk through
doing this, so I’m not sure what’s going on.

Solution: don’t have both the ym4r_gm and ym4r_mapstraction plugins
installed in the same app at the same time. Removing the mapstraction
plugin fixes the problem. It appears there is an ambiguous reference
to the MappingObject, which resides in mapping.rb in both plugins.
Insidious and evil. Foolish me for having both installed as I toyed
about. May others learn from my mistake.

  • Walter

I use the plug-in with great success, along with RJS.

I think some of the tutorials are a bit out of date.

Personally, I use this to set the map center:

@map.center_zoom_init([@last_location.latitude,
@last_location.longitude],
15)

I believe the init method is required to be called at least once, no?

shaper wrote:

shaper wrote:

And using Firebug to look at the javascript that’s returned, I get
this:

  map.setCenter(#<Ym4r::GmPlugin::GLatLng:0xb7530778>,12);

which makes it pretty clear that the GLatLng object is having to_s
called on it rather than the ym4r’s MappingObject.to_javascript method.
I’m still debugging but thought perhaps others have hit this issue.
As far as I can tell this is exactly how both tutorials walk through
doing this, so I’m not sure what’s going on.

Solution: don’t have both the ym4r_gm and ym4r_mapstraction plugins
installed in the same app at the same time. Removing the mapstraction
plugin fixes the problem. It appears there is an ambiguous reference
to the MappingObject, which resides in mapping.rb in both plugins.
Insidious and evil. Foolish me for having both installed as I toyed
about. May others learn from my mistake.

  • Walter

Thank you for posting this! I’ve been struggling with the same
problem…now on to the next one! :stuck_out_tongue: