Wildlife Survey Quote | Elite Deer Recovery Elite Deer Recovery

Wildlife Survey
Pricing Calculator

 

Get an instant quote for your property. Aerial thermal wildlife surveys across Ohio and the Midwest.

 

1Property Details

Total Property Acreage *

Base rate: $350 for up to 120 acres. $1/acre for each acre over 120.

Please enter a valid acreage.

Property Location *

Enter a location to calculate travel distance. No mileage charge within 40 miles.

Please enter a property location.

2Survey Options

Survey Type *

Thermal Deer Survey

Full herd count using thermal imaging, best at dawn or dusk. Includes species, age class, and sex ratio data.

 Herd Health & Population Analysis

Detailed population metrics, density estimates, and a written summary report.

 Habitat & Cover Assessment

Aerial mapping of food plots, bedding areas, travel corridors, and thermal cover.

 General Wildlife Survey

Multi-species inventory: turkey, coyote, hogs, waterfowl, and other wildlife present on the property.

Please select at least one survey type.

Preferred Date *

Please select a preferred date.

Preferred Time of Day

No preference

 

Pre-Dawn (before sunrise)

 

Dawn (at sunrise)

 

Dusk (at sunset)

 

Post-Dusk (after sunset)

Additional Notes (optional)

Get My Quote →

 Almost there.

 

Enter your contact info below to see your quote. We'll also send you a copy and follow up to get your survey scheduled.

 

Full Name *

Please enter your name.

Phone Number *

Please enter a valid phone number.

Email Address *

Please enter a valid email address.

Show My Quote & Send Request Request sent!

 Zander will be in touch shortly to confirm your survey date.

Your Estimated Quote

$0

Estimated total. Final price confirmed at booking.

Pricing is an estimate based on acreage and straight-line travel distance. Final quote confirmed before scheduling. Survey windows subject to weather and daylight conditions. Questions? Call or text (937) 403-8622 or email 1stchoiceaerialsllc@gmail.com

Elite Deer Recovery · Powered by 1st Choice Aerials LLC
10290 State Route 72 · Leesburg, Ohio 45135
FAA Part 107 Certified · Level 1 sUAS Thermographer
(937) 403-8622 · 1stchoiceaerialsllc@gmail.com · elitedeerrecovery.com

// CONSTANTSconst ORIGIN_LAT = 39.3423; // 10290 State Route 72, Leesburg OH 45135const ORIGIN_LNG = -83.5532;const BASE_PRICE = 350;const BASE_ACRES = 120;const OVERAGE_RATE = 1.00; // per acre over 120const FREE_MILES = 40; // no charge under 40 miles one-wayconst MILEAGE_RATE = 1.00; // per mile (round trip) over 40 mi one-way// CHECKBOX VISUAL SELECTED STATEdocument.querySelectorAll('.check-option input[type="checkbox"]').forEach(cb => { function syncClass() { cb.closest('.check-option').classList.toggle('selected', cb.checked); } syncClass(); cb.addEventListener('change', syncClass);});// DISTANCE CALCULATIONlet calculatedMiles = null;let distanceCalcTimeout = null;document.getElementById('location').addEventListener('input', () => { clearTimeout(distanceCalcTimeout); calculatedMiles = null; distanceCalcTimeout = setTimeout(calculateDistance, 900);});async function geocode(address) { const url = `https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(address)}&limit=1&countrycodes=us`; const res = await fetch(url, { headers: { 'Accept-Language': 'en-US', 'User-Agent': 'EliteDeerRecoveryCalculator/1.0' } }); const data = await res.json(); if (!data.length) throw new Error('Location not found'); return { lat: parseFloat(data[0].lat), lng: parseFloat(data[0].lon), display: data[0].display_name };}function haversineMiles(lat1, lng1, lat2, lng2) { const R = 3958.8; const dLat = (lat2 - lat1) * Math.PI / 180; const dLng = (lng2 - lng1) * Math.PI / 180; const a = Math.sin(dLat/2)**2 + Math.cos(lat1*Math.PI/180) * Math.cos(lat2*Math.PI/180) * Math.sin(dLng/2)**2; return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));}async function calculateDistance() { const locVal = document.getElementById('location').value.trim(); const spinner = document.getElementById('dist-spinner'); const distText = document.getElementById('dist-text'); if (!locVal) { distText.textContent = 'Enter a location to calculate travel distance.'; return; } spinner.style.display = 'block'; distText.textContent = 'Calculating distance…'; try { const dest = await geocode(locVal); const miles = haversineMiles(ORIGIN_LAT, ORIGIN_LNG, dest.lat, dest.lng); calculatedMiles = miles; const roundTrip = miles * 2; const withinFree = miles <= FREE_MILES; distText.textContent = withinFree ? `~${miles.toFixed(1)} mi one-way. Within 40-mile free zone, no travel charge.` : `~${miles.toFixed(1)} mi one-way from Leesburg, OH (${roundTrip.toFixed(1)} mi round trip billed at $1.00/mi)`; distText.style.color = '#4a6741'; } catch(e) { distText.textContent = 'Could not locate that address. You can still continue.'; distText.style.color = '#c0392b'; calculatedMiles = null; } finally { spinner.style.display = 'none'; }}// STEP 1: GET QUOTE BUTTONfunction handleGetQuote() { if (!validateStep1()) return; document.getElementById('contact-gate').style.display = 'block'; document.getElementById('contact-gate').scrollIntoView({ behavior: 'smooth', block: 'start' }); document.getElementById('get-quote-btn').textContent = 'Info Entered ✓'; document.getElementById('get-quote-btn').disabled = true;}function validateStep1() { let ok = true; const acres = parseFloat(document.getElementById('acreage').value); const acreErr = document.getElementById('acreage-err'); if (!acres || acres < 1) { acreErr.style.display = 'block'; document.getElementById('acreage').classList.add('error'); ok = false; } else { acreErr.style.display = 'none'; document.getElementById('acreage').classList.remove('error'); } const loc = document.getElementById('location').value.trim(); const locErr = document.getElementById('location-err'); if (!loc) { locErr.style.display = 'block'; document.getElementById('location').classList.add('error'); ok = false; } else { locErr.style.display = 'none'; document.getElementById('location').classList.remove('error'); } const selectedSurveys = [...document.querySelectorAll('[name="survey"]:checked')]; const surveyErr = document.getElementById('survey-err'); if (!selectedSurveys.length) { surveyErr.style.display = 'block'; ok = false; } else { surveyErr.style.display = 'none'; } const dateVal = document.getElementById('survey-date').value; const dateErr = document.getElementById('date-err'); if (!dateVal) { dateErr.style.display = 'block'; document.getElementById('survey-date').classList.add('error'); ok = false; } else { dateErr.style.display = 'none'; document.getElementById('survey-date').classList.remove('error'); } return ok;}// STEP 2: REVEAL QUOTEasync function handleReveal() { if (!validateContact()) return; const btn = document.getElementById('reveal-btn'); btn.disabled = true; btn.textContent = 'Sending…'; // Calculate pricing const acres = parseFloat(document.getElementById('acreage').value); const surveyFee = acres <= BASE_ACRES ? BASE_PRICE : BASE_PRICE + (acres - BASE_ACRES) * OVERAGE_RATE; const miles = calculatedMiles !== null ? calculatedMiles : 0; const roundTrip = miles * 2; // No mileage charge under 40 miles one-way; charge full round trip miles beyond that const billableRoundTrip = miles <= FREE_MILES ? 0 : roundTrip; const travelFee = billableRoundTrip * MILEAGE_RATE; const total = surveyFee + travelFee; // Build summary for email const surveys = [...document.querySelectorAll('[name="survey"]:checked')].map(c => c.value).join(', '); const dateVal = document.getElementById('survey-date').value; const timeVal = document.getElementById('survey-time').value || 'No preference'; const notes = document.getElementById('notes').value || 'None'; const name = document.getElementById('contact-name').value.trim(); const phone = document.getElementById('contact-phone').value.trim(); const email = document.getElementById('contact-email').value.trim(); const location = document.getElementById('location').value.trim(); // Send notification email via Formspree try { const formData = new FormData(); formData.append('name', name); formData.append('email', email); formData.append('phone', phone); formData.append('_subject', `New Survey Quote Request: ${name} - ${location}`); formData.append('_replyto', email); formData.append('Property Location', location); formData.append('Acreage', `${acres} acres`); formData.append('Survey Types', surveys); formData.append('Preferred Date', dateVal); formData.append('Preferred Time', timeVal); formData.append('Notes', notes); formData.append('Distance (one-way)', calculatedMiles !== null ? `${calculatedMiles.toFixed(1)} mi` : 'Not calculated'); formData.append('Round Trip Miles', `${roundTrip.toFixed(1)} mi`); formData.append('Billable Miles', miles <= FREE_MILES ? 'None (within 40-mi free zone)' : `${roundTrip.toFixed(1)} mi round trip`); formData.append('Survey Fee', `$${surveyFee.toFixed(2)}`); formData.append('Travel Fee', `$${travelFee.toFixed(2)}`); formData.append('Estimated Total', `$${total.toFixed(2)}`); // POST to Formspree — Zander: replace YOUR_FORM_ID with your actual Formspree form ID await fetch('https://formspree.io/f/YOUR_FORM_ID', { method: 'POST', body: formData, headers: { 'Accept': 'application/json' } }); } catch(e) { // Silent fail - still show quote console.warn('Form submission issue:', e); } // Show quote showQuote({ acres, surveyFee, travelFee, total, miles, roundTrip, billableRoundTrip, surveys, dateVal, timeVal }); btn.textContent = 'Quote Sent ✓';}function validateContact() { let ok = true; const nameVal = document.getElementById('contact-name').value.trim(); const nameErr = document.getElementById('name-err'); if (!nameVal) { nameErr.style.display = 'block'; document.getElementById('contact-name').classList.add('error'); ok = false; } else { nameErr.style.display = 'none'; document.getElementById('contact-name').classList.remove('error'); } const phoneVal = document.getElementById('contact-phone').value.trim(); const phoneErr = document.getElementById('phone-err'); if (!phoneVal || phoneVal.replace(/\D/g,'').length < 10) { phoneErr.style.display = 'block'; document.getElementById('contact-phone').classList.add('error'); ok = false; } else { phoneErr.style.display = 'none'; document.getElementById('contact-phone').classList.remove('error'); } const emailVal = document.getElementById('contact-email').value.trim(); const emailErr = document.getElementById('email-err'); if (!emailVal || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(emailVal)) { emailErr.style.display = 'block'; document.getElementById('contact-email').classList.add('error'); ok = false; } else { emailErr.style.display = 'none'; document.getElementById('contact-email').classList.remove('error'); } return ok;}function fmt(n) { return '$' + n.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ','); }function showQuote({ acres, surveyFee, travelFee, total, miles, roundTrip, billableRoundTrip, surveys, dateVal, timeVal }) { document.getElementById('quote-result').style.display = 'block'; document.getElementById('total-display').textContent = fmt(total); const dateFormatted = dateVal ? new Date(dateVal + 'T12:00:00').toLocaleDateString('en-US', { weekday: 'long', month: 'long', day: 'numeric', year: 'numeric' }) : 'TBD'; const overageAcres = Math.max(0, acres - BASE_ACRES); const travelLabel = miles <= FREE_MILES ? `Travel (within 40 mi, no charge)` : `Travel: ${roundTrip.toFixed(1)} mi round trip x $1.00`; const box = document.getElementById('breakdown-box'); box.innerHTML = ` <div class="breakdown-row"> <span class="label">Survey types</span><span> </span><span class="value" style="font-size:12px;max-width:55%;text-align:right;">${surveys || 'Thermal Deer Survey'}</span> </div><div class="breakdown-row"> <span class="label">Property acreage</span><span> </span><span class="value">${acres.toLocaleString()} acres</span> </div><div class="breakdown-row"> <span class="label">Base survey fee</span><span> </span><span class="value">${fmt(BASE_PRICE)}</span> </div> ${overageAcres > 0 ? ` <div class="breakdown-row"> <span class="label">Overage (${overageAcres.toFixed(0)} ac x $1.00)</span><span> </span><span class="value">${fmt(overageAcres)}</span> </div>` : ''} <div class="breakdown-row"> <span class="label">${travelLabel}</span><span> </span><span class="value">${travelFee > 0 ? fmt(travelFee) : 'No charge'}</span> </div><div class="breakdown-row"> <span class="label">Preferred date</span><span> </span><span class="value" style="font-size:12px;">${dateFormatted}</span> </div> ${timeVal ? `<div class="breakdown-row"> <span class="label">Preferred time</span><span> </span><span class="value" style="font-size:12px;">${timeVal}</span> </div>` : ''} <div class="breakdown-row total-row" style="margin-top:6px;padding-top:10px;"> <span class="label">Estimated Total</span><span> </span><span class="value">${fmt(total)}</span> </div> `; document.getElementById('quote-result').scrollIntoView({ behavior: 'smooth', block: 'start' });}// Set min date to todayconst today = new Date().toISOString().split('T')[0];document.getElementById('survey-date').setAttribute('min', today);

Click To Paste

Wildlife Survey Quote | Elite Deer Recovery
Elite Deer Recovery

Wildlife Survey
Pricing Calculator

Get an instant quote for your property. Aerial thermal wildlife surveys across Ohio and the Midwest.

1 Property Details
Base rate: $350 for up to 120 acres. $1/acre for each acre over 120.
Please enter a valid acreage.
Enter a location to calculate travel distance. No mileage charge within 40 miles.
Please enter a property location.
2 Survey Options
Please select at least one survey type.
Please select a preferred date.

Almost there.

Enter your contact info below to see your quote. We'll also send you a copy and follow up to get your survey scheduled.

Please enter your name.
Please enter a valid phone number.
Please enter a valid email address.
Request sent! Zander will be in touch shortly to confirm your survey date.
Your Estimated Quote
$0
Estimated total. Final price confirmed at booking.
Pricing is an estimate based on acreage and straight-line travel distance. Final quote confirmed before scheduling. Survey windows subject to weather and daylight conditions. Questions? Call or text (937) 403-8622 or email 1stchoiceaerialsllc@gmail.com