var infowindow = new google.maps.InfoWindow({ size: new google.maps.Size(150, 50) }); function initialize() { var geolib = google.maps.geometry.spherical; var myOptions = { zoom: 20, center: new google.maps.LatLng(32.738158, -117.14874), mapTypeControl: true, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU }, navigationControl: true, mapTypeId: google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); google.maps.event.addListener(map, 'click', function() { infowindow.close(); }); bounds = new google.maps.LatLngBounds(); var polygon1 = new google.maps.Polygon({ map: map, path: [geolib.computeOffset(new google.maps.LatLng(32.737355, -117.148719), 100, 0), geolib.computeOffset(new google.maps.LatLng(32.737355, -117.148719), 100, 120), geolib.computeOffset(new google.maps.LatLng(32.737355, -117.148719), 100, -120) ], name: "polygon1" }); google.maps.event.addListener(polygon1, 'click', function(event) { var contentString = "name:" + this.name + "<br>" + event.latLng.toUrlValue(6); infowindow.setContent(contentString); infowindow.setPosition(event.latLng); infowindow.open(map); }); for (var i = 0; i < polygon1.getPath().getLength(); i++) { bounds.extend(polygon1.getPath().getAt(i)); } var polygon2 = new google.maps.Polygon({ map: map, path: [geolib.computeOffset(new google.maps.LatLng(32.739341, -117.148912), 90, 180), geolib.computeOffset(new google.maps.LatLng(32.739341, -117.148912), 90, 60), geolib.computeOffset(new google.maps.LatLng(32.739341, -117.148912), 90, -60) ], name: "polygon2" }); google.maps.event.addListener(polygon2, 'click', function(event) { var contentString = "name:" + this.name + "<br>" + event.latLng.toUrlValue(6); infowindow.setContent(contentString); infowindow.setPosition(event.latLng); infowindow.open(map); }); for (var i = 0; i < polygon2.getPath().getLength(); i++) { bounds.extend(polygon2.getPath().getAt(i)); } map.fitBounds(bounds); } google.maps.event.addDomListener(window, 'load', initialize); function createClickablePoly(poly, html, label, point) { gpolys.push(poly); if (!point && poly.getPath && poly.getPath().getLength && (poly.getPath().getLength > 0) && poly.getPath().getAt(0)) { point = poly.getPath().getAt(0); } var poly_num = gpolys.length - 1; if (!html) { html = ""; } else { html += "<br>"; } var length = poly.Distance(); if (length > 1000) { html += "length=" + poly.Distance().toFixed(3) / 1000 + " km"; } else { html += "length=" + poly.Distance().toFixed(3) + " meters"; } for (var i = 0; i < poly.getPath().getLength(); i++) { html += "<br>poly[" + poly_num + "][" + i + "]=" + poly.getPath().getAt(i); } html += "<br>Area: " + poly.Area() + " sq meters"; // html += poly.getLength().toFixed(2)+" m; "+(poly.getLength()*3.2808399).toFixed(2)+" ft; "; // html += (poly.getLength()*0.000621371192).toFixed(2)+" miles"; var contentString = html; google.maps.event.addListener(poly, 'click', function(event) { infowindow.setContent(contentString); if (event) { point = event.latLng; } infowindow.setPosition(point); infowindow.open(map); // map.openInfoWindowHtml(point,html); }); if (!label) { label = "polyline #" + poly_num; } label = "<a href='javascript:google.maps.event.trigger(gpolys[" + poly_num + "],\"click\");'>" + label + "</a>"; // add a line to the sidebar html // side_bar_html += '<input type="checkbox" id="poly'+poly_num+'" checked="checked" onclick="togglePoly('+poly_num+');">' + label + '<br />'; }
body, html { height: 100%; width: 100%; }
<script src="http://maps.google.com/maps/api/js?libraries=geometry"></script> <table border="1" style="height:100%; width:100%"> <tr> <td> <div id="map_canvas" style="width:100%; height:100%"></div> </td> <td width="200"> <div id="report"></div> </td> </tr> </table>