_google_maps.rhtml 1.95 KB
<%= content_tag('script', '', :src => GoogleMaps.api_url(environment.default_hostname), :type => 'text/javascript') %>


<div style='text-align: center;'>
  <div id="map"></div>
</div>

<script type='text/javascript'>
var points = {};
   
function putMarker(lat, lng, title, summary) {
  var point_str = lat + ":" + lng;
   
  if (points[point_str]) {
    lng += (Math.random() - 0.5) * 0.02;
    lat += (Math.random() - 0.5) * 0.02;
  } else {
    points[point_str] = true;
  }
     
  var point = new GLatLng(lat, lng);
  var options = { 'title' : title, 'icon' : icon };
  var marker = new GMarker(point, options);
  map.addOverlay(marker);
  GEvent.addListener(marker, 'click', function() {
    map.openInfoWindowHtml(point, summary);
  });
  bounds.extend(point);
}

window.unload = function() {
  GUnload();
};

if (GBrowserIsCompatible()) {
  var map = new GMap2(document.getElementById("map"));

  new GKeyboardHandler(map);
  map.addControl(new GLargeMapControl());
  map.addControl(new GMapTypeControl());

  centerPoint = new GLatLng(-15.0, -50.1419);
  map.setCenter(centerPoint, <%= GoogleMaps.initial_zoom.to_json %>);
  var bounds = new GLatLngBounds();

  var baseIcon = new GIcon();
      baseIcon.iconSize=new GSize(32,32);
      baseIcon.shadowSize=new GSize(36,32);
      baseIcon.iconAnchor=new GPoint(16,32);
      baseIcon.infoWindowAnchor=new GPoint(16,0);
  <%
    icon = default_or_themed_icon("/images/icons-map/enterprise.png")
    icon_shadow = default_or_themed_icon("/images/icons-map/enterprise_shadow.png")
  %>
  var icon = new GIcon(baseIcon, "<%= icon %>", null, "<%= icon_shadow %>");

<%
  @results.each do |name,results|
    results.each do |item|
      if item.lat && item.lng
      %>
        putMarker(<%= item.lat.to_json %>, <%= item.lng.to_json %>, <%= item.name.to_json %>, <%= display_item_map_info(item).to_json %>);
      <%
      end
    end
  end
%>
}

  map.setZoom(map.getBoundsZoomLevel(bounds));
  map.setCenter(bounds.getCenter());
</script>