/*=============================================
Project Size
=============================================== */
$(function() {
$( "#draggable" ).draggable();
$( "#mapDiv45" ).draggable();
$( "#show-hide-advanced-fields" ).click(function(){
$( "#advanced-fields, #mapcontrols").toggle();
});
});
$(document).ready(function() {
function initialize(){
var geocoder = new google.maps.Geocoder();
address = document.getElementById('address').value;
var mapOptions = {
zoom: 40,
disableDefaultUI: true,
zoomControl: true,
panControl: true,
mapTypeControl: true,
scaleControl: true,
streetViewControl: true,
overviewMapControl: true,
mapTypeId:google.maps.MapTypeId.SATELLITE,
tilt: 0
};
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
x = results[0].geometry.location;
}
});
var map = new google.maps.Map(document.getElementById("mapDiv"), mapOptions);
var mapOptions45 = {
zoom: 20,
minZoom: 18,
disableDefaultUI: true,
zoomControl: true,
mapTypeId:google.maps.MapTypeId.SATELLITE,
tilt: 45
};
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map45.setCenter(results[0].geometry.location);
x = results[0].geometry.location;
}
});
var map45 = new google.maps.Map(document.getElementById("mapDiv45"), mapOptions45);
var mapOptionsImage = {
zoom: 20,
disableDefaultUI: true,
zoomControl: false,
draggable: false,
mapTypeId:google.maps.MapTypeId.SATELLITE,
tilt: 45
};
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
mapImage.setCenter(results[0].geometry.location);
x = results[0].geometry.location;
}
});
var mapImage = new google.maps.Map(document.getElementById("mapDivImage"), mapOptionsImage);
addButtons(map);
drawEditablePolygon(map);
}
function addButtons(map){
document.getElementById('btnTerrain').addEventListener('click', function(){
map.setMapTypeId(google.maps.MapTypeId.TERRAIN);
});
document.getElementById('btnRoadmap').addEventListener('click', function(){
map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
});
document.getElementById('btnSatellite').addEventListener('click', function(){
map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
});
document.getElementById('btnHybrid').addEventListener('click', function(){
map.setMapTypeId(google.maps.MapTypeId.HYBRID);
});
document.getElementById('btnCompass').addEventListener('click', function(){
$('#draggable').toggle();
});
document.getElementById('btnInspector').addEventListener('click', function(){
$('#mapDiv45').toggle();
});
}
function drawEditablePolygon(map) {
geocoder = new google.maps.Geocoder();
address = document.getElementById('address').value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
lat = results[0].geometry.location.lat();
lon = results[0].geometry.location.lng();
lat_adjacent = Number(results[0].geometry.location.lat()) + 0.0001;
lon_adjacent = Number(results[0].geometry.location.lng()) + 0.0001;
console.log("LAT: " + lat + " | ADJACENT LAT: " + lat_adjacent + " LON: " + lon + " | ADJACENT LON: " + lon_adjacent);
natureCoords = [
new google.maps.LatLng(lat, lon_adjacent),
new google.maps.LatLng(lat, lon),
new google.maps.LatLng(lat_adjacent, lon),
new google.maps.LatLng(lat_adjacent, lon_adjacent)
];
natureArea = new google.maps.Polygon({
path: natureCoords,
strokeColor: "#FFFFFF",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#00FF00",
fillOpacity: 0.6,
editable: true,
draggable: true
});
natureArea.setMap(map);
document.getElementById('calculate').addEventListener('click', function(){
calculateValue();
});
}
});
}
google.maps.event.addDomListener(window, "load", initialize);
$('#update_address').click( function(){
initialize();
});
$('#calculate').click( function(){
$('#results, #results2, #results3').show();
});
});
function calculateValue() {
surface_area = Number(google.maps.geometry.spherical.computeArea(natureArea.getPath()));
size_premimum = Number(surface_area * 0.15);
size_standard = Number(surface_area * 0.10);
document.getElementById('results').innerHTML = "
RESULTS:
";
document.getElementById('results').innerHTML += "Surface Area = " + surface_area.toFixed(0) + " sq meter
";
document.getElementById('results').innerHTML += "System size by using premium solar panels (SunPower) = " + size_premimum.toFixed(2) + " kW
";
document.getElementById('results').innerHTML += "System size by using standard solar panels = " + size_standard.toFixed(2) + " kW
";
var tilt = parseInt(document.getElementById('tilt').value);
var azimuth = parseInt(document.getElementById('azimuth').value);
var requestUrl="https://developer.nrel.gov/api/pvwatts/v5.json?api_key=zoY9HFdYunwk1YAZ16nVrcmwzqotGDdnJONRA9oQ&lat=" + lat + "&lon=" + lon + "&timeframe=monthly&system_capacity=" + size_premimum + "&module_type=1&losses=14&array_type=1&tilt=" + tilt + "&azimuth=" + azimuth + "&callback=?";
$.getJSON(requestUrl, { }, function (data){
console.log(data.outputs);
var energyGenerated = data.outputs.ac_annual;
var ppa = document.getElementById('ppa').value;
var lease = energyGenerated * 0.15 * ppa;
document.getElementById('results3').innerHTML = "
Estimated Electricity Production = " + energyGenerated.toFixed(2) + " kWh per year
";
document.getElementById('results3').innerHTML += "
Year 1 PPA Revenue $" + lease.toFixed(2) + ".
";
});
requestUtilityCompanies ="https://developer.nrel.gov/api/census_rate/v3.json?api_key=zoY9HFdYunwk1YAZ16nVrcmwzqotGDdnJONRA9oQ®ion=block&id=101&lat=" + lat + "&lon=" + lon;
$.getJSON(requestUtilityCompanies, { }, function (data){
document.getElementById('results2').innerHTML = "
Local Electric Utility Company:
";
var i=0;
utility='';
while(data.outputs.utility_info[i]){
console.log(data.outputs.utility_info[i].utility_name);
document.getElementById('results2').innerHTML += data.outputs.utility_info[i].utility_name + "
";
utility += data.outputs.utility_info[i].utility_name ;
i++;
}
});
}
/*=============================================
Utility
=============================================== */
function show_utility_companies() {
var city = document.getElementById('city').value;
city = city.trim();
city = city.split(' ').join('+');
var address = city + "+" + document.getElementById('state').value;
var requestUtilityCompanies ="https://developer.nrel.gov/api/census_rate/v3.json?api_key=zoY9HFdYunwk1YAZ16nVrcmwzqotGDdnJONRA9oQ®ion=block&id=101&address=" + address;
$.getJSON(requestUtilityCompanies, {
},
function (data){
document.getElementById('utility_companies').innerHTML = "Local Eletric Utility Companies:
";
var i=0;
while(data.outputs.utility_info[i]){
console.log(data.outputs.utility_info[i].utility_name);
document.getElementById('utility_companies').innerHTML += data.outputs.utility_info[i].utility_name + "
";
i++;
}
});
}
function show_average_electrcity_tariffs() {
var city = document.getElementById('city').value;
city = city.trim();
city = city.split(' ').join('+');
var address = city + "+" + document.getElementById('state').value;
var requestAvgElectTariffs ="https://developer.nrel.gov/api/utility_rates/v3.json?api_key=zoY9HFdYunwk1YAZ16nVrcmwzqotGDdnJONRA9oQ&address=" + address;
$.getJSON(requestAvgElectTariffs, {
},
function (data){
document.getElementById('average_electricity_tariffs').innerHTML = "Local Average Electricity Rates:
";
document.getElementById('average_electricity_tariffs').innerHTML += " Commercial: $" + data.outputs.commercial + "
" + "Industrial: $" + data.outputs.industrial + "
" + "Residential: $" + data.outputs.residential + "
";
});
}
/*=============================================
Solar Irradiance
=============================================== */
function pvwatts_irradiance() {
var city = document.getElementById('city').value;
city = city.trim();
city = city.split(' ').join('+');
var address = city + "+" + document.getElementById('state').value;
var size = document.getElementById('size').value;
var array_type = parseInt(document.getElementById('array_type').value);
var module_type = parseInt(document.getElementById('module_type').value);
var tilt = parseInt(document.getElementById('tilt').value);
var azimuth = parseInt(document.getElementById('azimuth').value);
var requestUrl="https://developer.nrel.gov/api/pvwatts/v5.json?api_key=zoY9HFdYunwk1YAZ16nVrcmwzqotGDdnJONRA9oQ&address=" + address + "&timeframe=monthly&system_capacity=" + size + "&module_type=" + module_type + "&losses=14&array_type=" + array_type + "&tilt=" + tilt + "&azimuth=" + azimuth + "&callback=?";
$.getJSON(requestUrl, {},
function (data){
document.getElementById('pv_watts_annual_production').innerHTML = "Annual Production: " + data.outputs.ac_annual.toFixed(2) + " kWh/year
";
var radiation = new Array ();
radiation = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
for (i=0; i<12; i++){
document.getElementById('radiation_' + radiation[i] + '').innerHTML = data.outputs.ac_monthly[i].toFixed(0);
document.getElementById('production_' + radiation[i] + '').innerHTML = data.outputs.ac_monthly[i].toFixed(0);
}
});
}
/*=============================================
System Production
=============================================== */
function pvwatts() {
var city = document.getElementById('city').value;
city = city.trim();
city = city.split(' ').join('+');
var address = city + "+" + document.getElementById('state').value;
var size = document.getElementById('size').value;
var array_type = parseInt(document.getElementById('array_type').value);
var module_type = parseInt(document.getElementById('module_type').value);
var tilt = parseInt(document.getElementById('tilt').value);
var azimuth = parseInt(document.getElementById('azimuth').value);
var requestUrl="https://developer.nrel.gov/api/pvwatts/v5.json?api_key=zoY9HFdYunwk1YAZ16nVrcmwzqotGDdnJONRA9oQ&address=" + address + "&timeframe=monthly&system_capacity=" + size + "&module_type=" + module_type + "&losses=14&array_type=" + array_type + "&tilt=" + tilt + "&azimuth=" + azimuth + "&callback=?";
$.getJSON(requestUrl, {},
function (data){
document.getElementById('pv_watts_annual_production').innerHTML = "
Annual System Production: " + data.outputs.ac_annual.toFixed(2) + " kWh/year AC
";
document.getElementById('pv_watts_annual_production').innerHTML += "Annual Solar Radiation Available: " + data.outputs.solrad_annual.toFixed(3) * 365 + " kWh/year
";
var radiation = new Array ();
radiation = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
for (i=0; i<12; i++){
document.getElementById('radiation_' + radiation[i] + '').innerHTML = data.outputs.solrad_monthly[i].toFixed(3)*1000;
document.getElementById('production_' + radiation[i] + '').innerHTML = data.outputs.ac_monthly[i].toFixed(0);
}
});
}
/*=============================================
Financial Incentives
=============================================== */
function show_incentives() {
var city = document.getElementById('city').value;
city = city.trim();
city = city.split(' ').join('+');
var address = city + "+" + document.getElementById('state').value;
var requestDsire = "https://developer.nrel.gov/api/energy-incentives/v1.json?api_key=zoY9HFdYunwk1YAZ16nVrcmwzqotGDdnJONRA9oQ&address=" + address + "&incentive_types=solar_incentives&callback=?";
$.getJSON(requestDsire, {},
function (data){
document.getElementById('list_of_incentives').innerHTML = "List of Incentives:
";
var i=0;
while(data.outputs.solar_incentives[i]){
document.getElementById('list_of_incentives').innerHTML += " Program Name: " + data.outputs.solar_incentives[i].program_name + "
" + " Description: " + data.outputs.solar_incentives[i].notes + "
";
i++;
}
document.getElementById('list_of_incentives').innerHTML += "Read more in the DSIRE website ";
});
}
/*=============================================
Installation Cost
=============================================== */
function avg_costperwatt(){
document.getElementById("openpv_summary_results").innerHTML ="Please wait ... retrieving data
";
size = document.getElementById("openpv_system_size").value;
minsize = size * 0.8;
maxsize = size * 1.2;
county = document.getElementById("openpv_county").value;
var requestSystemCost ="https://developer.nrel.gov/api/solar/open_pv/installs/summaries?api_key=zoY9HFdYunwk1YAZ16nVrcmwzqotGDdnJONRA9oQ&county=" + county + "&minsize=" + minsize + "&maxsize=" + maxsize;
$.getJSON(requestSystemCost, {},
function (data){
var number_of_system_costs = data.result.length;
document.getElementById("openpv_summary_results").innerHTML ="Average Cost per Watt: " + data.result.avg_cost_pw + " $/W
";
document.getElementById("openpv_summary_results").innerHTML +="Best Average Cost per Watt: " + data.result.best_avg_cost_pw + " $/W
";
});
}