Hi
I have a array of latlng objects that I run through and extend bounds
so that these paths always show up on the map ie the map resizes to
fit the lines. When I do this I get a "too much recursion" error in
firebug. I was wondering how I could fix this?

Here is the code.
document.observe('dom:loaded', function() {
  // this stuff gets executed on the body's on on load time
});
// lat, lng is the center point of the map when starting
function initialize_map(lat, lng)
{
    // in the form ... (lat, lng)
    var latlng = new google.maps.LatLng(lat, lng);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeControl: true,
      mapTypeControlOptions: {style:
google.maps.MapTypeControlStyle.DROPDOWN_MENU},
      navigationControl: true,
      navigationControlOptions: {style:
google.maps.NavigationControlStyle.ANDROID},
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    // Global Variables
    window.map = new
google.maps.Map(document.getElementById("map_canvas"), myOptions);
    window.bounds = new google.maps.LatLngBounds();
}
// this creates a new marker given the info.
// icon_type is either;
//    amer
//    other
//    user
// Be aware that if you change the icon_file_name you need ot make
sure to account for that in this code.
function place_marker(icon_type, description, lat, lng)
{
   // create the marker
    var image = "../images/" + icon_type + "_icon.png";
    var latlng = new google.maps.LatLng(lat, lng);
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        title:description,
        clickable: true,
        icon:image
       });

    // create the info window when clicked on.
    var info_window = new google.maps.InfoWindow({
      content: description
      });

        google.maps.event.addListener(marker, 'click', function() {
        info_window.open(map,marker);
      });
}

function draw_route(route, color)
{
  if (route.type == "LineString"){
    create_polyline(route.coordinates, color).setMap(map);
  }
  else if (route.type == "MultiLineString"){
    route.coordinates.each(function(line){
      create_polyline(line, color).setMap(map);
    });
  }

  set_map_bounds(route.coordinates);
}

function create_polyline(coordinates, color)
{
  // Building the path for the polyline
  var line_path  = build_line_path(coordinates);
  // Building the polyline
  var byways_route = new google.maps.Polyline({
     path: line_path,
     strokeColor: color,
     strokeOpacity: 1.0,
     strokeWeight: 2
   });

  return byways_route;
}

function set_map_bounds(coordinates)
{
  var line_path = build_line_path(coordinates);

  // extends the bounds checking each coord in line path
  for (var i = 0; i < line_path.length; i+=1){
    bounds.extend(line_path[i]);
  }

}

function build_line_path(coordinates)
{
  var line_path = coordinates.map(function(coord){
     return new google.maps.LatLng(coord[1], coord[0]);
    });

  return line_path;
}

function size_map()
{
  map.fitBounds(bounds);
}


Please be aware that "draw_route" gets called many times by my Rails
view page and the incoming "route" contains a Json array of lat / lng
coords that are accessed with the "coordinates" call

Thank you !

 - The Net Duck

-- 
You received this message because you are subscribed to the Google Groups 
"Google Maps JavaScript API v3" 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/google-maps-js-api-v3?hl=en.

Reply via email to