<%args>
@features
+@overlays
</%args>
<%doc>
Generic Google Maps front end.
}
}, # end of feature
],
+ overlays => [
+ { url => 'https://localhost/freeside/view/sector_map-png.html?102',
+ west => -130.0,
+ east => -128.0,
+ south => 10.0,
+ north => 12.0,
+ }, # make a ground overlay
+ ],
&>
</%doc>
features => \@features
};
+my $apikey = FS::Conf->new->config('google_maps_api_key');
</%init>
+
<div id="map_canvas"></div>
<style type="text/css">
#map_canvas { height: 100%; }
</style>
-<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3">
+<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3<% $apikey ? "&key=$apikey" : '' %>">
</script>
<script type="text/javascript">
var data_geojson = <% encode_json($tree) %>;
+var data_overlays = <% encode_json(\@overlays) %>;
var baseStyle = {
clickable: true,
};
var map;
+var overlays = [];
function initMap() {
var canvas = $('#map_canvas');
map = new google.maps.Map(canvas[0], { zoom: 6 });
// construct bounds around all of the features
var bounds = new google.maps.LatLngBounds;
map.data.forEach(function(feature) {
- var g = feature.getGeometry();
- if (g.getType() == 'Point') {
- bounds.extend(g.get());
- } else if (g.getArray) {
- g.getArray().forEach(function(point) { bounds.extend(point); });
+ var b = feature.getProperty('bounds');
+ if (b) { // if it specifies an ROI, include all of it
+ bounds.union(b);
+ } else {
+ var g = feature.getGeometry();
+ if (g.getType() == 'Point') {
+ bounds.extend(g.get());
+ } else if (g.getArray) {
+ g.getArray().forEach(function(point) { bounds.extend(point); });
+ }
}
});
}
}); // addListener()
+
+ data_overlays.forEach(function(x) {
+ var url = x.url;
+ delete x.url;
+ var overlay = new google.maps.GroundOverlay( url, x );
+ overlay.setMap(map);
+ overlay.setOpacity(0.4);
+ overlays.push(overlay);
+ });
}
$().ready( initMap );