bgneal@821: var bandmap = null; bgneal@821: var geocoder = null; bgneal@827: var surfbands = []; bgneal@827: var map_options = { bgneal@827: center: {lat: 15.0, lng: -30.0}, bgneal@827: zoom: 2 bgneal@827: }; bgneal@827: var info_win = null; bgneal@821: bgneal@821: function addBandOnSubmit(event) { bgneal@821: var location = $('#id_location').val(); bgneal@821: if (!location) { bgneal@821: alert("Please enter a location"); bgneal@821: return false; bgneal@821: } bgneal@821: var button = $(this); bgneal@821: button.attr('disabled', 'disabled'); bgneal@821: var form = $('#bandmap-add-form'); bgneal@821: geocoder.geocode({'address': location}, function(results, status) { bgneal@821: button.removeAttr('disabled'); bgneal@821: if (status == google.maps.GeocoderStatus.OK) { bgneal@821: $('#id_lat').val(results[0].geometry.location.lat().toString()); bgneal@821: $('#id_lon').val(results[0].geometry.location.lng().toString()); bgneal@821: $(form).submit(); bgneal@821: } bgneal@821: else { bgneal@821: var msg = "Geocode unsuccessful: " + status + "\n" + bgneal@821: "Enter a new location"; bgneal@821: alert(msg); bgneal@821: } bgneal@821: }); bgneal@821: return false; bgneal@821: } bgneal@821: bgneal@827: bgneal@827: function refreshMap() { bgneal@827: bandmap.setOptions(map_options); bgneal@827: $.each(surfbands, function(i, band) { bgneal@827: band.marker.setMap(null); bgneal@827: }); bgneal@827: surfbands.length = 0; bgneal@827: var band_sel = $('#map-bands'); bgneal@827: band_sel[0].length = 0; bgneal@827: band_sel.append($('<option>', {value: -1}).html('(select)')); bgneal@827: var count_span = $('#map-band-count'); bgneal@827: count_span.html('0'); bgneal@827: var filter = $('#map-filter option:selected').val(); bgneal@827: bgneal@827: $.getJSON('/bandmap/query/', {show: filter}, bgneal@827: function(data) { bgneal@827: $.each(data, function(i, band) { bgneal@827: band_sel.append($('<option>', {value: i, text: band.name})); bgneal@827: var marker = new google.maps.Marker({ bgneal@827: position: {lat: band.lat, lng: band.lon}, bgneal@827: title: band.name, bgneal@830: icon: band.is_active ? "http://maps.google.com/mapfiles/ms/icons/green-dot.png" bgneal@830: : "http://maps.google.com/mapfiles/ms/icons/red-dot.png", bgneal@827: map: bandmap bgneal@827: }); bgneal@827: google.maps.event.addListener(marker, 'click', function() { bgneal@827: info_win.setContent(band.note); bgneal@827: info_win.open(bandmap, marker); bgneal@827: }); bgneal@827: surfbands[i] = band; bgneal@827: surfbands[i].marker = marker; bgneal@827: }); bgneal@827: count_span.html(data.length); bgneal@827: }); bgneal@827: } bgneal@827: bgneal@820: $(document).ready(function() { bgneal@820: var map_div = $('#map-canvas'); bgneal@820: if (map_div.length) { bgneal@821: bandmap = new google.maps.Map(map_div[0], map_options); bgneal@832: info_win = new google.maps.InfoWindow({maxWidth: 300}); bgneal@827: $('#map-filter-go').click(refreshMap); bgneal@827: $('#map-bands').change(function() { bgneal@827: var n = $('option:selected', this).val(); bgneal@827: if (n != -1) { bgneal@827: info_win.setContent(surfbands[n].note); bgneal@827: info_win.open(bandmap, surfbands[n].marker); bgneal@827: } bgneal@827: }); bgneal@827: refreshMap(); bgneal@820: } bgneal@820: bgneal@820: var add_form = $('#bandmap-add-form'); bgneal@820: if (add_form.length) { bgneal@821: geocoder = new google.maps.Geocoder(); bgneal@821: $('#bandmap-add-submit').click(addBandOnSubmit); bgneal@820: } bgneal@820: });