PageSourceSearch

https://www.calcmaps.com/map-area/

html calcmaps.com collected 2026-09-24 09:40:37 UTC 49,981 bytes, 1,100 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8" />
5<title>Calculate Area on Map, Google Maps Area Calculator</title>
6<meta name="description" content="Find the area of any simple shape on a map. Useful tool to find the approximate acreage or a tract of land, the square footage of a roof, or estimate of the area of something." />
7<meta name="keywords" content="map, tool, free, tools, maps, google, measure, area, distance" />
8<meta name="apple-touch-fullscreen" content="YES" />
9<meta name="viewport" content="width=device-width, initial-scale=1.0" />
10<meta http-equiv="X-UA-Compatible" content="IE=edge" />
11<meta name="google-site-verification" content="S2oL4rBBPmFBahLniBoZKkJlCmaYcnrLxGOIK-6RZBM" />
12
13<meta name="robots" content="index,follow" />
14<meta name="googlebot" content="index,follow" /><link rel="alternate" hreflang="x-default" href="https://www.calcmaps.com/map-area/"/>
15         <link rel="alternate" hreflang="en" href="https://www.calcmaps.com/map-area/"/>
16         <link rel="alternate" hreflang="de" href="https://www.calcmaps.com/de/map-area/"/>
17        <link rel="alternate" hreflang="fr" href="https://www.calcmaps.com/fr/map-area/"/>
18        <link rel="alternate" hreflang="es" href="https://www.calcmaps.com/es/map-area/"/>
19        <link rel="alternate" hreflang="pt" href="https://www.calcmaps.com/pt/map-area/"/>
20        <link rel="alternate" hreflang="it" href="https://www.calcmaps.com/it/map-area/"/>
21        <link rel="alternate" hreflang="nl" href="https://www.calcmaps.com/nl/map-area/"/>
22        <link rel="alternate" hreflang="sv" href="https://www.calcmaps.com/sv/map-area/"/>
23        <link rel="alternate" hreflang="ro" href="https://www.calcmaps.com/ro/map-area/"/>
24        <link rel="alternate" hreflang="pl" href="https://www.calcmaps.com/pl/map-area/"/>
25        <link rel="alternate" hreflang="ru" href="https://www.calcmaps.com/ru/map-area/"/>
26        <link rel="alternate" hreflang="tr" href="https://www.calcmaps.com/tr/map-area/"/>
27        <!-- OPEN GRAPH -->
28<meta property="og:title" content="Calculate Area on Map, Google Maps Area Calculator"/>
29<meta property="og:type" content="website"/>
30<meta property="og:url" content="https://www.calcmaps.com/map-area/"/>
31<meta property="og:image" content="https://www.calcmaps.com/css/i/map-area.jpg"/>
32<meta property="og:site_name" content="CalcMaps"/>
33<meta property="og:description" content="Find the area of any simple shape on a map. Useful tool to find the approximate acreage or a tract of land, the square footage of a roof, or estimate of the area of something."/>
34<meta property="twitter:card" content="summary_large_image"/>
35<meta property="twitter:image:src" content="https://www.calcmaps.com/css/i/map-area.jpg"/>
36<meta property="twitter:url" content="https://www.calcmaps.com/map-area/"/>
37<meta property="twitter:title" content="Calculate Area on Map, Google Maps Area Calculator"/>
38<meta property="twitter:description" content="Find the area of any simple shape on a map. Useful tool to find the approximate acreage or a tract of land, the square footage of a roof, or estimate of the area of something."/>
39<meta name="msapplication-TileColor" content="#ffffff">
40<meta name="msapplication-TileImage" content="https://www.calcmaps.com/css/i/ico/ms-icon-144x144.png?v=2">
41<link rel="icon" href="https://www.calcmaps.com/css/i/ico/favicon.svg?v=2" type="image/svg+xml" sizes="any" />
42<link rel="shortcut icon" href="https://www.calcmaps.com/css/i/ico/favicon.ico?v=2" />
43<link rel="icon" href="https://www.calcmaps.com/css/i/ico/favicon.ico?v=2" type="image/x-icon" />
44<link rel="apple-touch-icon" sizes="57x57" href="https://www.calcmaps.com/css/i/ico/apple-icon-57x57.png?v=2">
45<link rel="apple-touch-icon" sizes="60x60" href="https://www.calcmaps.com/css/i/ico/apple-icon-60x60.png?v=2">
46<link rel="apple-touch-icon" sizes="72x72" href="https://www.calcmaps.com/css/i/ico/apple-icon-72x72.png?v=2">
47<link rel="apple-touch-icon" sizes="76x76" href="https://www.calcmaps.com/css/i/ico/apple-icon-76x76.png?v=2">
48<link rel="apple-touch-icon" sizes="114x114" href="https://www.calcmaps.com/css/i/ico/
48apple-icon-114x114.png?v=2">
49<link rel="apple-touch-icon" sizes="120x120" href="https://www.calcmaps.com/css/i/ico/apple-icon-120x120.png?v=2">
50<link rel="apple-touch-icon" sizes="144x144" href="https://www.calcmaps.com/css/i/ico/apple-icon-144x144.png?v=2">
51<link rel="apple-touch-icon" sizes="152x152" href="https://www.calcmaps.com/css/i/ico/apple-icon-152x152.png?v=2">
52<link rel="apple-touch-icon" sizes="180x180" href="https://www.calcmaps.com/css/i/ico/apple-icon-180x180.png?v=2">
53<link rel="icon" type="image/png" sizes="192x192" href="https://www.calcmaps.com/css/i/ico/android-icon-192x192.png?v=2">
54<link rel="icon" sizes="192x192" href="https://www.calcmaps.com/css/i/logo_192.png?v=2">
55<link rel="icon" type="image/png" sizes="32x32" href="https://www.calcmaps.com/css/i/ico/favicon-32x32.png?v=2">
56<link rel="icon" type="image/png" sizes="96x96" href="https://www.calcmaps.com/css/i/ico/favicon-96x96.png?v=2">
57<link rel="icon" type="image/png" sizes="16x16" href="https://www.calcmaps.com/css/i/ico/favicon-16x16.png?v=2">
58
59    
59<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9757282942634037" crossorigin="anonymous"></script>
59
60<!-- STYLES -->
61<link rel="preload" href="https://www.calcmaps.com/css/fonts/plus-jakarta-sans-v12-latin-regular.woff2" as="font" type="font/woff2" crossorigin>
62<link rel="preload" href="https://www.calcmaps.com/css/fonts/plus-jakarta-sans-v12-latin-500.woff2" as="font" type="font/woff2" crossorigin>
63<link rel="preload" href="https://www.calcmaps.com/css/fonts/plus-jakarta-sans-v12-latin-600.woff2" as="font" type="font/woff2" crossorigin>
64<link href="https://www.calcmaps.com/css/styles_min.css?v=52" rel="stylesheet" />
65<!-- SCRIPTS -->
66<script src="https://www.calcmaps.com/js/scripts.js?v=52"></script>
vendor: 1 bytes, line 66
66
67<script>
68    var inside_iframe = (window.self !== window.top);
69</script>
69
70</head><body class="map-area">
71<!-- HEADER -->
72<header>
73<div class="nav navbar navbar-default navbar-fixed-top nav-top">
74    <div class="container nav_container  pl10 pr10">
75        <div class="col-xs-3 header-col brand-col">
76            <a class="navbar-brand logo_custom" href="https://www.calcmaps.com/" title="CalcMaps"><img width="30" height="30" src="https://www.calcmaps.com/css/i/logo.svg" alt="CalcMaps"><strong>CalcMaps</strong></a>
77        </div>
78        <button type="button" class="navbar-toggle mt5 mr5 collapsed" data-toggle="collapse" data-target=".navbar-collapse"  onclick="trackClickEvent('mobile_menu','click_menu')">
79            <span class="sr-only">Menu</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>
80            <span id="nabvar_label_menu">MENU</span>
81        </button>
82        <div id="select_lang_div" data-toggle="modal" data-target="#lang-modal">
83            <span id="nav_choose_lang_modal"><span id="select_lang_span">Language</span> [EN]</span>
84        </div>
85        <div class="col-xs-12 collapse navbar-collapse">
86            <ul id="navigation" class="nav navbar-nav">
87                <li class="nav-map-links active "><a href="https://www.calcmaps.com/map-area/" title="Calculate area on Map">Map area</a></li>
88                <li class="nav-map-links "><a href="https://www.calcmaps.com/map-radius/" title="Measure Radius on Map">Radius</a></li>
89                <li class="nav-map-links "><a href="https://www.calcmaps.com/map-distance/" title="Calculate distance on Map">Distance</a></li>
90                <li class="nav-map-links "><a href="https://www.calcmaps.com/map-elevation/" title="Calculate elevation on Map">Elevation</a></li>
91                <li class="nav-map-links "><a href="https://www.calcmaps.com/map-isodistance/" title="Map Isodistances by Travel Distance">Isodistances</a></li>
92                <li class="nav-map-links "><a href="https://www.calcmaps.com/map-isochrone/" title="Generate Isochrone Map">Isochrones</a></li>
93                <li class="nav-map-links "><a href="https://www.calcmaps.com/map-coordinates/" title="Get Coordinates on Map">Coordinates</a></li>
94                <li class="cmapspro_link_nav_li"><a target="_blank" href="https://calcmapspro.com/howitworks/?utm_source=calcmaps&utm_medium=referral&utm_campaign=navbar" class="cmapspro_link_nav" title="Calcmaps PRO"><span class="link_nav">PRO</span></a></li>            </ul>
95        </div>
96    </div>
97</div></header>
98<!-- END HEADER -->
99<script>
100    var country_code    = '';
101    var country_name    = '';
102    var country_lat     = '';
103    var country_lng     = '';
104    var country_zoom    = 2;
105    var country_coords  = {lat: Number(country_lat), lng: Number(country_lng)};
106    var basemap_in_use = 0;
107    var use_geocode_for_search = '1';
108    var is_imperial = (country_code == 'US' || country_code == 'GB' ? true : false);
109    const lang_location_not_found = "Location not found";
110    const lang_error_try_later = "An error has occurred, please try again later";
111    const lang_select_distance = "Select Distance";
112    const lang_alert_select_distance = "Please select distance";
113    const lang_select_travel_time = "Select Travel Time";
114    const lang_alert_select_travel_time = "Please select travel time";
115    const lang_fail_get_iso = "Unable to generate the requested area. Try selecting a different location on the map.";
116    const lang_please_wait = "Please wait";
117    const lang_mode_by_car = "By car";
118    const lang_mode_on_foot = "On foot";
119    const lang_distance = "Distance";
120    const lang_coordinates = "Coordinates";
121    const lang_elevation = "Elevation";
122    const lang_elevation_tip = "Click on the map to view the elevation of a point or location. You can also keep clicking along the map to build your elevation profile. You can remove the last point or clear all points to restart.";
123    const lang_meters = "Meters";
124    const lang_feet = "Feet";
125    const lang_copy = "Copy";
126    const lang_share = "Share";
127    const lang_cancel = "Cancel";
128    const lang_clear_all = "Clear All";
129    const lang_resize_or_move = "Resize or Move";
130    const lang_click_to_remove = "Click to remove";
131    const lang_click_ok_when_finished = "Click OK when finished";
132    const lang_release_mouse_to_finish_drawing = "Release mouse to finish drawing";
133    const lang_click_and_drag_to_draw_circle = "Click and drag to draw";
134    const lang_radius = "Radius";
135    const lang_draw_a_circle = "Draw a Circle";
136    const lang_clear_last_point = "Clear Last Point";
137    const lang_circle_area = "Circle Area";
138    const lang_alert_no_path_gpx = "Please create a path by clicking on the map to add points, then export it as a GPX file";
139    const lang_gpx_downloaded_successfully = "GPX downloaded successfully!";
140    const lang_import_gpx_warning = "Importing this GPX file will clear all current data from the map. Do you want to continue?";
141    const lang_alert_max_gpx_size = "The file is too big. Maximum allowed size is 1MB.";
142</script>
142
143<!-- PAGE -->
144<div id="page" class="container">
145<section id="page-content">
146    <link rel="stylesheet" href="https://www.calcmaps.com/css/leaflet/leaflet_min.css?v=52">
147    
147<script src="https://www.calcmaps.com/js/leaflet/leaflet.js?v=52"></script>
147
148    
148<script src="https://www.calcmaps.com/js/leaflet/leaflet.draw.min.js?v=52"></script>
148
149    
149<script src="https://www.calcmaps.com/js/leaflet/maplibre-gl.js?v=52"></script>
149
150    
150<script src="https://www.calcmaps.com/js/leaflet/leaflet-maplibre-gl.js?v=52"></script>
vendor: 1 bytes, line 150
150
151<script>
152    var js_dir = "https://www.calcmaps.com/";
153    var map;
154    var marker = null;
155    var polyPoints = [];
156    var searchControl, results;
157    var polyline, Icon;
158    var polygon;
159    var iso_polygon = null;
160    var clickCount = 0;
161    var latlng1 = null;
162    var latlng2 = null;
163    var markers = [];
164    var searchMarker = null;
165    var opacity = 1;
166    var shellArr = [];
167    var nl = "\n";
168    var wholink = "";
169    var mapLang = 'en-EN';
170                        const vector_tiles_server = [
171        "https://t-tiles-ts-eu-ht2.b-cdn.net/data/v3/{z}/{x}/{y}.pbf?s=TS-EU-HT2&key=1b48259b810e","https://t-tiles-ts-eu-ht2.b-cdn.net/data/v3/{z}/{x}/{y}.pbf?s=TS-EU-HT2&key=1b48259b810e","https://t-tiles-ts-eu-ht2.b-cdn.net/data/v3/{z}/{x}/{y}.pbf?s=TS-EU-HT2&key=1b48259b810e",
172    ];
173                const sat_tiles_server = [
174        "https://dbt1zjijstpy3.cloudfront.net/{z}/{y}/{x}","https://dbt1zjijstpy3.cloudfront.net/{z}/{y}/{x}","https://dbt1zjijstpy3.cloudfront.net/{z}/{y}/{x}",
175    ];
176        const sat_bluemarble_tiles_server = [
177        "https://t-sat-uk1.calcxyz.com/sat/satellitefiles/bluemarble/{z}/{x}/{y}.png","https://t-sat-uk1.calcxyz.com/sat/satellitefiles/bluemarble/{z}/{x}/{y}.png","https://t-sat-uk1.calcxyz.com/sat/satellitefiles/bluemarble/{z}/{x}/{y}.png",
178    ];
179        const sat_tiles_server_0_13 = [
180        "https://t-sat-uk1.calcxyz.com/sat/satellitefiles/{z}/{x}/{y}.jpg","https://t-sat-uk1.calcxyz.com/sat/satellitefiles/{z}/{x}/{y}.jpg","https://t-sat-uk1.calcxyz.com/sat/satellitefiles/{z}/{x}/{y}.jpg",
181    ];
182    const opencycle_tiles_server = [
183        "https://d2uavi3d63jzri.cloudfront.net/{z}/{x}/{y}.png","https://d24rkvf4vp68rj.cloudfront.net/{z}/{x}/{y}.png","https://dsgr4yql9e2r1.cloudfront.net/{z}/{x}/{y}.png"
184    ];
185</script>
vendor: 1 bytes, line 185
185
186<script src="https://www.calcmaps.com/js/leaflet/map_style_min.js?v=52"></script>
vendor: 1 bytes, line 186
186
187<script>
188    function load_basemaps() {
189
190        var bounds = new L.LatLngBounds(new L.LatLng(-360, -360), new L.LatLng(360, 360));
191
192        map = L.map("map",
193            {
194                center: [start_lat, start_lng],
195                zoom: start_zoom,
196                minZoom: (L.Browser.mobile ? 1 : 2),
197                maxZoom: 19,
198                maxBounds: bounds,
199                zoomSnap: 0.5,
200                zoomDelta: 0.5,
201                gestureHandling: L.Browser.mobile
202
203            });
204        L.DomUtil.addClass(map._container, "crosshair-cursor-enabled");
205
206                var base_map = L.maplibreGL({
207            style: basemap_nav_style,
208            preserveDrawingBuffer: true,
209            attribution: '<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap</a> contributors'
210        });
211
212                var sat_map = L.maplibreGL({
213            style: basemap_satellite_style,
214            preserveDrawingBuffer: true,
215            attribution: 'Esri, DigitalGlobe, GeoEye, i-cubed, Earthstar Geographics, CNES/Airbus DS, USDA, USGS, AEX, Getmapping, Aerogrid, IGN, IGP, swisstopo, and the GIS User Community'
216        });
217
218                var osm_map = L.maplibreGL({
219            style: basemap_osm_style,
220            preserveDrawingBuffer: true,
221            attribution: '<a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap</a> contributors'
222        });
223
224                var topo_map = L.maplibreGL({
225            style: basemap_opentopo_style,
226            preserveDrawingBuffer: true,
227            attribution: '<a href="https://openstreetmap.org/copyright" target="_blank">OpenStreetMap</a>-Mitwirkende, SRTM | Kartendarstellung: &copy; <a href="http://opentopomap.org/" target="_blank">OpenTopoMap</a>'
228        });
229
230                var cycle_map = L.maplibreGL({
231            style: basemap_opencycle_style,
232            preserveDrawingBuffer: true,
233            attribution: '<a href="https://openstreetmap.org/copyright" target="_blank">OpenStreetMap</a>-Mitwirkende, SRTM | Kartendarstellung: &copy; <a href="http://opentopomap.org/" target="_blank">OpenTopoMap</a>'
234        });
235
236                var BingLayer = L.TileLayer.extend({getTileUrl:function(e){return L.Util.template(this._url,{s:this._getSubdomain(e),q:this._quadKey(e.x,e.y,this._getZoomForUrl())})},_quadKey:function(e,t,r){for(var i=[],n=r;n>0;n--){var a="0",u=1<<n-1;(e&u)!=0&&a++,(t&u)!=0&&(a++,a++),i.push(a)}return i.join("")}});
237        var bing_map = new BingLayer('https://ecn.t{s}.tiles.virtualearth.net/tiles/r{q}?g=671&mkt='+mapLang+'&lbl=l1&stl=h&ur='+country_code, {
238            subdomains: ['0', '1', '2', '3'],
239            maxZoom: 19,
240            attribution: '&copy; <a href="http://bing.com/maps" target="_blank">Bing Maps</a> | <a href="https://www.microsoft.com/en-us/maps/product" target="_blank">Terms of use</a>'
241        });
242
243        map.attributionControl.setPrefix('&copy; CalcMaps');
244
245        // start basemap
246            if (get_cookie('last_basemap')) {
247            if (get_cookie('last_basemap') == 1) {
248                base_map.addTo(map);
249                basemap_in_use = 1;
250            } else if (get_cookie('last_basemap') == 2) {
251                sat_map.addTo(map);
252                basemap_in_use = 2;
253            } else if (get_cookie('last_basemap') == 3) {
254                osm_map.addTo(map);
255                basemap_in_use = 3;
256            } else if (get_cookie('last_basemap') == 4) {
257                topo_map.addTo(map);
258                basemap_in_use = 4;
259            } else if (get_cookie('last_basemap') == 5) {
260                cycle_map.addTo(map);
261                basemap_in_use = 5;
262            } else if (get_cookie('last_basemap') == 15) {
263                bing_map.addTo(map);
264                basemap_in_use = 15;
265            } else {
266                bing_map.addTo(map);
267                basemap_in_use = 1;
268            }
269        } else {
270
271            // default on start
272            base_map.addTo(map);
273            basemap_in_use = 1;
274        }
275            const baseMaps = {
276            "Navigation": base_map,
277            "Satellite": sat_map,
278            "Street": osm_map,
279            "Topografic" : topo_map,
280            "OpenCycle" : cycle_map,
281            "BingMap" : bing_map,
282        };
283
284        map.on('baselayerchange', function(e) {
285
286            $('.leaflet-control-layers').removeClass('leaflet-control-layers-expanded'); // force close
287
288            if (e.name == 'Satellite') {
289                basemap_in_use = 2;
290                set_cookie('last_basemap', 2, 10);
291
292            } else if (e.name == 'Street') {
293                basemap_in_use = 3;
294                set_cookie('last_basemap', 3, 10);
295
296            } else if (e.name == 'Topografic') {
297                basemap_in_use = 4;
298                set_cookie('last_basemap', 4, 10);
299
300            } else if (e.name == 'OpenCycle') {
301                basemap_in_use = 5;
302                set_cookie('last_basemap', 5, 10);
303            } else if (e.name == 'BingMap') {
304                basemap_in_use = 15;
305                set_cookie('last_basemap', 15, 10);
306            } else {
307                basemap_in_use = 1;
308                set_cookie('last_basemap', 1, 10);
309            }
310            trackClickEvent('change_basemap', e.name);
311        });
312
313        map.on('moveend', function(e) {
314            if (e.target.getCenter().lat != 'undefined' && e.target.getCenter().lng != 'undefined') {
315                set_cookie('last_lat', e.target.getCenter().lat, 10);
316                set_cookie('last_lng', e.target.getCenter().lng, 10);
317            }
318
319            if (e.target.getZoom() != 'undefined') {
320                set_cookie('last_zoom', e.target.getZoom(), 10);
321            }
322        });
323
324        map.on('zoomend', function(e) {
325            if (e.target.getZoom() != 'undefined') {
326                set_cookie('last_zoom', e.target.getZoom(), 10);
327            }
328        });
329
330        var overlays =  {
331            // add any overlays here
332        };
333
334        L.control.layers(baseMaps, overlays, {position: 'topright'}).addTo(map);
335
336        L.layerGroup().addTo(map);
337
338        // scale
339        var scale_options = {
340            position:'bottomright',
341            imperial: is_imperial
342        };
343
344        L.control.scale(scale_options).addTo(map);
345
346        // replace leaflet '#'
347        map.whenReady(function() {
348            document.querySelectorAll('.leaflet-control a[href="#"]').forEach(function(el) {
349                el.removeAttribute('href');
350                el.setAttribute('role', 'button');
351                el.style.cursor = 'pointer';
352            });
353        });
354    }
355
356    function removeLastPoint() {
357        clearLastMarker();
358    }
359
360    function clearMap() {
361        newCalc();
362    }
363</script>
363
364<style>
365    .leaflet-container.crosshair-cursor-enabled {cursor:crosshair;}
366    .leaflet-tile-container img {width: 256.8px !important;height: 256.8px !important;}
367    .leaflet-control-easyPrint, .leaflet-control-easyPrint-button, .leaflet-control-easyPrint-button-export {display: none!important;}
368</style><div class="row mt10 mb5 cb ml15 mr15" style="min-height:90px;"><div class="banner_responsive"><!-- CMAPS_RESPONSIVE_TOP -->
369                        <ins class="adsbygoogle"
370                             style="display:block"
371                             data-ad-client="ca-pub-9757282942634037"
372                             data-ad-slot="9991530151"
373                             data-ad-format="horizontal"
374                             data-full-width-responsive="false"></ins>
375                        
375<script>
376                             (adsbygoogle = window.adsbygoogle || []).push({});
377                        </script>
377</div></div><div class="col-md-10"><div class="row mt0">
378    <div class="col-md-12 content-col tpl-content-col">
379        <h1 class="page-title ml5">Map Area Calculator</h1>
380        <div class="top-map-info">
381            <div class="col-md-6 p0">
382    <div class="col-md-12 p0">
383        <div class="col-md-12 p0">
384            <div id="search_group_div" class="input-group">
385                <input type="text" class="form-control" size="30" id="addressInput" name="address" placeholder="Enter an address" autocomplete="on"/>
386                <span class="input-group-btn">
387                <button id="addressSearchButton" type="submit" class="btn btn-primary" onclick="trackClickEvent('btn_search','click_button');preventSearchClicks(this);showAddress(document.getElementById('addressInput').value);">Search</button>
388                </span>
389            </div>
390            <div class="col-md-12 p0">
391                <div class="btn-group btn-group-sm mt5 mb3" role="group" id="map_top_btn_group">
392<button type="button" class="btn btn-default" onclick="clearMap();">Clear All</button><button type="button" class="btn btn-default" onclick="removeLastPoint();">Clear Last Point</button></div>
393<button id="btn-save-results" class="btn btn-default btn-sm ml5" onclick="saveResultsAreaDistance()">Share<span class="hidden767"> Area</span></button>            </div>
394        </div>      
395    </div>
396</div>            <div class="col-md-6 no-padding-991" id="status">
397                <b>Area:</b> --
398            </div>
399        </div>
400        <div id="map_area">
401            <div id="map_canvas"><div id="map"></div></div>
402        </div>
403        
403<script>
404    function print_map_img(export_only = true, filename = '') {
405
406        trackClickEvent('btn_print_click', (export_only ? 'download' : 'print'));
407
408        $("#print_map_img, #dwn_map_img").addClass('disabled');
409
410        let format = 'png'; // or jpeg
411
412        filename = filename ? filename.replace(/\s+/g, '-') : 'calcmaps-map-area-104037-24092026';
413
414        let file_type = 'image/' + format; // "image/png"
415
416        const captureElement = document.querySelector('#map_canvas');
417
418        if (!captureElement || !map || typeof L.easyPrint == 'undefined') {
419            console.log('error print...');
420            $("#print_map_img, #dwn_map_img").removeClass('disabled');
421            return;
422        }
423
424        // text info and hide elements
425        try {
426            let status_text = $('#status').length ? $('#status').html() : '';
427            status_text+= $('#status2').length ? $('#status2').html() : '';
428
429            if (url_dir == 'map-elevation') {
430                status_text = lang_elevation;
431            }
432
433            // keep attribution except for satellite
434            if (basemap_in_use == 2) {
435
436                $('.leaflet-control').hide();
437            } else {
438
439                $('.leaflet-control').hide().filter('.leaflet-control-attribution').show();
440            }
441
442            L.Control.textbox = L.Control.extend({
443                onAdd: function(map) {
444                    var info_text = L.DomUtil.create('div');
445                    info_text.id = "info_text";
446                    info_text.innerHTML = '<p><b>calcmaps.com</b><br>' + status_text + '</p>'
447                    return info_text;
448                }
449            });
450
451            L.control.textbox = function(opts) {
452                return new L.Control.textbox(opts);
453            }
454            L.control.textbox({ position: 'topleft' }).addTo(map);
455
456        } catch (e) {}
457
458        // set the printer to allow print/download
459        map.printControl = L.easyPrint({
460            title: 'Print',
461            position: 'topleft',
462            sizeModes: ['CurrentSize'],
463            filename: 'calcmaps_img_',
464            exportOnly: export_only ? true : false,
465            hideControlContainer: false
466        }).addTo(map);
467
468        const container = document.getElementById('map_canvas');
469        const glCanvas = container.querySelector('.maplibregl-canvas');
470
471        if (!glCanvas) {
472            console.log('MapLibre canvas not found');
473            $('#info_text').remove();
474            $('.leaflet-control').show();
475            $("#print_map_img, #dwn_map_img").removeClass('disabled');
476            trackClickEvent('button_print', 'fail_print');
477            return;
478        }
479
480        // get image from MapLibre canvas
481        const mapImage = glCanvas.toDataURL('image/png');
482
483        // create temporary background image
484        const img = new Image();
485        img.src = mapImage;
486        img.style.position = 'absolute';
487        img.style.top = '0';
488        img.style.left = '0';
489        img.style.width = '100%';
490        img.style.height = '100%';
491        img.style.zIndex = '-1'; // ensure it stays behind Leaflet overlays
492
493        // inject image temporarily in the container
494        container.insertBefore(img, container.firstChild);
495
496        // trigger easyPrint (delayed to ensure image is rendered)
497        setTimeout(() => {
498            map.printControl.printMap('CurrentSize', filename);
499
500            // remove the injected image after print
501            setTimeout(() => {
502                if (img.parentNode) {
503                    img.parentNode.removeChild(img);
504                }
505
506                $('#info_text').remove();
507                $('.leaflet-control').show();
508
509            }, 2000); // delay to allow print popup to render
510        }, 300);
511
512        // track and set buttons active again
513        setTimeout(() => {
514            $("#print_map_img, #dwn_map_img").removeClass('disabled');
515            trackClickEvent('button_print', (export_only ? 'download_map' : 'print_map'));
516        }, 2500);
517    }
518</script>
518
519<div class="row rounded5" style="background:#6ac6ef21"><div class="col-md-12 p0"><p class="tac fs16" style="padding:10px 10px 0px 10px;">Plan areas, routes, create delivery zones and export your maps in seconds. Import your data, analyze locations and save everything for later!<br><a target="_blank" href="https://calcmapspro.com/register/?utm_source=calcmaps&utm_medium=referral&utm_campaign=map-area" class="btn btn-primary mt10 pl20 pr20 cmapspro_link_text" style="border-radius:30px;"">Start planning smarter Maps</a></p></div></div><div class="row rounded5 p10" style="background:#f5f5f5"><div class="col-lg-12 p0" id="buttons_map_bottom_block">    <button id="print_map_img" class="btn btn-sm btn-default rounded5 mr5 mt0 mb10_767" onclick="print_map_img(false)"><svg fill="currentColor" height="16" width="16" viewBox="0 0 24 24" class="mr5"><path d="M19 8C20.66 8 22 9.34 22 11V17H18V21H6V17H2V11C2 9.34 3.34 8 5 8H6V3H18V8H19M8 5V8H16V5H8M16 19V15H8V19H16M18 15H20V11C20 10.45 19.55 10 19 10H5C4.45 10 4 10.45 4 11V15H6V13H18V15M19 11.5C19 12.05 18.55 12.5 18 12.5C17.45 12.5 17 12.05 17 11.5C17 10.95 17.45 10.5 18 10.5C18.55 10.5 19 10.95 19 11.5Z"></path></svg>Print map</button>
520    <button id="dwn_map_img" class="btn btn-sm btn-default rounded5 mr5 mt0 mb10_767" onclick="print_map_img(true)">
520<svg fill="currentColor" height="16" width="16" viewBox="0 0 24 24" class="mr5"><path d="M9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21L3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19.03 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3L20.34,3.03L15,5.1L9,3M8,5.45V17.15L5,18.31V6.46L8,5.45M10,5.47L14,6.87V18.53L10,17.13V5.47M19,5.7V17.54L16,18.55V6.86L19,5.7M7.46,6.3L5.57,6.97V9.12L7.46,8.45V6.3M7.46,9.05L5.57,9.72V11.87L7.46,11.2V9.05M7.46,11.8L5.57,12.47V14.62L7.46,13.95V11.8M7.46,14.55L5.57,15.22V17.37L7.46,16.7V14.55Z"></path></svg>Download map</button>
521</div></div>        <div id="map_notes">
522            <p><b>Note:</b> Zoom in, or enter the address of your target start point. Then click on your start point on the map, followed by all the subsequent points along the outside edge of the shape you want to calculate the area of. As you add points the area will be updated below and converted into several measurements.</p>
523        </div>
524        <div id="shorturl-modal" class="modal fade" role="dialog">
525    <div class="modal-dialog" role="document">
526        <div class="modal-content">
527            <div class="modal-header">
528                <button type="button" class="close" data-dismiss="modal">&times;</button>
529                <h4 class="modal-title tac fs25">Share using this link</h4>
530            </div>
531            <div class="modal-body tac">
532                <span id="saved_short_url" class="fs15 bold"></span>
533            </div><br class="cb">
534            <div class="modal-footer tac">
535                <div id="saved_short_url_alert_text" class="alert alert-success" role="alert"></div>
536                <button type="button" class="btn btn-info rounded5" id="btn_copy" data-clipboard-action="copy" data-clipboard-target="#saved_short_url">Copy link</button>
537                <br><button id="mobile_native_share" type="button" class="btn btn-info rounded5" data-dismiss="modal">Share</button>
538                <div id="default_social_share">
539                                    </div>
540            </div>
541        </div>
542    </div>
543</div>
544<script>
545    var points_text_array = '';
546    var clipboard = new ClipboardJS('#btn_copy');
547    clipboard.on('success', function(e) {
548        $('#saved_short_url_alert_text').html('Copied! Now you can Share or Save this link.').show();
549        trackClickEvent('button_copy_clipboard', (url_dir == 'map-area' ? 'copy_link_area' : 'copy_link_distance'));
550    });
551
552    var share_link_id = 0;
553    var share_link_url = '';
554
555    $('#mobile_native_share').click(function(e) {
556        if (navigator.share && share_link_url) {
557            navigator.share({
558                title: 'CALCMAPS - Map Tools',
559                url: share_link_url,
560            });
561        } else {
562            $('#default_social_share').show();
563        }
564        trackClickEvent('button_navigator_share', (url_dir == 'map-area' ? 'navigator_share_area' : 'navigator_share_distance'));
565    });
566
567    function saveResultsAreaDistance() {
568        $('#saved_short_url_alert_text').hide();
569        if (navigator.share) {
570            $('#mobile_native_share').show();
571        }
572        var url_to_short = points_text_array;
573        $('#saved_short_url_alert_text').html('');
574
575        if (url_to_short) {
576            $.ajax({
577                cache: false,
578                timeout: 1000000,
579                type: "POST",
580                contentType: "application/x-www-form-urlencoded;charset=utf-8",
581                url: basepath + 'ajax.php?op=shorturl',
582                data: {
583                    page_op : lang_op,
584                    basemap : basemap_in_use,
585                    page_data: url_to_short,
586                    id: share_link_id
587                },
588                success: function (data) {
589                    data = JSON.parse(data);
590                    if (data.status == 'OK') {
591                        if (share_link_id == 0 && data.shorturl != undefined) {
592                            share_link_id = data.id;
593                            share_link_url = basepath + lang_op + '/' + data.shorturl + '/';
594                            $('#saved_short_url').html(share_link_url);
595                        }
596                    } else {
597                        $('#saved_short_url').html('An error has occurred, please try again later');
598                    }
599                }
600            });
601            trackClickEvent('button_save_results', (url_dir == 'map-area' ? 'save_results_area' : 'save_results_distance'));
602            $('#shorturl-modal').modal('toggle');
603        }
604    }
605</script>
605
606            </div>
607</div>
608<script>
609    document.addEventListener('DOMContentLoaded', myMapLoad);
610
611    function createPolygon(shellArr) {
612        return {
613            type: 'Feature',
614            geometry: {
615                type: 'Polygon',
616                coordinates: shellArr
617            },
618            properties: {}
619        };
620    }
621
622    function calculatePolygonArea(polygon) {
623        var coords = polygon.geometry.coordinates[0];
624        var area = 0;
625
626        if (coords.length < 3) {
627            return 0;
628        }
629
630        for (var i = 0, j = coords.length - 1; i < coords.length; j = i++) {
631            var xi = coords[i][0] * Math.PI / 180;
632            var yi = coords[i][1] * Math.PI / 180;
633            var xj = coords[j][0] * Math.PI / 180;
634            var yj = coords[j][1] * Math.PI / 180;
635
636            area += (xj - xi) * (2 + Math.sin(yi) + Math.sin(yj));
637        }
638
639        area = area * 6378137 * 6378137 / 2; // raio da Terra em metros (WGS84)
640        return Math.abs(area);
641    }
642
643    function printResult() {
644        //var polygon = turf.polygon(shellArr);
645        //var area = turf.area(polygon);
646
647        var polygon = createPolygon(shellArr);
648        var area = calculatePolygonArea(polygon);
649
650        area = Math.ceil(area);
651        Ain2 = Math.round(area / 0.00064516 * 100) / 100;
652        Akm2 = Math.round(area / 10000) / 100;
653        Ami2 = Math.round(area / 10000 / 2.589988110336) / 100;
654        Aft2 = Math.round(area / 0.09290304 * 100) / 100;
655        Aacre = Math.round((area / 4046.8564224) * 100) / 100;
656        Aha = Math.round((area / 10000) * 100) / 100
657
658        var distance = calculateDistance();
659        var c = "<b>Area:</b> "
660            + area + " m<sup>2</sup> | "
661            + Aha + " ha | "
662            + Akm2 + " km<sup>2</sup>"
663            + " | " + Ami2 + " mi<sup>2</sup> | " + Aft2 + " ft<sup>2</sup> | " + Aacre + " ac "
664            + "<br/><b>Perimeter:</b> " + distance;
665
666        document.getElementById('status').innerHTML = c;
667        $('#btn-save-results').show();
668    }
669
670    function showMarkers() {
671        var c = document.getElementById("idShowMarkers").checked;
672        var b = markers.length;
673        if (c) {
674            opacity = 1;
675            for (var a = 0; a < b; a++) {
676                markers[a].setOpacity(opacity)
677            }
678        } else {
679            opacity = 0;
680            for (var a = 0; a < b; a++) {
681                markers[a].setOpacity(opacity)
682            }
683        }
684    }
685
686    function checkFormatDDD(f) {
687        var e = f.length;
688        if (e < 7) {
689            return false
690        }
691        var g = 0;
692        var a = 0;
693        var d = 0;
694        for (var b = 0; b < e; b++) {
695            if (f[b] == ".") {
696                a++;
697                continue
698            }
699            if (f[b] == ",") {
700                g++;
701                continue
702            }
703            if (f[b] == "-") {
704                continue
705            }
706            if (f[b] == "+") {
707                continue
708            }
709            var c = +f[b];
710            if (!Number.isInteger(c)) {
711                return false
712            }
713        }
714        if (g != 1) {
715            return false
716        }
717        if (a != 2) {
718            return false
719        }
720        return true
721    }
722
723    function markerByCoordinates() {
724        var b = document.getElementById("idCoordinatesInput");
725        var e = (b.value).trim();
726        if (!checkFormatDDD(e)) {
727            alert("incorrect input ");
728            return false
729        }
730        var a = e.indexOf(",");
731        var d = +e.substr(0, a).trim();
732        var c = +e.substr(a + 1).trim();
733        var f = new L.latLng(d, c);
734        addNewMarker(f);
735        drawpolygon();
736        calculateArea();
737        map.fitBounds(polygon.getBounds())
738    }
739
740    function myMapLoad() {
741        load_basemaps();
742
743        Icon = L.icon({
744            iconUrl: basepath + "images/circle1.png",
745            iconSize: [12, 12]
746        });
747
748        polygon = L.polygon([], {
749            color: "#0563bd"
750        }).addTo(map);
751
752        map.on("click", onMapClick);
753
754        if (typeof url_points != 'undefined' && url_points && url_points.length > 0) {
755            for (i = 0; i < url_points.length; i++) {
756                polyPoints.push(url_points[i][0], url_points[i][1]);
757            }
758            firstLoad();
759        }
760    }
761
762    function createEmbedLink() {
763        points_text_array = "[";
764        for (i = 0; i < polyPoints.length; i++) 0 < i && (points_text_array += ","), points_text_array += "[" + polyPoints[i][0] + "," + polyPoints[i][1] + "]";
765        points_text_array += "]";
766    }
767
768    function firstLoad() {
769
770        for (var b = 0; b < url_points.length; b++) {
771            addNewMarker(L.latLng(url_points[b]))
772        }
773        drawpolygon();
774        calculateArea();
775        map.fitBounds(polygon.getBounds());
776        $('#btn-save-results').hide();
777    }
778
779    function clearLastMarker() {
780        var b, a;
781        b = markers.length;
782        if (b > 0) {
783            a = b - 1;
784            markers[a].remove();
785            markers.pop()
786        }
787        b = markers.length;
788        if (b <= 2) {
789            document.getElementById('status').innerHTML = '';
790            $('#btn-save-results').hide();
791        }
792        drawpolygon();
793        calculateArea();
794    }
795
796    function latlngFromMarkers() {
797        var c = null;
798        var a = [];
799        var d = markers.length;
800        d--;
801        for (var b = 0; b <= d; b++) {
802            c = markers[b].getLatLng();
803            a.push(c)
804        }
805        return a
806    }
807
808    function drawpolygon() {
809        var a = latlngFromMarkers();
810        clearPolygon();
811        polygon.setLatLngs(a);
812        if (searchMarker) {
813            searchMarker.remove()
814        }
815    }
816
817    function calculateArea() {
818        var e = latlngFromMarkers();
819        var k = e.length;
820        var h = [];
821        var m, o;
822        polyPoints = [];
823        for (var g = 0; g < k; g++) {
824            m = e[g].lat;
825            o = e[g].lng;
826            h.push([o, m]);
827            polyPoints.push([m,o]);
828        }
829        var b = h[0];
830        h.push(b);
831        shellArr.length = 0;
832        shellArr.push(h);
833        var f;
834        var c;
835        var a;
836        var l;
837        var j;
838        var n;
839        var d;
840
841        if (k > 2) {
842            printResult();
843        }
844
845        createEmbedLink();
846    }
847
848    function calculateDistance() {
849        var f = 0;
850        var g;
851        var c = latlngFromMarkers();
852        var d = c.length;
853        if (d > 0) {
854            var a = 1;
855
856            f = map.distance(c[0], c[d-1]);
857            for (var b = 0; a < d; b++) {
858                g = map.distance(c[b], c[a]);
859                f = g + f;
860                a++
861            }
862            var h = f;
863            var e = Math.round(f / 0.9144)
864        } else {
865            var h = 0;
866            var e = 0
867        }
868
869
870        var a = h,
871            b = a / 1E3,
872            d = 6.21371192E-4 * a,
873            c = 5280 * d,
874            y = Math.round(a / 0.9144);
875
876        return a.toFixed(2) + " m | "
877            + b.toFixed(2) + " km"
878            + (is_imperial ? " | " + d.toFixed(2) + " mi | " + c.toFixed(0) + " ft | " + y.toFixed(2) + " yd " : "");
879    }
880
881    function reset_calc() {
882
883        clearPolygon();
884        if (polyline) {
885            polyline.remove()
886        }
887        polyline = L.polyline([], {
888            color: "#0563bd"
889        }).addTo(map);
890        var b = markers.length;
891        b--;
892        for (var a = 0; a <= b; a++) {
893            markers[a].remove()
894        }
895        markers.length = 0;
896        clickCount = 0;
897        document.getElementById('status').innerHTML = '';
898        $('#btn-save-results').hide();
899
900        polyPoints = [];
901        createEmbedLink();
902    }
903
904    function addNewMarker(b) {
905        markers.push(L.marker(b, {
906            icon: Icon,
907            draggable: true
908        }));
909
910        if (markers.length == 0) {
911            document.getElementById('status').innerHTML = '';
912        }
913        var a = markers.length - 1;
914        markers[a].setOpacity(opacity);
915        markers[a].addTo(map);
916        markers[a].on("dragend", function() {
917            drawpolygon();
918            calculateArea()
919        })
920    }
921
922    function clearPolygon() {
923        if (polygon) {
924            if (!polygon.isEmpty()) {
925                polygon.remove()
926            }
927        }
928        polygon = L.polygon([], {
929            color: "#0563bd"
930        }).addTo(map)
931    }
932
933    function onMapClick(a) {
934        addNewMarker(a.latlng);
935        drawpolygon();
936        calculateArea()
937    }
938
939    function newCalc() {
940        reset_calc();
941        map.on("click", onMapClick);
942        document.getElementById('status').innerHTML = '';
943    }
944</script>
944<br class="cb"><div class="banner_responsive"><!-- CMAPS_responsive_bottom -->
945                        <ins class="adsbygoogle"
946                             style="display:block"
947                             data-ad-client="ca-pub-9757282942634037"
948                             data-ad-slot="8498805509"
949                             data-ad-format="horizontal"></ins>
950                        
950<script>
951                        (adsbygoogle = window.adsbygoogle || []).push({});
952                        </script>
952</div><br class="cb"></div><div class="col-md-2"><br class="cb"><div class="banner_responsive"><!-- CMAPS_responsive_right_side -->
953                        <ins class="adsbygoogle"
954                             style="display:block"
955                             data-ad-client="ca-pub-9757282942634037"
956                             data-ad-slot="5016832978"
957                             data-ad-format="auto"></ins>
958                        
958<script>
959                        (adsbygoogle = window.adsbygoogle || []).push({});
960                        </script>
960</div><br class="cb"></div></section>
961</div><!-- END PAGE -->
962<div id="lang-modal" class="modal fade" role="dialog">
963                    <div class="modal-dialog" role="document">
964                        <div class="modal-content">
965                            <div class="modal-header">
966                                <button type="button" class="close" data-dismiss="modal">&times;</button>
967                                <span class="modal-title tac">Language</span>
968                            </div>
969                            <div class="modal-body tac">
970                                <div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14   bold " href="https://www.calcmaps.com/map-area/">[EN] English</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/de/map-area/">[DE] Deutsch</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/fr/map-area/">[FR] Français</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/es/map-area/">[ES] Español</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/pt/map-area/">[PT] Português</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/it/map-area/">[IT] Italiano</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/nl/map-area/">[NL] Nederlands</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/sv/map-area/">[SV] Svenska</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/ro/map-area/">[RO] Română</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/pl/map-area/">[PL] Polski</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/ru/map-area/">[RU] Pусский</a></p></div><div class="col-12 mb15"><p class="bbdashed p5"><a class="fs14  " href="https://www.calcmaps.com/tr/map-area/">[TR] Türkçe</a></p></div>
971                            </div><br class="cb">
972                            <div class="modal-footer tac">
973                                <button type="button" class="btn btn-default rounded5" data-dismiss="modal">Cancel</button>
974                            </div>
975                        </div>
976                    </div>
977                </div><!-- FOOTER -->
978<footer id="footer"  class="container">
979<div class="row footer-last">
980    <div class="col-md-3 article-content-no-padding">   
981        <span class="text-left fs13">&copy;  2015–2026 Calcmaps.com</span>
982    </div>
983    <div class="col-md-9 article-content-no-padding text-left ">
984        <a href="https://www.calcmaps.com/terms-and-conditions/" rel="nofollow" class="mr10 mb10 dib_mobile fs14">Terms and Conditions</a>
985        <a href="https://www.calcmaps.com/policy-privacy/" rel="nofollow" class="mr10 mb10 dib_mobile fs14">Policy Privacy</a>
986        <a href="https://www.calcmaps.com/policy-privacy/#cookies" rel="nofollow" class="mr10 mb10 dib_mobile fs14">Cookies</a>
987        <a href="https://www.calcmaps.com/contact/" rel="nofollow" class="mr10 mb10 dib_mobile fs14">Contact us</a>
988        <a href="https://www.calcmaps.com/about/" rel="nofollow" class="mr10 mb10 dib_mobile fs14">About</a>
989        <a href="#" rel="nofollow" id="footer_choose_lang_modal" class="mr10 mb10 dib_mobile fs14" data-toggle="modal" data-target="#lang-modal">Language</a>
990        <a href="https://www.facebook.com/calcmaps" class="mr10 mb10 dib_mobile fs14" title="Facebook" rel="nofollow" target="_blank">Facebook</a>    </div>
991</div>
992
993</footer><!-- END FOOTER -->
994
995<script>
996
997var basepath        = "https://www.calcmaps.com/";
998var lang            = "en";
999var lang_op         = "map-area";
1000var basepath_lang   = "https://www.calcmaps.com/";
1001var BLANK           = "https://www.calcmaps.com/css/i/blank.gif";
1002var onl             = "1";
1003var ismobile        = "";
1004var isbot           = "1";
1005var cookie_domain   = "www.calcmaps.com";
1006var cookie_prefix   = "CMAPS";
1007var cookie_version  = "_V2_";
1008var static_dir      = "https://www.calcmaps.com/";
1009</script>
1009
1010
1011<style>
1012#map_canvas {width:100%; height:500px;}
1013#map_area {width:100%;}
1014</style>
1015
1016<script>
1017var url_points = '';
1018var url_short_coords = '';
1019var start_point = null, start_lat = null, start_lng = null;
1020var start_zoom = country_zoom; //0-20
1021var mapTypeId = 'hybrid';
1022</script>
vendor: 1 bytes, line 1022
1022
1023<script src="https://www.calcmaps.com/js/pages/page.js?v=52"></script>
vendor: 1 bytes, line 1023
1023
1024<script type="application/ld+json">
1025    {  "@context" : "http://schema.org",
1026       "@type" : "WebSite",
1027       "name" : "CalcMaps",
1028       "alternateName" : "CMAPS",
1029       "url" : "https://www.calcmaps.com"
1030    }
1031</script>
1031
1032
1033<script>
1034var url_dir = "map-area";
1035</script>
1035
1036
1037        <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 72 bytes, lines 1037-1038
1037
1038        <script async src='https://www.googletagmanager.com/gtag/js?id=
1038G-857DKLZ3G3
vendor: 20 bytes, lines 1038-1039
1038'></script>
1039        
1039<script>
1040          
vendor: 157 bytes, lines 1040-1043
1040window.dataLayer = window.dataLayer || [];
1041          function gtag(){dataLayer.push(arguments);}
1042          gtag('js', new Date());
1043          gtag('config', '
1043G-857DKLZ3G3
vendor: 13 bytes, lines 1043-1044
1043'); 
1044        
1044</script>
1044
1045    
1046        <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 72 bytes, lines 1046-1047
1046
1047        <script async src='https://www.googletagmanager.com/gtag/js?id=
1047G-4YH9VB85NZ
vendor: 20 bytes, lines 1047-1048
1047'></script>
1048        
1048<script>
1049          
vendor: 166 bytes, lines 1049-1053
1049window.dataLayer = window.dataLayer || [];
1050          function gtag(){dataLayer.push(arguments);}
1051          gtag('js', new Date());
1052        
1053          gtag('config', '
1053G-4YH9VB85NZ
vendor: 110 bytes, lines 1053-1057
1053', { 
1054              'page_title' : 'calcmaps.com',
1055              'page_path': url_dir
1056            });
1057        
1057</script>
1057
1058    
1059    
1059<script>
1060        // track events
1061        function trackClickEvent(element, action, label) {
1062            
1063            label = typeof(label) != 'undefined' ? label : '';
1064            
1065            if (typeof(gtag) !== 'undefined') {
1066                
1067                gtag('event', element + '_' + action + (label != '' ? '_' + label : ''), {
1068                    send_to: 'G-857DKLZ3G3'
1069                });
1070                
1071            }
1072            console.log('GA4: ' + element + ' ' + action + ' ' + label);
1073        }
1074    </script>
1074<script>
1075    if (inside_iframe && document.referrer) {
1076        try {
1077            trackClickEvent('inside_iframe', new URL(document.referrer).hostname, document.referrer);
1078        } catch(e) {}
1079    }
1080</script>
1080
1081<div class="modal fade" id="adb_modal" role="dialog">
1082    <div class="modal-dialog">
1083        <div class="modal-content">
1084            <div class="modal-header" style="min-height: 50px">
1085                <span class="modal-title tac" id="adb_modal_title"></span>
1086                <button type="button" class="close" data-dismiss="modal" onclick="trackClickEvent('ad_block', 'close_alert')">&times;</button>
1087            </div>
1088            <div class="modal-body fs16 tac" id="adb_modal_alert_text"></div>
1089        </div>
1090    </div>
1091</div>
1092<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/bundle.js" onerror="this.onerror=null;var s=document.createElement('script');s.src='https://www.calcmaps.com/js/leaflet/easy_print_2.1.9.js?v=52';document.head.appendChild(s);"></script>
1092
1093<div id="miniModal">
1094    <div class="miniModalBox">
1095        <div id="miniModalText"></div>
1096        <button id="miniModalOk">OK</button>
1097    </div>
1098</div>
1099</body>
1100</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.