[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"guide-openlayers-integration":3,"related-openlayers-integration":10923},{"id":4,"title":5,"body":6,"category":10913,"description":10914,"draft":10915,"extension":10916,"icon":10917,"meta":10918,"navigation":524,"order":192,"path":10919,"seo":10920,"stem":10921,"__hash__":10922},"guides\u002Fguides\u002Fopenlayers-integration.md","Using Township Canada API with OpenLayers",{"type":7,"value":8,"toc":10890},"minimark",[9,13,25,30,33,52,56,79,83,90,789,792,796,801,806,814,818,838,1028,1036,1093,1100,1274,1282,1412,1435,1448,1452,1463,2031,2039,2056,2060,2067,2572,2575,2579,2591,2595,2601,2605,2608,3064,3068,3071,3959,3965,3969,3972,3978,4074,4077,4769,4779,4783,4786,4790,4796,4799,4989,4994,5180,5183,6395,6402,6406,6412,10757,10760,10764,10854,10858,10887],[10,11,12],"p",{},"Build a web map that displays Canadian survey grids (DLS and NTS), searches legal land descriptions, and identifies grid cells on click - all using OpenLayers and the Township Canada API.",[10,14,15,16,20,21,24],{},"OpenLayers has native support for the Mapbox Vector Tile (MVT) format through ",[17,18,19],"code",{},"ol\u002Fsource\u002FVectorTile"," and ",[17,22,23],{},"ol\u002Fformat\u002FMVT",". That means Township Canada's survey grid tiles load directly without any plugins or format conversion.",[26,27,29],"h2",{"id":28},"what-youll-build","What you'll build",[10,31,32],{},"By the end of this guide, you'll have a web page that:",[34,35,36,40,43,46,49],"ul",{},[37,38,39],"li",{},"Displays DLS township, section, and LSD grid boundaries on an OpenLayers map",[37,41,42],{},"Changes grid line weight based on zoom level (townships thick, LSDs thin)",[37,44,45],{},"Searches a legal land description and pans to the result with a highlighted parcel boundary",[37,47,48],{},"Shows a popup with the grid cell's descriptor when you click on the map",[37,50,51],{},"Includes autocomplete suggestions as you type",[26,53,55],{"id":54},"prerequisites","Prerequisites",[34,57,58,76],{},[37,59,60,61,65,66,71,72],{},"A ",[62,63,64],"strong",{},"Township Canada API key"," - subscribe to the Maps API and Search API from the ",[67,68,70],"a",{"href":69},"\u002Fapp\u002Fapi","API page",", then create an API key from your ",[67,73,75],{"href":74},"\u002Fguides\u002Faccount-management","account settings",[37,77,78],{},"Basic knowledge of HTML and JavaScript",[26,80,82],{"id":81},"step-1-set-up-the-project","Step 1: Set up the project",[10,84,85,86,89],{},"Create an ",[17,87,88],{},"index.html"," file with OpenLayers loaded from CDN. This guide uses OpenLayers v9.x, which is the current stable release.",[91,92,97],"pre",{"className":93,"code":94,"language":95,"meta":96,"style":96},"language-html shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u003C!DOCTYPE html>\n\u003Chtml>\n  \u003Chead>\n    \u003Cmeta charset=\"utf-8\" \u002F>\n    \u003Ctitle>Township Canada + OpenLayers\u003C\u002Ftitle>\n    \u003Cmeta\n      name=\"viewport\"\n      content=\"width=device-width, initial-scale=1\"\n    \u002F>\n    \u003Clink\n      rel=\"stylesheet\"\n      href=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fol@9\u002Fol.css\"\n    \u002F>\n    \u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fol@9\u002Fdist\u002Fol.js\">\u003C\u002Fscript>\n    \u003Cstyle>\n      html,\n      body {\n        margin: 0;\n        padding: 0;\n        height: 100%;\n      }\n      #map {\n        width: 100%;\n        height: 100vh;\n      }\n    \u003C\u002Fstyle>\n  \u003C\u002Fhead>\n  \u003Cbody>\n    \u003Cdiv id=\"map\">\u003C\u002Fdiv>\n    \u003Cscript>\n      const TC_API_KEY = \"YOUR_TOWNSHIP_CANADA_API_KEY\";\n\n      \u002F\u002F Base OpenStreetMap layer\n      const osm = new ol.layer.Tile({\n        source: new ol.source.OSM()\n      });\n\n      const map = new ol.Map({\n        target: \"map\",\n        layers: [osm],\n        view: new ol.View({\n          center: ol.proj.fromLonLat([-114, 51]), \u002F\u002F Calgary, AB\n          zoom: 9\n        })\n      });\n    \u003C\u002Fscript>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n","html","",[17,98,99,119,129,140,168,190,198,214,229,235,243,258,273,278,305,315,325,334,351,363,380,386,398,412,426,431,441,451,461,486,495,519,526,533,569,595,606,611,634,650,669,690,733,744,753,762,771,780],{"__ignoreMap":96},[100,101,104,108,112,116],"span",{"class":102,"line":103},"line",1,[100,105,107],{"class":106},"soVBu","\u003C!",[100,109,111],{"class":110},"sJFLg","DOCTYPE",[100,113,115],{"class":114},"s5q8q"," html",[100,117,118],{"class":106},">\n",[100,120,122,125,127],{"class":102,"line":121},2,[100,123,124],{"class":106},"\u003C",[100,126,95],{"class":110},[100,128,118],{"class":106},[100,130,132,135,138],{"class":102,"line":131},3,[100,133,134],{"class":106},"  \u003C",[100,136,137],{"class":110},"head",[100,139,118],{"class":106},[100,141,143,146,149,152,155,159,163,165],{"class":102,"line":142},4,[100,144,145],{"class":106},"    \u003C",[100,147,148],{"class":110},"meta",[100,150,151],{"class":114}," charset",[100,153,154],{"class":106},"=",[100,156,158],{"class":157},"sbYkP","\"",[100,160,162],{"class":161},"sTbE_","utf-8",[100,164,158],{"class":157},[100,166,167],{"class":106}," \u002F>\n",[100,169,171,173,176,179,183,186,188],{"class":102,"line":170},5,[100,172,145],{"class":106},[100,174,175],{"class":110},"title",[100,177,178],{"class":106},">",[100,180,182],{"class":181},"sftqT","Township Canada + OpenLayers",[100,184,185],{"class":106},"\u003C\u002F",[100,187,175],{"class":110},[100,189,118],{"class":106},[100,191,193,195],{"class":102,"line":192},6,[100,194,145],{"class":106},[100,196,197],{"class":110},"meta\n",[100,199,201,204,206,208,211],{"class":102,"line":200},7,[100,202,203],{"class":114},"      name",[100,205,154],{"class":106},[100,207,158],{"class":157},[100,209,210],{"class":161},"viewport",[100,212,213],{"class":157},"\"\n",[100,215,217,220,222,224,227],{"class":102,"line":216},8,[100,218,219],{"class":114},"      content",[100,221,154],{"class":106},[100,223,158],{"class":157},[100,225,226],{"class":161},"width=device-width, initial-scale=1",[100,228,213],{"class":157},[100,230,232],{"class":102,"line":231},9,[100,233,234],{"class":106},"    \u002F>\n",[100,236,238,240],{"class":102,"line":237},10,[100,239,145],{"class":106},[100,241,242],{"class":110},"link\n",[100,244,246,249,251,253,256],{"class":102,"line":245},11,[100,247,248],{"class":114},"      rel",[100,250,154],{"class":106},[100,252,158],{"class":157},[100,254,255],{"class":161},"stylesheet",[100,257,213],{"class":157},[100,259,261,264,266,268,271],{"class":102,"line":260},12,[100,262,263],{"class":114},"      href",[100,265,154],{"class":106},[100,267,158],{"class":157},[100,269,270],{"class":161},"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fol@9\u002Fol.css",[100,272,213],{"class":157},[100,274,276],{"class":102,"line":275},13,[100,277,234],{"class":106},[100,279,281,283,286,289,291,293,296,298,301,303],{"class":102,"line":280},14,[100,282,145],{"class":106},[100,284,285],{"class":110},"script",[100,287,288],{"class":114}," src",[100,290,154],{"class":106},[100,292,158],{"class":157},[100,294,295],{"class":161},"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fol@9\u002Fdist\u002Fol.js",[100,297,158],{"class":157},[100,299,300],{"class":106},">\u003C\u002F",[100,302,285],{"class":110},[100,304,118],{"class":106},[100,306,308,310,313],{"class":102,"line":307},15,[100,309,145],{"class":106},[100,311,312],{"class":110},"style",[100,314,118],{"class":106},[100,316,318,322],{"class":102,"line":317},16,[100,319,321],{"class":320},"skzw8","      html",[100,323,324],{"class":106},",\n",[100,326,328,331],{"class":102,"line":327},17,[100,329,330],{"class":320},"      body",[100,332,333],{"class":106}," {\n",[100,335,337,341,344,348],{"class":102,"line":336},18,[100,338,340],{"class":339},"s5HLA","        margin",[100,342,343],{"class":106},":",[100,345,347],{"class":346},"s7CZa"," 0",[100,349,350],{"class":106},";\n",[100,352,354,357,359,361],{"class":102,"line":353},19,[100,355,356],{"class":339},"        padding",[100,358,343],{"class":106},[100,360,347],{"class":346},[100,362,350],{"class":106},[100,364,366,369,371,374,378],{"class":102,"line":365},20,[100,367,368],{"class":339},"        height",[100,370,343],{"class":106},[100,372,373],{"class":346}," 100",[100,375,377],{"class":376},"sQBxk","%",[100,379,350],{"class":106},[100,381,383],{"class":102,"line":382},21,[100,384,385],{"class":106},"      }\n",[100,387,389,392,396],{"class":102,"line":388},22,[100,390,391],{"class":106},"      #",[100,393,395],{"class":394},"sAntY","map",[100,397,333],{"class":106},[100,399,401,404,406,408,410],{"class":102,"line":400},23,[100,402,403],{"class":339},"        width",[100,405,343],{"class":106},[100,407,373],{"class":346},[100,409,377],{"class":376},[100,411,350],{"class":106},[100,413,415,417,419,421,424],{"class":102,"line":414},24,[100,416,368],{"class":339},[100,418,343],{"class":106},[100,420,373],{"class":346},[100,422,423],{"class":376},"vh",[100,425,350],{"class":106},[100,427,429],{"class":102,"line":428},25,[100,430,385],{"class":106},[100,432,434,437,439],{"class":102,"line":433},26,[100,435,436],{"class":106},"    \u003C\u002F",[100,438,312],{"class":110},[100,440,118],{"class":106},[100,442,444,447,449],{"class":102,"line":443},27,[100,445,446],{"class":106},"  \u003C\u002F",[100,448,137],{"class":110},[100,450,118],{"class":106},[100,452,454,456,459],{"class":102,"line":453},28,[100,455,134],{"class":106},[100,457,458],{"class":110},"body",[100,460,118],{"class":106},[100,462,464,466,469,472,474,476,478,480,482,484],{"class":102,"line":463},29,[100,465,145],{"class":106},[100,467,468],{"class":110},"div",[100,470,471],{"class":114}," id",[100,473,154],{"class":106},[100,475,158],{"class":157},[100,477,395],{"class":161},[100,479,158],{"class":157},[100,481,300],{"class":106},[100,483,468],{"class":110},[100,485,118],{"class":106},[100,487,489,491,493],{"class":102,"line":488},30,[100,490,145],{"class":106},[100,492,285],{"class":110},[100,494,118],{"class":106},[100,496,498,502,506,509,512,515,517],{"class":102,"line":497},31,[100,499,501],{"class":500},"s5Kfy","      const",[100,503,505],{"class":504},"sSC40"," TC_API_KEY",[100,507,508],{"class":106}," =",[100,510,511],{"class":157}," \"",[100,513,514],{"class":161},"YOUR_TOWNSHIP_CANADA_API_KEY",[100,516,158],{"class":157},[100,518,350],{"class":106},[100,520,522],{"class":102,"line":521},32,[100,523,525],{"emptyLinePlaceholder":524},true,"\n",[100,527,529],{"class":102,"line":528},33,[100,530,532],{"class":531},"s9Tkl","      \u002F\u002F Base OpenStreetMap layer\n",[100,534,536,538,541,543,547,550,553,556,558,562,566],{"class":102,"line":535},34,[100,537,501],{"class":500},[100,539,540],{"class":504}," osm",[100,542,508],{"class":106},[100,544,546],{"class":545},"sVsLi"," new",[100,548,549],{"class":504}," ol",[100,551,552],{"class":106},".",[100,554,555],{"class":504},"layer",[100,557,552],{"class":106},[100,559,561],{"class":560},"sljsM","Tile",[100,563,565],{"class":564},"snCua","(",[100,567,568],{"class":106},"{\n",[100,570,572,576,578,580,582,584,587,589,592],{"class":102,"line":571},35,[100,573,575],{"class":574},"suXOh","        source",[100,577,343],{"class":106},[100,579,546],{"class":545},[100,581,549],{"class":504},[100,583,552],{"class":106},[100,585,586],{"class":504},"source",[100,588,552],{"class":106},[100,590,591],{"class":560},"OSM",[100,593,594],{"class":564},"()\n",[100,596,598,601,604],{"class":102,"line":597},36,[100,599,600],{"class":106},"      }",[100,602,603],{"class":564},")",[100,605,350],{"class":106},[100,607,609],{"class":102,"line":608},37,[100,610,525],{"emptyLinePlaceholder":524},[100,612,614,616,619,621,623,625,627,630,632],{"class":102,"line":613},38,[100,615,501],{"class":500},[100,617,618],{"class":504}," map",[100,620,508],{"class":106},[100,622,546],{"class":545},[100,624,549],{"class":504},[100,626,552],{"class":106},[100,628,629],{"class":560},"Map",[100,631,565],{"class":564},[100,633,568],{"class":106},[100,635,637,640,642,644,646,648],{"class":102,"line":636},39,[100,638,639],{"class":574},"        target",[100,641,343],{"class":106},[100,643,511],{"class":157},[100,645,395],{"class":161},[100,647,158],{"class":157},[100,649,324],{"class":106},[100,651,653,656,658,661,664,667],{"class":102,"line":652},40,[100,654,655],{"class":574},"        layers",[100,657,343],{"class":106},[100,659,660],{"class":564}," [",[100,662,663],{"class":504},"osm",[100,665,666],{"class":564},"]",[100,668,324],{"class":106},[100,670,672,675,677,679,681,683,686,688],{"class":102,"line":671},41,[100,673,674],{"class":574},"        view",[100,676,343],{"class":106},[100,678,546],{"class":545},[100,680,549],{"class":504},[100,682,552],{"class":106},[100,684,685],{"class":560},"View",[100,687,565],{"class":564},[100,689,568],{"class":106},[100,691,693,696,698,700,702,705,707,710,713,716,719,722,725,728,730],{"class":102,"line":692},42,[100,694,695],{"class":574},"          center",[100,697,343],{"class":106},[100,699,549],{"class":504},[100,701,552],{"class":106},[100,703,704],{"class":504},"proj",[100,706,552],{"class":106},[100,708,709],{"class":560},"fromLonLat",[100,711,712],{"class":564},"([",[100,714,715],{"class":545},"-",[100,717,718],{"class":346},"114",[100,720,721],{"class":106},",",[100,723,724],{"class":346}," 51",[100,726,727],{"class":564},"])",[100,729,721],{"class":106},[100,731,732],{"class":531}," \u002F\u002F Calgary, AB\n",[100,734,736,739,741],{"class":102,"line":735},43,[100,737,738],{"class":574},"          zoom",[100,740,343],{"class":106},[100,742,743],{"class":346}," 9\n",[100,745,747,750],{"class":102,"line":746},44,[100,748,749],{"class":106},"        }",[100,751,752],{"class":564},")\n",[100,754,756,758,760],{"class":102,"line":755},45,[100,757,600],{"class":106},[100,759,603],{"class":564},[100,761,350],{"class":106},[100,763,765,767,769],{"class":102,"line":764},46,[100,766,436],{"class":106},[100,768,285],{"class":110},[100,770,118],{"class":106},[100,772,774,776,778],{"class":102,"line":773},47,[100,775,446],{"class":106},[100,777,458],{"class":110},[100,779,118],{"class":106},[100,781,783,785,787],{"class":102,"line":782},48,[100,784,185],{"class":106},[100,786,95],{"class":110},[100,788,118],{"class":106},[10,790,791],{},"Open this file in a browser. You should see an OpenStreetMap base map centred on Calgary.",[26,793,795],{"id":794},"step-2-add-township-survey-grid-layers","Step 2: Add Township survey grid layers",[10,797,798,799,552],{},"Township Canada serves survey grid boundaries as vector tiles. Each province and grid level is a separate URL path, and the tile format is MVT (Mapbox Vector Tile). OpenLayers reads MVT natively via ",[17,800,23],{},[802,803,805],"h3",{"id":804},"tile-url-pattern","Tile URL pattern",[91,807,812],{"className":808,"code":810,"language":811},[809],"language-text","https:\u002F\u002Fmaps.townshipcanada.com\u002F{province}\u002F{layer}\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=YOUR_API_KEY\n","text",[17,813,810],{"__ignoreMap":96},[802,815,817],{"id":816},"available-grid-layers","Available grid layers",[10,819,820,823,824,827,828,827,831,827,834,837],{},[62,821,822],{},"DLS grid"," (provinces: ",[17,825,826],{},"ab",", ",[17,829,830],{},"sk",[17,832,833],{},"mb",[17,835,836],{},"bc","):",[839,840,841,863],"table",{},[842,843,844],"thead",{},[845,846,847,851,854,857,860],"tr",{},[848,849,850],"th",{},"URL layer",[848,852,853],{},"source-layer",[848,855,856],{},"text-field",[848,858,859],{},"Source zoom",[848,861,862],{},"Layer zoom",[864,865,866,887,909,929,950,968,988,1007],"tbody",{},[845,867,868,874,879,881,884],{},[869,870,871],"td",{},[17,872,873],{},"twp",[869,875,876],{},[17,877,878],{},"{prov}_twp",[869,880,715],{},[869,882,883],{},"0–14",[869,885,886],{},"6–12",[845,888,889,894,899,904,906],{},[869,890,891],{},[17,892,893],{},"twp-label",[869,895,896],{},[17,897,898],{},"{prov}_twp_label",[869,900,901],{},[17,902,903],{},"{descriptor}",[869,905,883],{},[869,907,908],{},"10–12",[845,910,911,916,921,923,926],{},[869,912,913],{},[17,914,915],{},"sec",[869,917,918],{},[17,919,920],{},"{prov}_sec",[869,922,715],{},[869,924,925],{},"9–14",[869,927,928],{},"12–14",[845,930,931,936,941,946,948],{},[869,932,933],{},[17,934,935],{},"sec-label",[869,937,938],{},[17,939,940],{},"{prov}_sec_label",[869,942,943],{},[17,944,945],{},"{section}",[869,947,925],{},[869,949,928],{},[845,951,952,957,962,964,966],{},[869,953,954],{},[17,955,956],{},"qtr",[869,958,959],{},[17,960,961],{},"{prov}_qtr",[869,963,715],{},[869,965,925],{},[869,967,928],{},[845,969,970,975,980,984,986],{},[869,971,972],{},[17,973,974],{},"qtr-label",[869,976,977],{},[17,978,979],{},"{prov}_qtr_label",[869,981,982],{},[17,983,903],{},[869,985,925],{},[869,987,928],{},[845,989,990,995,1000,1002,1004],{},[869,991,992],{},[17,993,994],{},"lsd",[869,996,997],{},[17,998,999],{},"{prov}_lsd",[869,1001,715],{},[869,1003,925],{},[869,1005,1006],{},"14–20",[845,1008,1009,1014,1019,1024,1026],{},[869,1010,1011],{},[17,1012,1013],{},"lsd-label",[869,1015,1016],{},[17,1017,1018],{},"{prov}_lsd_label",[869,1020,1021],{},[17,1022,1023],{},"{lsd}",[869,1025,925],{},[869,1027,1006],{},[10,1029,1030,1033,1034,837],{},[62,1031,1032],{},"MB River Lots"," (province: ",[17,1035,833],{},[839,1037,1038,1052],{},[842,1039,1040],{},[845,1041,1042,1044,1046,1048,1050],{},[848,1043,850],{},[848,1045,853],{},[848,1047,856],{},[848,1049,859],{},[848,1051,862],{},[864,1053,1054,1073],{},[845,1055,1056,1061,1066,1068,1070],{},[869,1057,1058],{},[17,1059,1060],{},"river-lots",[869,1062,1063],{},[17,1064,1065],{},"mb_river_lots",[869,1067,715],{},[869,1069,883],{},[869,1071,1072],{},"12–20",[845,1074,1075,1080,1085,1089,1091],{},[869,1076,1077],{},[17,1078,1079],{},"river-lots-label",[869,1081,1082],{},[17,1083,1084],{},"mb_river_lots_label",[869,1086,1087],{},[17,1088,903],{},[869,1090,883],{},[869,1092,1072],{},[10,1094,1095,1033,1098,837],{},[62,1096,1097],{},"NTS grid",[17,1099,836],{},[839,1101,1102,1116],{},[842,1103,1104],{},[845,1105,1106,1108,1110,1112,1114],{},[848,1107,850],{},[848,1109,853],{},[848,1111,856],{},[848,1113,859],{},[848,1115,862],{},[864,1117,1118,1137,1158,1177,1197,1216,1236,1254],{},[845,1119,1120,1125,1130,1132,1134],{},[869,1121,1122],{},[17,1123,1124],{},"series",[869,1126,1127],{},[17,1128,1129],{},"bc_series",[869,1131,715],{},[869,1133,883],{},[869,1135,1136],{},"0–10",[845,1138,1139,1144,1149,1153,1155],{},[869,1140,1141],{},[17,1142,1143],{},"series-label",[869,1145,1146],{},[17,1147,1148],{},"bc_series_label",[869,1150,1151],{},[17,1152,903],{},[869,1154,883],{},[869,1156,1157],{},"7–10",[845,1159,1160,1165,1170,1172,1174],{},[869,1161,1162],{},[17,1163,1164],{},"block",[869,1166,1167],{},[17,1168,1169],{},"bc_block",[869,1171,715],{},[869,1173,925],{},[869,1175,1176],{},"10–13",[845,1178,1179,1184,1189,1193,1195],{},[869,1180,1181],{},[17,1182,1183],{},"block-label",[869,1185,1186],{},[17,1187,1188],{},"bc_block_label",[869,1190,1191],{},[17,1192,903],{},[869,1194,925],{},[869,1196,1176],{},[845,1198,1199,1204,1209,1211,1213],{},[869,1200,1201],{},[17,1202,1203],{},"unit",[869,1205,1206],{},[17,1207,1208],{},"bc_unit",[869,1210,715],{},[869,1212,925],{},[869,1214,1215],{},"13–14",[845,1217,1218,1223,1228,1232,1234],{},[869,1219,1220],{},[17,1221,1222],{},"unit-label",[869,1224,1225],{},[17,1226,1227],{},"bc_unit_label",[869,1229,1230],{},[17,1231,903],{},[869,1233,925],{},[869,1235,1215],{},[845,1237,1238,1243,1248,1250,1252],{},[869,1239,1240],{},[17,1241,1242],{},"qtr-unit",[869,1244,1245],{},[17,1246,1247],{},"bc_qtr_unit",[869,1249,715],{},[869,1251,925],{},[869,1253,1006],{},[845,1255,1256,1261,1266,1270,1272],{},[869,1257,1258],{},[17,1259,1260],{},"qtr-unit-label",[869,1262,1263],{},[17,1264,1265],{},"bc_qtr_unit_label",[869,1267,1268],{},[17,1269,903],{},[869,1271,925],{},[869,1273,1006],{},[10,1275,1276,1033,1279,837],{},[62,1277,1278],{},"Ontario",[17,1280,1281],{},"on",[839,1283,1284,1298],{},[842,1285,1286],{},[845,1287,1288,1290,1292,1294,1296],{},[848,1289,850],{},[848,1291,853],{},[848,1293,856],{},[848,1295,859],{},[848,1297,862],{},[864,1299,1300,1317,1336,1354,1374,1392],{},[845,1301,1302,1306,1311,1313,1315],{},[869,1303,1304],{},[17,1305,873],{},[869,1307,1308],{},[17,1309,1310],{},"on_twp",[869,1312,715],{},[869,1314,883],{},[869,1316,886],{},[845,1318,1319,1323,1328,1332,1334],{},[869,1320,1321],{},[17,1322,893],{},[869,1324,1325],{},[17,1326,1327],{},"on_twp_label",[869,1329,1330],{},[17,1331,903],{},[869,1333,883],{},[869,1335,886],{},[845,1337,1338,1343,1348,1350,1352],{},[869,1339,1340],{},[17,1341,1342],{},"con",[869,1344,1345],{},[17,1346,1347],{},"on_con",[869,1349,715],{},[869,1351,883],{},[869,1353,928],{},[845,1355,1356,1361,1366,1370,1372],{},[869,1357,1358],{},[17,1359,1360],{},"con-label",[869,1362,1363],{},[17,1364,1365],{},"on_con_label",[869,1367,1368],{},[17,1369,903],{},[869,1371,883],{},[869,1373,928],{},[845,1375,1376,1381,1386,1388,1390],{},[869,1377,1378],{},[17,1379,1380],{},"lot",[869,1382,1383],{},[17,1384,1385],{},"on_lot",[869,1387,715],{},[869,1389,883],{},[869,1391,1006],{},[845,1393,1394,1399,1404,1408,1410],{},[869,1395,1396],{},[17,1397,1398],{},"lot-label",[869,1400,1401],{},[17,1402,1403],{},"on_lot_label",[869,1405,1406],{},[17,1407,903],{},[869,1409,883],{},[869,1411,1006],{},[10,1413,1414,1415,1418,1419,827,1421,827,1423,827,1425,1427,1428,1430,1431,1434],{},"Replace ",[17,1416,1417],{},"{prov}"," with the province code (",[17,1420,826],{},[17,1422,830],{},[17,1424,833],{},[17,1426,836],{},") in the source-layer column. The URL uses hyphens (e.g. ",[17,1429,893],{},") while the source-layer inside the tile data uses underscores (e.g. ",[17,1432,1433],{},"ab_twp_label",").",[10,1436,1437,1438,827,1440,827,1442,827,1444,827,1446],{},"Available provinces: ",[17,1439,826],{},[17,1441,830],{},[17,1443,833],{},[17,1445,836],{},[17,1447,1281],{},[802,1449,1451],{"id":1450},"adding-dls-grid-layers","Adding DLS grid layers",[10,1453,1454,1455,1458,1459,1462],{},"Add the following inside your ",[17,1456,1457],{},"\u003Cscript>"," block, after the map is created. This adds separate ",[17,1460,1461],{},"VectorTileLayer"," instances for township, section, and LSD grids with zoom-dependent styling so each grid level appears at an appropriate zoom.",[91,1464,1468],{"className":1465,"code":1466,"language":1467,"meta":96,"style":96},"language-javascript shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","const TC_TILES = \"https:\u002F\u002Fmaps.townshipcanada.com\";\n\nfunction makeTileLayer(province, layer, minZoom, maxZoom, lineWidth, lineColor) {\n  return new ol.layer.VectorTile({\n    minZoom: minZoom,\n    maxZoom: maxZoom,\n    source: new ol.source.VectorTile({\n      format: new ol.format.MVT(),\n      url: `${TC_TILES}\u002F${province}\u002F${layer}\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=${TC_API_KEY}`\n    }),\n    style: new ol.style.Style({\n      stroke: new ol.style.Stroke({\n        color: lineColor,\n        width: lineWidth\n      })\n    })\n  });\n}\n\n\u002F\u002F Township grid - visible from zoom 6 to 11\nconst twpLayer = makeTileLayer(\"ab\", \"twp\", 6, 11, 1.5, \"#2d5a47\");\n\n\u002F\u002F Section grid - visible from zoom 11 to 13\nconst secLayer = makeTileLayer(\"ab\", \"sec\", 11, 13, 1.0, \"#4a7c59\");\n\n\u002F\u002F LSD grid - visible from zoom 13 and above\nconst lsdLayer = makeTileLayer(\"ab\", \"lsd\", 13, 20, 0.5, \"#6b9e7a\");\n\nmap.addLayer(twpLayer);\nmap.addLayer(secLayer);\nmap.addLayer(lsdLayer);\n","javascript",[17,1469,1470,1489,1493,1536,1560,1571,1582,1605,1631,1682,1691,1715,1739,1750,1759,1765,1771,1780,1785,1789,1794,1849,1853,1858,1912,1916,1921,1975,1979,1997,2014],{"__ignoreMap":96},[100,1471,1472,1475,1478,1480,1482,1485,1487],{"class":102,"line":103},[100,1473,1474],{"class":500},"const",[100,1476,1477],{"class":504}," TC_TILES",[100,1479,508],{"class":106},[100,1481,511],{"class":157},[100,1483,1484],{"class":161},"https:\u002F\u002Fmaps.townshipcanada.com",[100,1486,158],{"class":157},[100,1488,350],{"class":106},[100,1490,1491],{"class":102,"line":121},[100,1492,525],{"emptyLinePlaceholder":524},[100,1494,1495,1498,1501,1503,1507,1509,1512,1514,1517,1519,1522,1524,1527,1529,1532,1534],{"class":102,"line":131},[100,1496,1497],{"class":500},"function",[100,1499,1500],{"class":560}," makeTileLayer",[100,1502,565],{"class":106},[100,1504,1506],{"class":1505},"sqOPj","province",[100,1508,721],{"class":106},[100,1510,1511],{"class":1505}," layer",[100,1513,721],{"class":106},[100,1515,1516],{"class":1505}," minZoom",[100,1518,721],{"class":106},[100,1520,1521],{"class":1505}," maxZoom",[100,1523,721],{"class":106},[100,1525,1526],{"class":1505}," lineWidth",[100,1528,721],{"class":106},[100,1530,1531],{"class":1505}," lineColor",[100,1533,603],{"class":106},[100,1535,333],{"class":106},[100,1537,1538,1542,1544,1546,1548,1550,1552,1555,1558],{"class":102,"line":142},[100,1539,1541],{"class":1540},"siDh9","  return",[100,1543,546],{"class":545},[100,1545,549],{"class":504},[100,1547,552],{"class":106},[100,1549,555],{"class":504},[100,1551,552],{"class":106},[100,1553,1554],{"class":560},"VectorTile",[100,1556,565],{"class":1557},"sLdnO",[100,1559,568],{"class":106},[100,1561,1562,1565,1567,1569],{"class":102,"line":170},[100,1563,1564],{"class":574},"    minZoom",[100,1566,343],{"class":106},[100,1568,1516],{"class":504},[100,1570,324],{"class":106},[100,1572,1573,1576,1578,1580],{"class":102,"line":192},[100,1574,1575],{"class":574},"    maxZoom",[100,1577,343],{"class":106},[100,1579,1521],{"class":504},[100,1581,324],{"class":106},[100,1583,1584,1587,1589,1591,1593,1595,1597,1599,1601,1603],{"class":102,"line":200},[100,1585,1586],{"class":574},"    source",[100,1588,343],{"class":106},[100,1590,546],{"class":545},[100,1592,549],{"class":504},[100,1594,552],{"class":106},[100,1596,586],{"class":504},[100,1598,552],{"class":106},[100,1600,1554],{"class":560},[100,1602,565],{"class":1557},[100,1604,568],{"class":106},[100,1606,1607,1610,1612,1614,1616,1618,1621,1623,1626,1629],{"class":102,"line":216},[100,1608,1609],{"class":574},"      format",[100,1611,343],{"class":106},[100,1613,546],{"class":545},[100,1615,549],{"class":504},[100,1617,552],{"class":106},[100,1619,1620],{"class":504},"format",[100,1622,552],{"class":106},[100,1624,1625],{"class":560},"MVT",[100,1627,1628],{"class":1557},"()",[100,1630,324],{"class":106},[100,1632,1633,1636,1638,1641,1645,1649,1652,1655,1657,1659,1661,1663,1665,1667,1669,1672,1674,1677,1679],{"class":102,"line":231},[100,1634,1635],{"class":574},"      url",[100,1637,343],{"class":106},[100,1639,1640],{"class":157}," `",[100,1642,1644],{"class":1643},"s8XtY","${",[100,1646,1648],{"class":1647},"su_V2","TC_TILES",[100,1650,1651],{"class":1643},"}",[100,1653,1654],{"class":161},"\u002F",[100,1656,1644],{"class":1643},[100,1658,1506],{"class":1647},[100,1660,1651],{"class":1643},[100,1662,1654],{"class":161},[100,1664,1644],{"class":1643},[100,1666,555],{"class":1647},[100,1668,1651],{"class":1643},[100,1670,1671],{"class":161},"\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=",[100,1673,1644],{"class":1643},[100,1675,1676],{"class":1647},"TC_API_KEY",[100,1678,1651],{"class":1643},[100,1680,1681],{"class":157},"`\n",[100,1683,1684,1687,1689],{"class":102,"line":237},[100,1685,1686],{"class":106},"    }",[100,1688,603],{"class":1557},[100,1690,324],{"class":106},[100,1692,1693,1696,1698,1700,1702,1704,1706,1708,1711,1713],{"class":102,"line":245},[100,1694,1695],{"class":574},"    style",[100,1697,343],{"class":106},[100,1699,546],{"class":545},[100,1701,549],{"class":504},[100,1703,552],{"class":106},[100,1705,312],{"class":504},[100,1707,552],{"class":106},[100,1709,1710],{"class":560},"Style",[100,1712,565],{"class":1557},[100,1714,568],{"class":106},[100,1716,1717,1720,1722,1724,1726,1728,1730,1732,1735,1737],{"class":102,"line":260},[100,1718,1719],{"class":574},"      stroke",[100,1721,343],{"class":106},[100,1723,546],{"class":545},[100,1725,549],{"class":504},[100,1727,552],{"class":106},[100,1729,312],{"class":504},[100,1731,552],{"class":106},[100,1733,1734],{"class":560},"Stroke",[100,1736,565],{"class":1557},[100,1738,568],{"class":106},[100,1740,1741,1744,1746,1748],{"class":102,"line":275},[100,1742,1743],{"class":574},"        color",[100,1745,343],{"class":106},[100,1747,1531],{"class":504},[100,1749,324],{"class":106},[100,1751,1752,1754,1756],{"class":102,"line":280},[100,1753,403],{"class":574},[100,1755,343],{"class":106},[100,1757,1758],{"class":504}," lineWidth\n",[100,1760,1761,1763],{"class":102,"line":307},[100,1762,600],{"class":106},[100,1764,752],{"class":1557},[100,1766,1767,1769],{"class":102,"line":317},[100,1768,1686],{"class":106},[100,1770,752],{"class":1557},[100,1772,1773,1776,1778],{"class":102,"line":327},[100,1774,1775],{"class":106},"  }",[100,1777,603],{"class":1557},[100,1779,350],{"class":106},[100,1781,1782],{"class":102,"line":336},[100,1783,1784],{"class":106},"}\n",[100,1786,1787],{"class":102,"line":353},[100,1788,525],{"emptyLinePlaceholder":524},[100,1790,1791],{"class":102,"line":365},[100,1792,1793],{"class":531},"\u002F\u002F Township grid - visible from zoom 6 to 11\n",[100,1795,1796,1798,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821,1823,1826,1828,1831,1833,1836,1838,1840,1843,1845,1847],{"class":102,"line":382},[100,1797,1474],{"class":500},[100,1799,1800],{"class":504}," twpLayer",[100,1802,508],{"class":106},[100,1804,1500],{"class":560},[100,1806,565],{"class":564},[100,1808,158],{"class":157},[100,1810,826],{"class":161},[100,1812,158],{"class":157},[100,1814,721],{"class":106},[100,1816,511],{"class":157},[100,1818,873],{"class":161},[100,1820,158],{"class":157},[100,1822,721],{"class":106},[100,1824,1825],{"class":346}," 6",[100,1827,721],{"class":106},[100,1829,1830],{"class":346}," 11",[100,1832,721],{"class":106},[100,1834,1835],{"class":346}," 1.5",[100,1837,721],{"class":106},[100,1839,511],{"class":157},[100,1841,1842],{"class":161},"#2d5a47",[100,1844,158],{"class":157},[100,1846,603],{"class":564},[100,1848,350],{"class":106},[100,1850,1851],{"class":102,"line":388},[100,1852,525],{"emptyLinePlaceholder":524},[100,1854,1855],{"class":102,"line":400},[100,1856,1857],{"class":531},"\u002F\u002F Section grid - visible from zoom 11 to 13\n",[100,1859,1860,1862,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891,1894,1896,1899,1901,1903,1906,1908,1910],{"class":102,"line":414},[100,1861,1474],{"class":500},[100,1863,1864],{"class":504}," secLayer",[100,1866,508],{"class":106},[100,1868,1500],{"class":560},[100,1870,565],{"class":564},[100,1872,158],{"class":157},[100,1874,826],{"class":161},[100,1876,158],{"class":157},[100,1878,721],{"class":106},[100,1880,511],{"class":157},[100,1882,915],{"class":161},[100,1884,158],{"class":157},[100,1886,721],{"class":106},[100,1888,1830],{"class":346},[100,1890,721],{"class":106},[100,1892,1893],{"class":346}," 13",[100,1895,721],{"class":106},[100,1897,1898],{"class":346}," 1.0",[100,1900,721],{"class":106},[100,1902,511],{"class":157},[100,1904,1905],{"class":161},"#4a7c59",[100,1907,158],{"class":157},[100,1909,603],{"class":564},[100,1911,350],{"class":106},[100,1913,1914],{"class":102,"line":428},[100,1915,525],{"emptyLinePlaceholder":524},[100,1917,1918],{"class":102,"line":433},[100,1919,1920],{"class":531},"\u002F\u002F LSD grid - visible from zoom 13 and above\n",[100,1922,1923,1925,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954,1957,1959,1962,1964,1966,1969,1971,1973],{"class":102,"line":443},[100,1924,1474],{"class":500},[100,1926,1927],{"class":504}," lsdLayer",[100,1929,508],{"class":106},[100,1931,1500],{"class":560},[100,1933,565],{"class":564},[100,1935,158],{"class":157},[100,1937,826],{"class":161},[100,1939,158],{"class":157},[100,1941,721],{"class":106},[100,1943,511],{"class":157},[100,1945,994],{"class":161},[100,1947,158],{"class":157},[100,1949,721],{"class":106},[100,1951,1893],{"class":346},[100,1953,721],{"class":106},[100,1955,1956],{"class":346}," 20",[100,1958,721],{"class":106},[100,1960,1961],{"class":346}," 0.5",[100,1963,721],{"class":106},[100,1965,511],{"class":157},[100,1967,1968],{"class":161},"#6b9e7a",[100,1970,158],{"class":157},[100,1972,603],{"class":564},[100,1974,350],{"class":106},[100,1976,1977],{"class":102,"line":453},[100,1978,525],{"emptyLinePlaceholder":524},[100,1980,1981,1983,1985,1988,1990,1993,1995],{"class":102,"line":463},[100,1982,395],{"class":504},[100,1984,552],{"class":106},[100,1986,1987],{"class":560},"addLayer",[100,1989,565],{"class":564},[100,1991,1992],{"class":504},"twpLayer",[100,1994,603],{"class":564},[100,1996,350],{"class":106},[100,1998,1999,2001,2003,2005,2007,2010,2012],{"class":102,"line":488},[100,2000,395],{"class":504},[100,2002,552],{"class":106},[100,2004,1987],{"class":560},[100,2006,565],{"class":564},[100,2008,2009],{"class":504},"secLayer",[100,2011,603],{"class":564},[100,2013,350],{"class":106},[100,2015,2016,2018,2020,2022,2024,2027,2029],{"class":102,"line":497},[100,2017,395],{"class":504},[100,2019,552],{"class":106},[100,2021,1987],{"class":560},[100,2023,565],{"class":564},[100,2025,2026],{"class":504},"lsdLayer",[100,2028,603],{"class":564},[100,2030,350],{"class":106},[10,2032,2033,2034,2038],{},"Zoom in from Alberta. Township borders load first, then sections appear at mid-zoom, and individual LSDs appear when you zoom close. This mirrors the actual ",[67,2035,2037],{"href":2036},"\u002Fguides\u002Fdominion-land-survey-system","DLS survey hierarchy"," - each level subdivides the one above.",[10,2040,2041,2042,827,2045,827,2048,2051,2052,2055],{},"To show grids for other provinces, create additional layers using ",[17,2043,2044],{},"'sk'",[17,2046,2047],{},"'mb'",[17,2049,2050],{},"'bc'",", or ",[17,2053,2054],{},"'on'"," as the province argument. The tile URL structure is identical.",[26,2057,2059],{"id":2058},"step-3-zoom-dependent-styling-with-style-functions","Step 3: Zoom-dependent styling with style functions",[10,2061,2062,2063,2066],{},"The approach above uses a fixed style per layer. A more flexible alternative is a single layer with a ",[62,2064,2065],{},"style function"," that reads the current map resolution and adjusts stroke width accordingly. This gives you one layer that smoothly transitions across zoom levels.",[91,2068,2070],{"className":1465,"code":2069,"language":1467,"meta":96,"style":96},"\u002F\u002F Resolution thresholds (EPSG:3857 metres per pixel)\nconst RES_TWP = 4000; \u002F\u002F ~zoom 7\nconst RES_SEC = 600; \u002F\u002F ~zoom 11\nconst RES_LSD = 150; \u002F\u002F ~zoom 13\n\nfunction gridStyleFn(feature, resolution) {\n  let width, color;\n\n  if (resolution > RES_TWP) {\n    width = 2;\n    color = \"#2d5a47\";\n  } else if (resolution > RES_SEC) {\n    width = 1.5;\n    color = \"#2d5a47\";\n  } else if (resolution > RES_LSD) {\n    width = 1;\n    color = \"#4a7c59\";\n  } else {\n    width = 0.5;\n    color = \"#6b9e7a\";\n  }\n\n  return new ol.style.Style({\n    stroke: new ol.style.Stroke({ color, width })\n  });\n}\n\n\u002F\u002F Single combined layer using a style function\nconst gridLayer = new ol.layer.VectorTile({\n  source: new ol.source.VectorTile({\n    format: new ol.format.MVT(),\n    url: `${TC_TILES}\u002Fab\u002Flsd\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=${TC_API_KEY}`\n  }),\n  style: gridStyleFn\n});\n\nmap.addLayer(gridLayer);\n",[17,2071,2072,2077,2095,2112,2129,2133,2154,2169,2173,2193,2205,2220,2242,2252,2266,2286,2297,2311,2319,2329,2343,2348,2352,2372,2407,2415,2419,2423,2428,2453,2476,2499,2525,2533,2543,2551,2555],{"__ignoreMap":96},[100,2073,2074],{"class":102,"line":103},[100,2075,2076],{"class":531},"\u002F\u002F Resolution thresholds (EPSG:3857 metres per pixel)\n",[100,2078,2079,2081,2084,2086,2089,2092],{"class":102,"line":121},[100,2080,1474],{"class":500},[100,2082,2083],{"class":504}," RES_TWP",[100,2085,508],{"class":106},[100,2087,2088],{"class":346}," 4000",[100,2090,2091],{"class":106},";",[100,2093,2094],{"class":531}," \u002F\u002F ~zoom 7\n",[100,2096,2097,2099,2102,2104,2107,2109],{"class":102,"line":131},[100,2098,1474],{"class":500},[100,2100,2101],{"class":504}," RES_SEC",[100,2103,508],{"class":106},[100,2105,2106],{"class":346}," 600",[100,2108,2091],{"class":106},[100,2110,2111],{"class":531}," \u002F\u002F ~zoom 11\n",[100,2113,2114,2116,2119,2121,2124,2126],{"class":102,"line":142},[100,2115,1474],{"class":500},[100,2117,2118],{"class":504}," RES_LSD",[100,2120,508],{"class":106},[100,2122,2123],{"class":346}," 150",[100,2125,2091],{"class":106},[100,2127,2128],{"class":531}," \u002F\u002F ~zoom 13\n",[100,2130,2131],{"class":102,"line":170},[100,2132,525],{"emptyLinePlaceholder":524},[100,2134,2135,2137,2140,2142,2145,2147,2150,2152],{"class":102,"line":192},[100,2136,1497],{"class":500},[100,2138,2139],{"class":560}," gridStyleFn",[100,2141,565],{"class":106},[100,2143,2144],{"class":1505},"feature",[100,2146,721],{"class":106},[100,2148,2149],{"class":1505}," resolution",[100,2151,603],{"class":106},[100,2153,333],{"class":106},[100,2155,2156,2159,2162,2164,2167],{"class":102,"line":200},[100,2157,2158],{"class":500},"  let",[100,2160,2161],{"class":504}," width",[100,2163,721],{"class":106},[100,2165,2166],{"class":504}," color",[100,2168,350],{"class":106},[100,2170,2171],{"class":102,"line":216},[100,2172,525],{"emptyLinePlaceholder":524},[100,2174,2175,2178,2181,2184,2187,2189,2191],{"class":102,"line":231},[100,2176,2177],{"class":1540},"  if",[100,2179,2180],{"class":1557}," (",[100,2182,2183],{"class":504},"resolution",[100,2185,2186],{"class":106}," >",[100,2188,2083],{"class":504},[100,2190,603],{"class":1557},[100,2192,333],{"class":106},[100,2194,2195,2198,2200,2203],{"class":102,"line":237},[100,2196,2197],{"class":504},"    width",[100,2199,508],{"class":106},[100,2201,2202],{"class":346}," 2",[100,2204,350],{"class":106},[100,2206,2207,2210,2212,2214,2216,2218],{"class":102,"line":245},[100,2208,2209],{"class":504},"    color",[100,2211,508],{"class":106},[100,2213,511],{"class":157},[100,2215,1842],{"class":161},[100,2217,158],{"class":157},[100,2219,350],{"class":106},[100,2221,2222,2224,2227,2230,2232,2234,2236,2238,2240],{"class":102,"line":260},[100,2223,1775],{"class":106},[100,2225,2226],{"class":1540}," else",[100,2228,2229],{"class":1540}," if",[100,2231,2180],{"class":1557},[100,2233,2183],{"class":504},[100,2235,2186],{"class":106},[100,2237,2101],{"class":504},[100,2239,603],{"class":1557},[100,2241,333],{"class":106},[100,2243,2244,2246,2248,2250],{"class":102,"line":275},[100,2245,2197],{"class":504},[100,2247,508],{"class":106},[100,2249,1835],{"class":346},[100,2251,350],{"class":106},[100,2253,2254,2256,2258,2260,2262,2264],{"class":102,"line":280},[100,2255,2209],{"class":504},[100,2257,508],{"class":106},[100,2259,511],{"class":157},[100,2261,1842],{"class":161},[100,2263,158],{"class":157},[100,2265,350],{"class":106},[100,2267,2268,2270,2272,2274,2276,2278,2280,2282,2284],{"class":102,"line":307},[100,2269,1775],{"class":106},[100,2271,2226],{"class":1540},[100,2273,2229],{"class":1540},[100,2275,2180],{"class":1557},[100,2277,2183],{"class":504},[100,2279,2186],{"class":106},[100,2281,2118],{"class":504},[100,2283,603],{"class":1557},[100,2285,333],{"class":106},[100,2287,2288,2290,2292,2295],{"class":102,"line":317},[100,2289,2197],{"class":504},[100,2291,508],{"class":106},[100,2293,2294],{"class":346}," 1",[100,2296,350],{"class":106},[100,2298,2299,2301,2303,2305,2307,2309],{"class":102,"line":327},[100,2300,2209],{"class":504},[100,2302,508],{"class":106},[100,2304,511],{"class":157},[100,2306,1905],{"class":161},[100,2308,158],{"class":157},[100,2310,350],{"class":106},[100,2312,2313,2315,2317],{"class":102,"line":336},[100,2314,1775],{"class":106},[100,2316,2226],{"class":1540},[100,2318,333],{"class":106},[100,2320,2321,2323,2325,2327],{"class":102,"line":353},[100,2322,2197],{"class":504},[100,2324,508],{"class":106},[100,2326,1961],{"class":346},[100,2328,350],{"class":106},[100,2330,2331,2333,2335,2337,2339,2341],{"class":102,"line":365},[100,2332,2209],{"class":504},[100,2334,508],{"class":106},[100,2336,511],{"class":157},[100,2338,1968],{"class":161},[100,2340,158],{"class":157},[100,2342,350],{"class":106},[100,2344,2345],{"class":102,"line":382},[100,2346,2347],{"class":106},"  }\n",[100,2349,2350],{"class":102,"line":388},[100,2351,525],{"emptyLinePlaceholder":524},[100,2353,2354,2356,2358,2360,2362,2364,2366,2368,2370],{"class":102,"line":400},[100,2355,1541],{"class":1540},[100,2357,546],{"class":545},[100,2359,549],{"class":504},[100,2361,552],{"class":106},[100,2363,312],{"class":504},[100,2365,552],{"class":106},[100,2367,1710],{"class":560},[100,2369,565],{"class":1557},[100,2371,568],{"class":106},[100,2373,2374,2377,2379,2381,2383,2385,2387,2389,2391,2393,2396,2398,2400,2402,2405],{"class":102,"line":414},[100,2375,2376],{"class":574},"    stroke",[100,2378,343],{"class":106},[100,2380,546],{"class":545},[100,2382,549],{"class":504},[100,2384,552],{"class":106},[100,2386,312],{"class":504},[100,2388,552],{"class":106},[100,2390,1734],{"class":560},[100,2392,565],{"class":1557},[100,2394,2395],{"class":106},"{",[100,2397,2166],{"class":504},[100,2399,721],{"class":106},[100,2401,2161],{"class":504},[100,2403,2404],{"class":106}," }",[100,2406,752],{"class":1557},[100,2408,2409,2411,2413],{"class":102,"line":428},[100,2410,1775],{"class":106},[100,2412,603],{"class":1557},[100,2414,350],{"class":106},[100,2416,2417],{"class":102,"line":433},[100,2418,1784],{"class":106},[100,2420,2421],{"class":102,"line":443},[100,2422,525],{"emptyLinePlaceholder":524},[100,2424,2425],{"class":102,"line":453},[100,2426,2427],{"class":531},"\u002F\u002F Single combined layer using a style function\n",[100,2429,2430,2432,2435,2437,2439,2441,2443,2445,2447,2449,2451],{"class":102,"line":463},[100,2431,1474],{"class":500},[100,2433,2434],{"class":504}," gridLayer",[100,2436,508],{"class":106},[100,2438,546],{"class":545},[100,2440,549],{"class":504},[100,2442,552],{"class":106},[100,2444,555],{"class":504},[100,2446,552],{"class":106},[100,2448,1554],{"class":560},[100,2450,565],{"class":564},[100,2452,568],{"class":106},[100,2454,2455,2458,2460,2462,2464,2466,2468,2470,2472,2474],{"class":102,"line":488},[100,2456,2457],{"class":574},"  source",[100,2459,343],{"class":106},[100,2461,546],{"class":545},[100,2463,549],{"class":504},[100,2465,552],{"class":106},[100,2467,586],{"class":504},[100,2469,552],{"class":106},[100,2471,1554],{"class":560},[100,2473,565],{"class":564},[100,2475,568],{"class":106},[100,2477,2478,2481,2483,2485,2487,2489,2491,2493,2495,2497],{"class":102,"line":497},[100,2479,2480],{"class":574},"    format",[100,2482,343],{"class":106},[100,2484,546],{"class":545},[100,2486,549],{"class":504},[100,2488,552],{"class":106},[100,2490,1620],{"class":504},[100,2492,552],{"class":106},[100,2494,1625],{"class":560},[100,2496,1628],{"class":564},[100,2498,324],{"class":106},[100,2500,2501,2504,2506,2508,2510,2512,2514,2517,2519,2521,2523],{"class":102,"line":521},[100,2502,2503],{"class":574},"    url",[100,2505,343],{"class":106},[100,2507,1640],{"class":157},[100,2509,1644],{"class":1643},[100,2511,1648],{"class":1647},[100,2513,1651],{"class":1643},[100,2515,2516],{"class":161},"\u002Fab\u002Flsd\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=",[100,2518,1644],{"class":1643},[100,2520,1676],{"class":1647},[100,2522,1651],{"class":1643},[100,2524,1681],{"class":157},[100,2526,2527,2529,2531],{"class":102,"line":528},[100,2528,1775],{"class":106},[100,2530,603],{"class":564},[100,2532,324],{"class":106},[100,2534,2535,2538,2540],{"class":102,"line":535},[100,2536,2537],{"class":574},"  style",[100,2539,343],{"class":106},[100,2541,2542],{"class":504}," gridStyleFn\n",[100,2544,2545,2547,2549],{"class":102,"line":571},[100,2546,1651],{"class":106},[100,2548,603],{"class":564},[100,2550,350],{"class":106},[100,2552,2553],{"class":102,"line":597},[100,2554,525],{"emptyLinePlaceholder":524},[100,2556,2557,2559,2561,2563,2565,2568,2570],{"class":102,"line":608},[100,2558,395],{"class":504},[100,2560,552],{"class":106},[100,2562,1987],{"class":560},[100,2564,565],{"class":564},[100,2566,2567],{"class":504},"gridLayer",[100,2569,603],{"class":564},[100,2571,350],{"class":106},[10,2573,2574],{},"The LSD tileset contains all smaller grid divisions, so one tile source covers township, section, and LSD boundaries. The style function then adjusts line thickness based on how zoomed in the user is.",[26,2576,2578],{"id":2577},"step-4-search-and-pan-to-a-location","Step 4: Search and pan to a location",[10,2580,2581,2582,2586,2587,2590],{},"Use the ",[67,2583,2585],{"href":2584},"\u002Fguides\u002Fapi-integration","Search API"," to convert a legal land description like ",[17,2588,2589],{},"NW-25-24-1-W5"," to coordinates and move the map to that location.",[802,2592,2594],{"id":2593},"search-api-endpoint","Search API endpoint",[91,2596,2599],{"className":2597,"code":2598,"language":811},[809],"GET https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location={query}\nX-API-Key: YOUR_API_KEY\n",[17,2600,2598],{"__ignoreMap":96},[802,2602,2604],{"id":2603},"response-format","Response format",[10,2606,2607],{},"The Search API returns a GeoJSON FeatureCollection with two features: a polygon (the parcel boundary) and a point (the centroid):",[91,2609,2613],{"className":2610,"code":2611,"language":2612,"meta":96,"style":96},"language-json shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"geometry\": {\n        \"type\": \"MultiPolygon\",\n        \"coordinates\": [[[-114.0625, 51.5625], ...]]\n      },\n      \"properties\": {\n        \"descriptor\": \"NW-25-24-1-W5\",\n        \"quarter_section\": \"NW\",\n        \"section\": 25,\n        \"township\": 24,\n        \"range\": 1,\n        \"meridian\": \"W5\",\n        \"survey_system\": \"DLS\",\n        \"province\": \"AB\"\n      }\n    },\n    {\n      \"type\": \"Feature\",\n      \"geometry\": {\n        \"type\": \"Point\",\n        \"coordinates\": [-114.03125, 51.53125]\n      },\n      \"properties\": {\n        \"descriptor\": \"NW-25-24-1-W5\",\n        \"shape\": \"centroid\"\n      }\n    }\n  ]\n}\n","json",[17,2614,2615,2619,2642,2656,2661,2682,2695,2716,2748,2753,2766,2785,2805,2821,2837,2852,2872,2892,2909,2913,2918,2922,2940,2952,2971,2994,2998,3010,3028,3046,3050,3055,3060],{"__ignoreMap":96},[100,2616,2617],{"class":102,"line":103},[100,2618,568],{"class":106},[100,2620,2621,2625,2629,2631,2633,2635,2638,2640],{"class":102,"line":121},[100,2622,2624],{"class":2623},"s4Jsk","  \"",[100,2626,2628],{"class":2627},"sLorS","type",[100,2630,158],{"class":2623},[100,2632,343],{"class":106},[100,2634,511],{"class":157},[100,2636,2637],{"class":161},"FeatureCollection",[100,2639,158],{"class":157},[100,2641,324],{"class":106},[100,2643,2644,2646,2649,2651,2653],{"class":102,"line":131},[100,2645,2624],{"class":2623},[100,2647,2648],{"class":2627},"features",[100,2650,158],{"class":2623},[100,2652,343],{"class":106},[100,2654,2655],{"class":106}," [\n",[100,2657,2658],{"class":102,"line":142},[100,2659,2660],{"class":106},"    {\n",[100,2662,2663,2666,2669,2671,2673,2675,2678,2680],{"class":102,"line":170},[100,2664,2665],{"class":2623},"      \"",[100,2667,2628],{"class":2668},"sa2tF",[100,2670,158],{"class":2623},[100,2672,343],{"class":106},[100,2674,511],{"class":157},[100,2676,2677],{"class":161},"Feature",[100,2679,158],{"class":157},[100,2681,324],{"class":106},[100,2683,2684,2686,2689,2691,2693],{"class":102,"line":192},[100,2685,2665],{"class":2623},[100,2687,2688],{"class":2668},"geometry",[100,2690,158],{"class":2623},[100,2692,343],{"class":106},[100,2694,333],{"class":106},[100,2696,2697,2700,2703,2705,2707,2709,2712,2714],{"class":102,"line":200},[100,2698,2699],{"class":2623},"        \"",[100,2701,2628],{"class":2702},"skNjk",[100,2704,158],{"class":2623},[100,2706,343],{"class":106},[100,2708,511],{"class":157},[100,2710,2711],{"class":161},"MultiPolygon",[100,2713,158],{"class":157},[100,2715,324],{"class":106},[100,2717,2718,2720,2723,2725,2727,2730,2733,2735,2738,2741,2745],{"class":102,"line":216},[100,2719,2699],{"class":2623},[100,2721,2722],{"class":2702},"coordinates",[100,2724,158],{"class":2623},[100,2726,343],{"class":106},[100,2728,2729],{"class":106}," [[[",[100,2731,2732],{"class":346},"-114.0625",[100,2734,721],{"class":106},[100,2736,2737],{"class":346}," 51.5625",[100,2739,2740],{"class":106},"],",[100,2742,2744],{"class":2743},"srjyR"," ...",[100,2746,2747],{"class":106},"]]\n",[100,2749,2750],{"class":102,"line":231},[100,2751,2752],{"class":106},"      },\n",[100,2754,2755,2757,2760,2762,2764],{"class":102,"line":237},[100,2756,2665],{"class":2623},[100,2758,2759],{"class":2668},"properties",[100,2761,158],{"class":2623},[100,2763,343],{"class":106},[100,2765,333],{"class":106},[100,2767,2768,2770,2773,2775,2777,2779,2781,2783],{"class":102,"line":245},[100,2769,2699],{"class":2623},[100,2771,2772],{"class":2702},"descriptor",[100,2774,158],{"class":2623},[100,2776,343],{"class":106},[100,2778,511],{"class":157},[100,2780,2589],{"class":161},[100,2782,158],{"class":157},[100,2784,324],{"class":106},[100,2786,2787,2789,2792,2794,2796,2798,2801,2803],{"class":102,"line":260},[100,2788,2699],{"class":2623},[100,2790,2791],{"class":2702},"quarter_section",[100,2793,158],{"class":2623},[100,2795,343],{"class":106},[100,2797,511],{"class":157},[100,2799,2800],{"class":161},"NW",[100,2802,158],{"class":157},[100,2804,324],{"class":106},[100,2806,2807,2809,2812,2814,2816,2819],{"class":102,"line":275},[100,2808,2699],{"class":2623},[100,2810,2811],{"class":2702},"section",[100,2813,158],{"class":2623},[100,2815,343],{"class":106},[100,2817,2818],{"class":346}," 25",[100,2820,324],{"class":106},[100,2822,2823,2825,2828,2830,2832,2835],{"class":102,"line":280},[100,2824,2699],{"class":2623},[100,2826,2827],{"class":2702},"township",[100,2829,158],{"class":2623},[100,2831,343],{"class":106},[100,2833,2834],{"class":346}," 24",[100,2836,324],{"class":106},[100,2838,2839,2841,2844,2846,2848,2850],{"class":102,"line":307},[100,2840,2699],{"class":2623},[100,2842,2843],{"class":2702},"range",[100,2845,158],{"class":2623},[100,2847,343],{"class":106},[100,2849,2294],{"class":346},[100,2851,324],{"class":106},[100,2853,2854,2856,2859,2861,2863,2865,2868,2870],{"class":102,"line":317},[100,2855,2699],{"class":2623},[100,2857,2858],{"class":2702},"meridian",[100,2860,158],{"class":2623},[100,2862,343],{"class":106},[100,2864,511],{"class":157},[100,2866,2867],{"class":161},"W5",[100,2869,158],{"class":157},[100,2871,324],{"class":106},[100,2873,2874,2876,2879,2881,2883,2885,2888,2890],{"class":102,"line":327},[100,2875,2699],{"class":2623},[100,2877,2878],{"class":2702},"survey_system",[100,2880,158],{"class":2623},[100,2882,343],{"class":106},[100,2884,511],{"class":157},[100,2886,2887],{"class":161},"DLS",[100,2889,158],{"class":157},[100,2891,324],{"class":106},[100,2893,2894,2896,2898,2900,2902,2904,2907],{"class":102,"line":336},[100,2895,2699],{"class":2623},[100,2897,1506],{"class":2702},[100,2899,158],{"class":2623},[100,2901,343],{"class":106},[100,2903,511],{"class":157},[100,2905,2906],{"class":161},"AB",[100,2908,213],{"class":157},[100,2910,2911],{"class":102,"line":353},[100,2912,385],{"class":106},[100,2914,2915],{"class":102,"line":365},[100,2916,2917],{"class":106},"    },\n",[100,2919,2920],{"class":102,"line":382},[100,2921,2660],{"class":106},[100,2923,2924,2926,2928,2930,2932,2934,2936,2938],{"class":102,"line":388},[100,2925,2665],{"class":2623},[100,2927,2628],{"class":2668},[100,2929,158],{"class":2623},[100,2931,343],{"class":106},[100,2933,511],{"class":157},[100,2935,2677],{"class":161},[100,2937,158],{"class":157},[100,2939,324],{"class":106},[100,2941,2942,2944,2946,2948,2950],{"class":102,"line":400},[100,2943,2665],{"class":2623},[100,2945,2688],{"class":2668},[100,2947,158],{"class":2623},[100,2949,343],{"class":106},[100,2951,333],{"class":106},[100,2953,2954,2956,2958,2960,2962,2964,2967,2969],{"class":102,"line":414},[100,2955,2699],{"class":2623},[100,2957,2628],{"class":2702},[100,2959,158],{"class":2623},[100,2961,343],{"class":106},[100,2963,511],{"class":157},[100,2965,2966],{"class":161},"Point",[100,2968,158],{"class":157},[100,2970,324],{"class":106},[100,2972,2973,2975,2977,2979,2981,2983,2986,2988,2991],{"class":102,"line":428},[100,2974,2699],{"class":2623},[100,2976,2722],{"class":2702},[100,2978,158],{"class":2623},[100,2980,343],{"class":106},[100,2982,660],{"class":106},[100,2984,2985],{"class":346},"-114.03125",[100,2987,721],{"class":106},[100,2989,2990],{"class":346}," 51.53125",[100,2992,2993],{"class":106},"]\n",[100,2995,2996],{"class":102,"line":433},[100,2997,2752],{"class":106},[100,2999,3000,3002,3004,3006,3008],{"class":102,"line":443},[100,3001,2665],{"class":2623},[100,3003,2759],{"class":2668},[100,3005,158],{"class":2623},[100,3007,343],{"class":106},[100,3009,333],{"class":106},[100,3011,3012,3014,3016,3018,3020,3022,3024,3026],{"class":102,"line":453},[100,3013,2699],{"class":2623},[100,3015,2772],{"class":2702},[100,3017,158],{"class":2623},[100,3019,343],{"class":106},[100,3021,511],{"class":157},[100,3023,2589],{"class":161},[100,3025,158],{"class":157},[100,3027,324],{"class":106},[100,3029,3030,3032,3035,3037,3039,3041,3044],{"class":102,"line":463},[100,3031,2699],{"class":2623},[100,3033,3034],{"class":2702},"shape",[100,3036,158],{"class":2623},[100,3038,343],{"class":106},[100,3040,511],{"class":157},[100,3042,3043],{"class":161},"centroid",[100,3045,213],{"class":157},[100,3047,3048],{"class":102,"line":488},[100,3049,385],{"class":106},[100,3051,3052],{"class":102,"line":497},[100,3053,3054],{"class":106},"    }\n",[100,3056,3057],{"class":102,"line":521},[100,3058,3059],{"class":106},"  ]\n",[100,3061,3062],{"class":102,"line":528},[100,3063,1784],{"class":106},[802,3065,3067],{"id":3066},"search-implementation","Search implementation",[10,3069,3070],{},"Add a vector layer to hold the highlighted search result, then fetch from the Search API and add the polygon as a feature:",[91,3072,3074],{"className":1465,"code":3073,"language":1467,"meta":96,"style":96},"\u002F\u002F Layer to display the highlighted parcel boundary\nconst searchResultLayer = new ol.layer.Vector({\n  source: new ol.source.Vector(),\n  style: new ol.style.Style({\n    stroke: new ol.style.Stroke({ color: \"#2d5a47\", width: 2 }),\n    fill: new ol.style.Fill({ color: \"rgba(45, 90, 71, 0.15)\" })\n  })\n});\nmap.addLayer(searchResultLayer);\n\nconst TC_API = \"https:\u002F\u002Fdeveloper.townshipcanada.com\";\nconst geojsonFormat = new ol.format.GeoJSON();\n\nasync function searchAndPanTo(query) {\n  const response = await fetch(\n    `${TC_API}\u002Fsearch\u002Flegal-location?location=${encodeURIComponent(query)}`,\n    { headers: { \"X-API-Key\": TC_API_KEY } }\n  );\n\n  const data = await response.json();\n\n  if (!data.features || data.features.length === 0) {\n    console.error(\"No results found for:\", query);\n    return;\n  }\n\n  const centroid = data.features.find((f) => f.properties.shape === \"centroid\");\n  const polygon = data.features.find((f) => f.geometry.type === \"MultiPolygon\");\n\n  if (!centroid) return;\n\n  \u002F\u002F Pan and zoom to the centroid\n  const [lng, lat] = centroid.geometry.coordinates;\n  map.getView().animate({\n    center: ol.proj.fromLonLat([lng, lat]),\n    zoom: 14,\n    duration: 1500\n  });\n\n  \u002F\u002F Draw the parcel boundary\n  if (polygon) {\n    searchResultLayer.getSource().clear();\n\n    const feature = geojsonFormat.readFeature(polygon, {\n      dataProjection: \"EPSG:4326\",\n      featureProjection: \"EPSG:3857\"\n    });\n    searchResultLayer.getSource().addFeature(feature);\n  }\n}\n\n\u002F\u002F Example: search for a quarter section near Edmonton\nsearchAndPanTo(\"NW-25-24-1-W5\");\n",[17,3075,3076,3081,3107,3129,3151,3197,3236,3242,3250,3267,3271,3289,3315,3319,3339,3358,3391,3421,3428,3432,3453,3457,3497,3525,3532,3536,3540,3596,3647,3651,3668,3672,3677,3707,3728,3757,3769,3779,3787,3791,3796,3809,3830,3834,3859,3875,3889,3897,3920,3925,3930,3935,3941],{"__ignoreMap":96},[100,3077,3078],{"class":102,"line":103},[100,3079,3080],{"class":531},"\u002F\u002F Layer to display the highlighted parcel boundary\n",[100,3082,3083,3085,3088,3090,3092,3094,3096,3098,3100,3103,3105],{"class":102,"line":121},[100,3084,1474],{"class":500},[100,3086,3087],{"class":504}," searchResultLayer",[100,3089,508],{"class":106},[100,3091,546],{"class":545},[100,3093,549],{"class":504},[100,3095,552],{"class":106},[100,3097,555],{"class":504},[100,3099,552],{"class":106},[100,3101,3102],{"class":560},"Vector",[100,3104,565],{"class":564},[100,3106,568],{"class":106},[100,3108,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127],{"class":102,"line":131},[100,3110,2457],{"class":574},[100,3112,343],{"class":106},[100,3114,546],{"class":545},[100,3116,549],{"class":504},[100,3118,552],{"class":106},[100,3120,586],{"class":504},[100,3122,552],{"class":106},[100,3124,3102],{"class":560},[100,3126,1628],{"class":564},[100,3128,324],{"class":106},[100,3130,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149],{"class":102,"line":142},[100,3132,2537],{"class":574},[100,3134,343],{"class":106},[100,3136,546],{"class":545},[100,3138,549],{"class":504},[100,3140,552],{"class":106},[100,3142,312],{"class":504},[100,3144,552],{"class":106},[100,3146,1710],{"class":560},[100,3148,565],{"class":564},[100,3150,568],{"class":106},[100,3152,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195],{"class":102,"line":170},[100,3154,2376],{"class":574},[100,3156,343],{"class":106},[100,3158,546],{"class":545},[100,3160,549],{"class":504},[100,3162,552],{"class":106},[100,3164,312],{"class":504},[100,3166,552],{"class":106},[100,3168,1734],{"class":560},[100,3170,565],{"class":564},[100,3172,2395],{"class":106},[100,3174,2166],{"class":574},[100,3176,343],{"class":106},[100,3178,511],{"class":157},[100,3180,1842],{"class":161},[100,3182,158],{"class":157},[100,3184,721],{"class":106},[100,3186,2161],{"class":574},[100,3188,343],{"class":106},[100,3190,2202],{"class":346},[100,3192,2404],{"class":106},[100,3194,603],{"class":564},[100,3196,324],{"class":106},[100,3198,3199,3202,3204,3206,3208,3210,3212,3214,3217,3219,3221,3223,3225,3227,3230,3232,3234],{"class":102,"line":192},[100,3200,3201],{"class":574},"    fill",[100,3203,343],{"class":106},[100,3205,546],{"class":545},[100,3207,549],{"class":504},[100,3209,552],{"class":106},[100,3211,312],{"class":504},[100,3213,552],{"class":106},[100,3215,3216],{"class":560},"Fill",[100,3218,565],{"class":564},[100,3220,2395],{"class":106},[100,3222,2166],{"class":574},[100,3224,343],{"class":106},[100,3226,511],{"class":157},[100,3228,3229],{"class":161},"rgba(45, 90, 71, 0.15)",[100,3231,158],{"class":157},[100,3233,2404],{"class":106},[100,3235,752],{"class":564},[100,3237,3238,3240],{"class":102,"line":200},[100,3239,1775],{"class":106},[100,3241,752],{"class":564},[100,3243,3244,3246,3248],{"class":102,"line":216},[100,3245,1651],{"class":106},[100,3247,603],{"class":564},[100,3249,350],{"class":106},[100,3251,3252,3254,3256,3258,3260,3263,3265],{"class":102,"line":231},[100,3253,395],{"class":504},[100,3255,552],{"class":106},[100,3257,1987],{"class":560},[100,3259,565],{"class":564},[100,3261,3262],{"class":504},"searchResultLayer",[100,3264,603],{"class":564},[100,3266,350],{"class":106},[100,3268,3269],{"class":102,"line":237},[100,3270,525],{"emptyLinePlaceholder":524},[100,3272,3273,3275,3278,3280,3282,3285,3287],{"class":102,"line":245},[100,3274,1474],{"class":500},[100,3276,3277],{"class":504}," TC_API",[100,3279,508],{"class":106},[100,3281,511],{"class":157},[100,3283,3284],{"class":161},"https:\u002F\u002Fdeveloper.townshipcanada.com",[100,3286,158],{"class":157},[100,3288,350],{"class":106},[100,3290,3291,3293,3296,3298,3300,3302,3304,3306,3308,3311,3313],{"class":102,"line":260},[100,3292,1474],{"class":500},[100,3294,3295],{"class":504}," geojsonFormat",[100,3297,508],{"class":106},[100,3299,546],{"class":545},[100,3301,549],{"class":504},[100,3303,552],{"class":106},[100,3305,1620],{"class":504},[100,3307,552],{"class":106},[100,3309,3310],{"class":560},"GeoJSON",[100,3312,1628],{"class":564},[100,3314,350],{"class":106},[100,3316,3317],{"class":102,"line":275},[100,3318,525],{"emptyLinePlaceholder":524},[100,3320,3321,3324,3327,3330,3332,3335,3337],{"class":102,"line":280},[100,3322,3323],{"class":500},"async",[100,3325,3326],{"class":500}," function",[100,3328,3329],{"class":560}," searchAndPanTo",[100,3331,565],{"class":106},[100,3333,3334],{"class":1505},"query",[100,3336,603],{"class":106},[100,3338,333],{"class":106},[100,3340,3341,3344,3347,3349,3352,3355],{"class":102,"line":307},[100,3342,3343],{"class":500},"  const",[100,3345,3346],{"class":504}," response",[100,3348,508],{"class":106},[100,3350,3351],{"class":1540}," await",[100,3353,3354],{"class":560}," fetch",[100,3356,3357],{"class":1557},"(\n",[100,3359,3360,3363,3365,3368,3370,3373,3375,3378,3380,3382,3384,3386,3389],{"class":102,"line":317},[100,3361,3362],{"class":157},"    `",[100,3364,1644],{"class":1643},[100,3366,3367],{"class":1647},"TC_API",[100,3369,1651],{"class":1643},[100,3371,3372],{"class":161},"\u002Fsearch\u002Flegal-location?location=",[100,3374,1644],{"class":1643},[100,3376,3377],{"class":560},"encodeURIComponent",[100,3379,565],{"class":564},[100,3381,3334],{"class":1647},[100,3383,603],{"class":564},[100,3385,1651],{"class":1643},[100,3387,3388],{"class":157},"`",[100,3390,324],{"class":106},[100,3392,3393,3396,3399,3401,3404,3406,3410,3412,3414,3416,3418],{"class":102,"line":327},[100,3394,3395],{"class":106},"    {",[100,3397,3398],{"class":574}," headers",[100,3400,343],{"class":106},[100,3402,3403],{"class":106}," {",[100,3405,511],{"class":157},[100,3407,3409],{"class":3408},"sQtxO","X-API-Key",[100,3411,158],{"class":157},[100,3413,343],{"class":106},[100,3415,505],{"class":504},[100,3417,2404],{"class":106},[100,3419,3420],{"class":106}," }\n",[100,3422,3423,3426],{"class":102,"line":336},[100,3424,3425],{"class":1557},"  )",[100,3427,350],{"class":106},[100,3429,3430],{"class":102,"line":353},[100,3431,525],{"emptyLinePlaceholder":524},[100,3433,3434,3436,3439,3441,3443,3445,3447,3449,3451],{"class":102,"line":365},[100,3435,3343],{"class":500},[100,3437,3438],{"class":504}," data",[100,3440,508],{"class":106},[100,3442,3351],{"class":1540},[100,3444,3346],{"class":504},[100,3446,552],{"class":106},[100,3448,2612],{"class":560},[100,3450,1628],{"class":1557},[100,3452,350],{"class":106},[100,3454,3455],{"class":102,"line":382},[100,3456,525],{"emptyLinePlaceholder":524},[100,3458,3459,3461,3463,3466,3469,3471,3473,3476,3478,3480,3482,3484,3488,3491,3493,3495],{"class":102,"line":388},[100,3460,2177],{"class":1540},[100,3462,2180],{"class":1557},[100,3464,3465],{"class":545},"!",[100,3467,3468],{"class":504},"data",[100,3470,552],{"class":106},[100,3472,2648],{"class":504},[100,3474,3475],{"class":545}," ||",[100,3477,3438],{"class":504},[100,3479,552],{"class":106},[100,3481,2648],{"class":504},[100,3483,552],{"class":106},[100,3485,3487],{"class":3486},"s131V","length",[100,3489,3490],{"class":545}," ===",[100,3492,347],{"class":346},[100,3494,603],{"class":1557},[100,3496,333],{"class":106},[100,3498,3499,3502,3504,3507,3509,3511,3514,3516,3518,3521,3523],{"class":102,"line":400},[100,3500,3501],{"class":504},"    console",[100,3503,552],{"class":106},[100,3505,3506],{"class":560},"error",[100,3508,565],{"class":1557},[100,3510,158],{"class":157},[100,3512,3513],{"class":161},"No results found for:",[100,3515,158],{"class":157},[100,3517,721],{"class":106},[100,3519,3520],{"class":504}," query",[100,3522,603],{"class":1557},[100,3524,350],{"class":106},[100,3526,3527,3530],{"class":102,"line":414},[100,3528,3529],{"class":1540},"    return",[100,3531,350],{"class":106},[100,3533,3534],{"class":102,"line":428},[100,3535,2347],{"class":106},[100,3537,3538],{"class":102,"line":433},[100,3539,525],{"emptyLinePlaceholder":524},[100,3541,3542,3544,3547,3549,3551,3553,3555,3557,3560,3562,3564,3567,3569,3573,3576,3578,3580,3582,3584,3586,3588,3590,3592,3594],{"class":102,"line":443},[100,3543,3343],{"class":500},[100,3545,3546],{"class":504}," centroid",[100,3548,508],{"class":106},[100,3550,3438],{"class":504},[100,3552,552],{"class":106},[100,3554,2648],{"class":504},[100,3556,552],{"class":106},[100,3558,3559],{"class":560},"find",[100,3561,565],{"class":1557},[100,3563,565],{"class":106},[100,3565,3566],{"class":1505},"f",[100,3568,603],{"class":106},[100,3570,3572],{"class":3571},"sIOqK"," =>",[100,3574,3575],{"class":504}," f",[100,3577,552],{"class":106},[100,3579,2759],{"class":504},[100,3581,552],{"class":106},[100,3583,3034],{"class":504},[100,3585,3490],{"class":545},[100,3587,511],{"class":157},[100,3589,3043],{"class":161},[100,3591,158],{"class":157},[100,3593,603],{"class":1557},[100,3595,350],{"class":106},[100,3597,3598,3600,3603,3605,3607,3609,3611,3613,3615,3617,3619,3621,3623,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645],{"class":102,"line":453},[100,3599,3343],{"class":500},[100,3601,3602],{"class":504}," polygon",[100,3604,508],{"class":106},[100,3606,3438],{"class":504},[100,3608,552],{"class":106},[100,3610,2648],{"class":504},[100,3612,552],{"class":106},[100,3614,3559],{"class":560},[100,3616,565],{"class":1557},[100,3618,565],{"class":106},[100,3620,3566],{"class":1505},[100,3622,603],{"class":106},[100,3624,3572],{"class":3571},[100,3626,3575],{"class":504},[100,3628,552],{"class":106},[100,3630,2688],{"class":504},[100,3632,552],{"class":106},[100,3634,2628],{"class":504},[100,3636,3490],{"class":545},[100,3638,511],{"class":157},[100,3640,2711],{"class":161},[100,3642,158],{"class":157},[100,3644,603],{"class":1557},[100,3646,350],{"class":106},[100,3648,3649],{"class":102,"line":463},[100,3650,525],{"emptyLinePlaceholder":524},[100,3652,3653,3655,3657,3659,3661,3663,3666],{"class":102,"line":488},[100,3654,2177],{"class":1540},[100,3656,2180],{"class":1557},[100,3658,3465],{"class":545},[100,3660,3043],{"class":504},[100,3662,603],{"class":1557},[100,3664,3665],{"class":1540}," return",[100,3667,350],{"class":106},[100,3669,3670],{"class":102,"line":497},[100,3671,525],{"emptyLinePlaceholder":524},[100,3673,3674],{"class":102,"line":521},[100,3675,3676],{"class":531},"  \u002F\u002F Pan and zoom to the centroid\n",[100,3678,3679,3681,3683,3686,3688,3691,3693,3695,3697,3699,3701,3703,3705],{"class":102,"line":528},[100,3680,3343],{"class":500},[100,3682,660],{"class":106},[100,3684,3685],{"class":504},"lng",[100,3687,721],{"class":106},[100,3689,3690],{"class":504}," lat",[100,3692,666],{"class":106},[100,3694,508],{"class":106},[100,3696,3546],{"class":504},[100,3698,552],{"class":106},[100,3700,2688],{"class":504},[100,3702,552],{"class":106},[100,3704,2722],{"class":504},[100,3706,350],{"class":106},[100,3708,3709,3712,3714,3717,3719,3721,3724,3726],{"class":102,"line":535},[100,3710,3711],{"class":504},"  map",[100,3713,552],{"class":106},[100,3715,3716],{"class":560},"getView",[100,3718,1628],{"class":1557},[100,3720,552],{"class":106},[100,3722,3723],{"class":560},"animate",[100,3725,565],{"class":1557},[100,3727,568],{"class":106},[100,3729,3730,3733,3735,3737,3739,3741,3743,3745,3747,3749,3751,3753,3755],{"class":102,"line":571},[100,3731,3732],{"class":574},"    center",[100,3734,343],{"class":106},[100,3736,549],{"class":504},[100,3738,552],{"class":106},[100,3740,704],{"class":504},[100,3742,552],{"class":106},[100,3744,709],{"class":560},[100,3746,712],{"class":1557},[100,3748,3685],{"class":504},[100,3750,721],{"class":106},[100,3752,3690],{"class":504},[100,3754,727],{"class":1557},[100,3756,324],{"class":106},[100,3758,3759,3762,3764,3767],{"class":102,"line":597},[100,3760,3761],{"class":574},"    zoom",[100,3763,343],{"class":106},[100,3765,3766],{"class":346}," 14",[100,3768,324],{"class":106},[100,3770,3771,3774,3776],{"class":102,"line":608},[100,3772,3773],{"class":574},"    duration",[100,3775,343],{"class":106},[100,3777,3778],{"class":346}," 1500\n",[100,3780,3781,3783,3785],{"class":102,"line":613},[100,3782,1775],{"class":106},[100,3784,603],{"class":1557},[100,3786,350],{"class":106},[100,3788,3789],{"class":102,"line":636},[100,3790,525],{"emptyLinePlaceholder":524},[100,3792,3793],{"class":102,"line":652},[100,3794,3795],{"class":531},"  \u002F\u002F Draw the parcel boundary\n",[100,3797,3798,3800,3802,3805,3807],{"class":102,"line":671},[100,3799,2177],{"class":1540},[100,3801,2180],{"class":1557},[100,3803,3804],{"class":504},"polygon",[100,3806,603],{"class":1557},[100,3808,333],{"class":106},[100,3810,3811,3814,3816,3819,3821,3823,3826,3828],{"class":102,"line":692},[100,3812,3813],{"class":504},"    searchResultLayer",[100,3815,552],{"class":106},[100,3817,3818],{"class":560},"getSource",[100,3820,1628],{"class":1557},[100,3822,552],{"class":106},[100,3824,3825],{"class":560},"clear",[100,3827,1628],{"class":1557},[100,3829,350],{"class":106},[100,3831,3832],{"class":102,"line":735},[100,3833,525],{"emptyLinePlaceholder":524},[100,3835,3836,3839,3842,3844,3846,3848,3851,3853,3855,3857],{"class":102,"line":746},[100,3837,3838],{"class":500},"    const",[100,3840,3841],{"class":504}," feature",[100,3843,508],{"class":106},[100,3845,3295],{"class":504},[100,3847,552],{"class":106},[100,3849,3850],{"class":560},"readFeature",[100,3852,565],{"class":1557},[100,3854,3804],{"class":504},[100,3856,721],{"class":106},[100,3858,333],{"class":106},[100,3860,3861,3864,3866,3868,3871,3873],{"class":102,"line":755},[100,3862,3863],{"class":574},"      dataProjection",[100,3865,343],{"class":106},[100,3867,511],{"class":157},[100,3869,3870],{"class":161},"EPSG:4326",[100,3872,158],{"class":157},[100,3874,324],{"class":106},[100,3876,3877,3880,3882,3884,3887],{"class":102,"line":764},[100,3878,3879],{"class":574},"      featureProjection",[100,3881,343],{"class":106},[100,3883,511],{"class":157},[100,3885,3886],{"class":161},"EPSG:3857",[100,3888,213],{"class":157},[100,3890,3891,3893,3895],{"class":102,"line":773},[100,3892,1686],{"class":106},[100,3894,603],{"class":1557},[100,3896,350],{"class":106},[100,3898,3899,3901,3903,3905,3907,3909,3912,3914,3916,3918],{"class":102,"line":782},[100,3900,3813],{"class":504},[100,3902,552],{"class":106},[100,3904,3818],{"class":560},[100,3906,1628],{"class":1557},[100,3908,552],{"class":106},[100,3910,3911],{"class":560},"addFeature",[100,3913,565],{"class":1557},[100,3915,2144],{"class":504},[100,3917,603],{"class":1557},[100,3919,350],{"class":106},[100,3921,3923],{"class":102,"line":3922},49,[100,3924,2347],{"class":106},[100,3926,3928],{"class":102,"line":3927},50,[100,3929,1784],{"class":106},[100,3931,3933],{"class":102,"line":3932},51,[100,3934,525],{"emptyLinePlaceholder":524},[100,3936,3938],{"class":102,"line":3937},52,[100,3939,3940],{"class":531},"\u002F\u002F Example: search for a quarter section near Edmonton\n",[100,3942,3944,3947,3949,3951,3953,3955,3957],{"class":102,"line":3943},53,[100,3945,3946],{"class":560},"searchAndPanTo",[100,3948,565],{"class":564},[100,3950,158],{"class":157},[100,3952,2589],{"class":161},[100,3954,158],{"class":157},[100,3956,603],{"class":564},[100,3958,350],{"class":106},[10,3960,3961,3962,3964],{},"OpenLayers stores coordinates in EPSG:3857 (Web Mercator), but the Search API returns GeoJSON in EPSG:4326 (longitude\u002Flatitude). The ",[17,3963,3850],{}," call handles the projection conversion.",[26,3966,3968],{"id":3967},"step-5-click-to-identify-grid-cells","Step 5: Click-to-identify grid cells",[10,3970,3971],{},"Add a click handler that reads vector tile features at the clicked pixel and shows a popup with the descriptor.",[10,3973,3974,3975,343],{},"First, add the popup HTML above the map ",[17,3976,3977],{},"\u003Cdiv>",[91,3979,3981],{"className":93,"code":3980,"language":95,"meta":96,"style":96},"\u003Cdiv\n  id=\"popup\"\n  style=\"\n  display: none;\n  position: absolute;\n  background: #fff;\n  padding: 10px 14px;\n  border-radius: 6px;\n  box-shadow: 0 2px 8px rgba(0,0,0,0.2);\n  font-family: -apple-system, BlinkMacSystemFont, sans-serif;\n  font-size: 14px;\n  pointer-events: none;\n  white-space: nowrap;\n\"\n>\u003C\u002Fdiv>\n",[17,3982,3983,3990,4004,4012,4017,4022,4027,4032,4037,4042,4047,4052,4057,4062,4066],{"__ignoreMap":96},[100,3984,3985,3987],{"class":102,"line":103},[100,3986,124],{"class":106},[100,3988,3989],{"class":110},"div\n",[100,3991,3992,3995,3997,3999,4002],{"class":102,"line":121},[100,3993,3994],{"class":114},"  id",[100,3996,154],{"class":106},[100,3998,158],{"class":157},[100,4000,4001],{"class":161},"popup",[100,4003,213],{"class":157},[100,4005,4006,4008,4010],{"class":102,"line":131},[100,4007,2537],{"class":114},[100,4009,154],{"class":106},[100,4011,213],{"class":157},[100,4013,4014],{"class":102,"line":142},[100,4015,4016],{"class":161},"  display: none;\n",[100,4018,4019],{"class":102,"line":170},[100,4020,4021],{"class":161},"  position: absolute;\n",[100,4023,4024],{"class":102,"line":192},[100,4025,4026],{"class":161},"  background: #fff;\n",[100,4028,4029],{"class":102,"line":200},[100,4030,4031],{"class":161},"  padding: 10px 14px;\n",[100,4033,4034],{"class":102,"line":216},[100,4035,4036],{"class":161},"  border-radius: 6px;\n",[100,4038,4039],{"class":102,"line":231},[100,4040,4041],{"class":161},"  box-shadow: 0 2px 8px rgba(0,0,0,0.2);\n",[100,4043,4044],{"class":102,"line":237},[100,4045,4046],{"class":161},"  font-family: -apple-system, BlinkMacSystemFont, sans-serif;\n",[100,4048,4049],{"class":102,"line":245},[100,4050,4051],{"class":161},"  font-size: 14px;\n",[100,4053,4054],{"class":102,"line":260},[100,4055,4056],{"class":161},"  pointer-events: none;\n",[100,4058,4059],{"class":102,"line":275},[100,4060,4061],{"class":161},"  white-space: nowrap;\n",[100,4063,4064],{"class":102,"line":280},[100,4065,213],{"class":157},[100,4067,4068,4070,4072],{"class":102,"line":307},[100,4069,300],{"class":106},[100,4071,468],{"class":110},[100,4073,118],{"class":106},[10,4075,4076],{},"Then add the click handler in JavaScript:",[91,4078,4080],{"className":1465,"code":4079,"language":1467,"meta":96,"style":96},"const popup = document.getElementById(\"popup\");\n\n\u002F\u002F Create an overlay to anchor the popup to the map\nconst overlay = new ol.Overlay({\n  element: popup,\n  positioning: \"bottom-center\",\n  offset: [0, -8]\n});\nmap.addOverlay(overlay);\n\nmap.on(\"click\", (e) => {\n  let found = false;\n\n  \u002F\u002F Check vector tile layers (twpLayer, secLayer, lsdLayer)\n  map.forEachFeatureAtPixel(\n    e.pixel,\n    (feature, layer) => {\n      if (found) return;\n\n      const props = feature.getProperties();\n      const descriptor = props.legal_location || props.descriptor || props.name;\n\n      if (descriptor) {\n        popup.innerHTML = `\u003Cstrong>${descriptor}\u003C\u002Fstrong>`;\n        overlay.setPosition(e.coordinate);\n        popup.style.display = \"block\";\n        found = true;\n      }\n    },\n    {\n      layerFilter: (layer) => layer === twpLayer || layer === secLayer || layer === lsdLayer\n    }\n  );\n\n  if (!found) {\n    popup.style.display = \"none\";\n  }\n});\n\n\u002F\u002F Change cursor on hover\nmap.on(\"pointermove\", (e) => {\n  const hit = map.hasFeatureAtPixel(e.pixel, {\n    layerFilter: (layer) => layer === twpLayer || layer === secLayer || layer === lsdLayer\n  });\n  map.getTargetElement().style.cursor = hit ? \"pointer\" : \"\";\n});\n",[17,4081,4082,4111,4115,4120,4142,4153,4169,4191,4199,4217,4221,4251,4266,4270,4275,4286,4298,4315,4331,4335,4355,4390,4394,4406,4436,4459,4482,4494,4498,4502,4506,4544,4548,4554,4558,4572,4596,4600,4608,4612,4617,4646,4674,4711,4719,4761],{"__ignoreMap":96},[100,4083,4084,4086,4089,4091,4094,4096,4099,4101,4103,4105,4107,4109],{"class":102,"line":103},[100,4085,1474],{"class":500},[100,4087,4088],{"class":504}," popup",[100,4090,508],{"class":106},[100,4092,4093],{"class":504}," document",[100,4095,552],{"class":106},[100,4097,4098],{"class":560},"getElementById",[100,4100,565],{"class":564},[100,4102,158],{"class":157},[100,4104,4001],{"class":161},[100,4106,158],{"class":157},[100,4108,603],{"class":564},[100,4110,350],{"class":106},[100,4112,4113],{"class":102,"line":121},[100,4114,525],{"emptyLinePlaceholder":524},[100,4116,4117],{"class":102,"line":131},[100,4118,4119],{"class":531},"\u002F\u002F Create an overlay to anchor the popup to the map\n",[100,4121,4122,4124,4127,4129,4131,4133,4135,4138,4140],{"class":102,"line":142},[100,4123,1474],{"class":500},[100,4125,4126],{"class":504}," overlay",[100,4128,508],{"class":106},[100,4130,546],{"class":545},[100,4132,549],{"class":504},[100,4134,552],{"class":106},[100,4136,4137],{"class":560},"Overlay",[100,4139,565],{"class":564},[100,4141,568],{"class":106},[100,4143,4144,4147,4149,4151],{"class":102,"line":170},[100,4145,4146],{"class":574},"  element",[100,4148,343],{"class":106},[100,4150,4088],{"class":504},[100,4152,324],{"class":106},[100,4154,4155,4158,4160,4162,4165,4167],{"class":102,"line":192},[100,4156,4157],{"class":574},"  positioning",[100,4159,343],{"class":106},[100,4161,511],{"class":157},[100,4163,4164],{"class":161},"bottom-center",[100,4166,158],{"class":157},[100,4168,324],{"class":106},[100,4170,4171,4174,4176,4178,4181,4183,4186,4189],{"class":102,"line":200},[100,4172,4173],{"class":574},"  offset",[100,4175,343],{"class":106},[100,4177,660],{"class":564},[100,4179,4180],{"class":346},"0",[100,4182,721],{"class":106},[100,4184,4185],{"class":545}," -",[100,4187,4188],{"class":346},"8",[100,4190,2993],{"class":564},[100,4192,4193,4195,4197],{"class":102,"line":216},[100,4194,1651],{"class":106},[100,4196,603],{"class":564},[100,4198,350],{"class":106},[100,4200,4201,4203,4205,4208,4210,4213,4215],{"class":102,"line":231},[100,4202,395],{"class":504},[100,4204,552],{"class":106},[100,4206,4207],{"class":560},"addOverlay",[100,4209,565],{"class":564},[100,4211,4212],{"class":504},"overlay",[100,4214,603],{"class":564},[100,4216,350],{"class":106},[100,4218,4219],{"class":102,"line":237},[100,4220,525],{"emptyLinePlaceholder":524},[100,4222,4223,4225,4227,4229,4231,4233,4236,4238,4240,4242,4245,4247,4249],{"class":102,"line":245},[100,4224,395],{"class":504},[100,4226,552],{"class":106},[100,4228,1281],{"class":560},[100,4230,565],{"class":564},[100,4232,158],{"class":157},[100,4234,4235],{"class":161},"click",[100,4237,158],{"class":157},[100,4239,721],{"class":106},[100,4241,2180],{"class":106},[100,4243,4244],{"class":1505},"e",[100,4246,603],{"class":106},[100,4248,3572],{"class":3571},[100,4250,333],{"class":106},[100,4252,4253,4255,4258,4260,4264],{"class":102,"line":260},[100,4254,2158],{"class":500},[100,4256,4257],{"class":504}," found",[100,4259,508],{"class":106},[100,4261,4263],{"class":4262},"sq3J1"," false",[100,4265,350],{"class":106},[100,4267,4268],{"class":102,"line":275},[100,4269,525],{"emptyLinePlaceholder":524},[100,4271,4272],{"class":102,"line":280},[100,4273,4274],{"class":531},"  \u002F\u002F Check vector tile layers (twpLayer, secLayer, lsdLayer)\n",[100,4276,4277,4279,4281,4284],{"class":102,"line":307},[100,4278,3711],{"class":504},[100,4280,552],{"class":106},[100,4282,4283],{"class":560},"forEachFeatureAtPixel",[100,4285,3357],{"class":1557},[100,4287,4288,4291,4293,4296],{"class":102,"line":317},[100,4289,4290],{"class":504},"    e",[100,4292,552],{"class":106},[100,4294,4295],{"class":504},"pixel",[100,4297,324],{"class":106},[100,4299,4300,4303,4305,4307,4309,4311,4313],{"class":102,"line":327},[100,4301,4302],{"class":106},"    (",[100,4304,2144],{"class":1505},[100,4306,721],{"class":106},[100,4308,1511],{"class":1505},[100,4310,603],{"class":106},[100,4312,3572],{"class":3571},[100,4314,333],{"class":106},[100,4316,4317,4320,4322,4325,4327,4329],{"class":102,"line":336},[100,4318,4319],{"class":1540},"      if",[100,4321,2180],{"class":1557},[100,4323,4324],{"class":504},"found",[100,4326,603],{"class":1557},[100,4328,3665],{"class":1540},[100,4330,350],{"class":106},[100,4332,4333],{"class":102,"line":353},[100,4334,525],{"emptyLinePlaceholder":524},[100,4336,4337,4339,4342,4344,4346,4348,4351,4353],{"class":102,"line":365},[100,4338,501],{"class":500},[100,4340,4341],{"class":504}," props",[100,4343,508],{"class":106},[100,4345,3841],{"class":504},[100,4347,552],{"class":106},[100,4349,4350],{"class":560},"getProperties",[100,4352,1628],{"class":1557},[100,4354,350],{"class":106},[100,4356,4357,4359,4362,4364,4366,4368,4371,4373,4375,4377,4379,4381,4383,4385,4388],{"class":102,"line":382},[100,4358,501],{"class":500},[100,4360,4361],{"class":504}," descriptor",[100,4363,508],{"class":106},[100,4365,4341],{"class":504},[100,4367,552],{"class":106},[100,4369,4370],{"class":504},"legal_location",[100,4372,3475],{"class":545},[100,4374,4341],{"class":504},[100,4376,552],{"class":106},[100,4378,2772],{"class":504},[100,4380,3475],{"class":545},[100,4382,4341],{"class":504},[100,4384,552],{"class":106},[100,4386,4387],{"class":504},"name",[100,4389,350],{"class":106},[100,4391,4392],{"class":102,"line":388},[100,4393,525],{"emptyLinePlaceholder":524},[100,4395,4396,4398,4400,4402,4404],{"class":102,"line":400},[100,4397,4319],{"class":1540},[100,4399,2180],{"class":1557},[100,4401,2772],{"class":504},[100,4403,603],{"class":1557},[100,4405,333],{"class":106},[100,4407,4408,4411,4413,4416,4418,4420,4423,4425,4427,4429,4432,4434],{"class":102,"line":414},[100,4409,4410],{"class":504},"        popup",[100,4412,552],{"class":106},[100,4414,4415],{"class":504},"innerHTML",[100,4417,508],{"class":106},[100,4419,1640],{"class":157},[100,4421,4422],{"class":161},"\u003Cstrong>",[100,4424,1644],{"class":1643},[100,4426,2772],{"class":1647},[100,4428,1651],{"class":1643},[100,4430,4431],{"class":161},"\u003C\u002Fstrong>",[100,4433,3388],{"class":157},[100,4435,350],{"class":106},[100,4437,4438,4441,4443,4446,4448,4450,4452,4455,4457],{"class":102,"line":428},[100,4439,4440],{"class":504},"        overlay",[100,4442,552],{"class":106},[100,4444,4445],{"class":560},"setPosition",[100,4447,565],{"class":1557},[100,4449,4244],{"class":504},[100,4451,552],{"class":106},[100,4453,4454],{"class":504},"coordinate",[100,4456,603],{"class":1557},[100,4458,350],{"class":106},[100,4460,4461,4463,4465,4467,4469,4472,4474,4476,4478,4480],{"class":102,"line":433},[100,4462,4410],{"class":504},[100,4464,552],{"class":106},[100,4466,312],{"class":504},[100,4468,552],{"class":106},[100,4470,4471],{"class":504},"display",[100,4473,508],{"class":106},[100,4475,511],{"class":157},[100,4477,1164],{"class":161},[100,4479,158],{"class":157},[100,4481,350],{"class":106},[100,4483,4484,4487,4489,4492],{"class":102,"line":443},[100,4485,4486],{"class":504},"        found",[100,4488,508],{"class":106},[100,4490,4491],{"class":4262}," true",[100,4493,350],{"class":106},[100,4495,4496],{"class":102,"line":453},[100,4497,385],{"class":106},[100,4499,4500],{"class":102,"line":463},[100,4501,2917],{"class":106},[100,4503,4504],{"class":102,"line":488},[100,4505,2660],{"class":106},[100,4507,4508,4511,4513,4515,4517,4519,4521,4523,4525,4527,4529,4531,4533,4535,4537,4539,4541],{"class":102,"line":497},[100,4509,4510],{"class":560},"      layerFilter",[100,4512,343],{"class":106},[100,4514,2180],{"class":106},[100,4516,555],{"class":1505},[100,4518,603],{"class":106},[100,4520,3572],{"class":3571},[100,4522,1511],{"class":504},[100,4524,3490],{"class":545},[100,4526,1800],{"class":504},[100,4528,3475],{"class":545},[100,4530,1511],{"class":504},[100,4532,3490],{"class":545},[100,4534,1864],{"class":504},[100,4536,3475],{"class":545},[100,4538,1511],{"class":504},[100,4540,3490],{"class":545},[100,4542,4543],{"class":504}," lsdLayer\n",[100,4545,4546],{"class":102,"line":521},[100,4547,3054],{"class":106},[100,4549,4550,4552],{"class":102,"line":528},[100,4551,3425],{"class":1557},[100,4553,350],{"class":106},[100,4555,4556],{"class":102,"line":535},[100,4557,525],{"emptyLinePlaceholder":524},[100,4559,4560,4562,4564,4566,4568,4570],{"class":102,"line":571},[100,4561,2177],{"class":1540},[100,4563,2180],{"class":1557},[100,4565,3465],{"class":545},[100,4567,4324],{"class":504},[100,4569,603],{"class":1557},[100,4571,333],{"class":106},[100,4573,4574,4577,4579,4581,4583,4585,4587,4589,4592,4594],{"class":102,"line":597},[100,4575,4576],{"class":504},"    popup",[100,4578,552],{"class":106},[100,4580,312],{"class":504},[100,4582,552],{"class":106},[100,4584,4471],{"class":504},[100,4586,508],{"class":106},[100,4588,511],{"class":157},[100,4590,4591],{"class":161},"none",[100,4593,158],{"class":157},[100,4595,350],{"class":106},[100,4597,4598],{"class":102,"line":608},[100,4599,2347],{"class":106},[100,4601,4602,4604,4606],{"class":102,"line":613},[100,4603,1651],{"class":106},[100,4605,603],{"class":564},[100,4607,350],{"class":106},[100,4609,4610],{"class":102,"line":636},[100,4611,525],{"emptyLinePlaceholder":524},[100,4613,4614],{"class":102,"line":652},[100,4615,4616],{"class":531},"\u002F\u002F Change cursor on hover\n",[100,4618,4619,4621,4623,4625,4627,4629,4632,4634,4636,4638,4640,4642,4644],{"class":102,"line":671},[100,4620,395],{"class":504},[100,4622,552],{"class":106},[100,4624,1281],{"class":560},[100,4626,565],{"class":564},[100,4628,158],{"class":157},[100,4630,4631],{"class":161},"pointermove",[100,4633,158],{"class":157},[100,4635,721],{"class":106},[100,4637,2180],{"class":106},[100,4639,4244],{"class":1505},[100,4641,603],{"class":106},[100,4643,3572],{"class":3571},[100,4645,333],{"class":106},[100,4647,4648,4650,4653,4655,4657,4659,4662,4664,4666,4668,4670,4672],{"class":102,"line":692},[100,4649,3343],{"class":500},[100,4651,4652],{"class":504}," hit",[100,4654,508],{"class":106},[100,4656,618],{"class":504},[100,4658,552],{"class":106},[100,4660,4661],{"class":560},"hasFeatureAtPixel",[100,4663,565],{"class":1557},[100,4665,4244],{"class":504},[100,4667,552],{"class":106},[100,4669,4295],{"class":504},[100,4671,721],{"class":106},[100,4673,333],{"class":106},[100,4675,4676,4679,4681,4683,4685,4687,4689,4691,4693,4695,4697,4699,4701,4703,4705,4707,4709],{"class":102,"line":735},[100,4677,4678],{"class":560},"    layerFilter",[100,4680,343],{"class":106},[100,4682,2180],{"class":106},[100,4684,555],{"class":1505},[100,4686,603],{"class":106},[100,4688,3572],{"class":3571},[100,4690,1511],{"class":504},[100,4692,3490],{"class":545},[100,4694,1800],{"class":504},[100,4696,3475],{"class":545},[100,4698,1511],{"class":504},[100,4700,3490],{"class":545},[100,4702,1864],{"class":504},[100,4704,3475],{"class":545},[100,4706,1511],{"class":504},[100,4708,3490],{"class":545},[100,4710,4543],{"class":504},[100,4712,4713,4715,4717],{"class":102,"line":746},[100,4714,1775],{"class":106},[100,4716,603],{"class":1557},[100,4718,350],{"class":106},[100,4720,4721,4723,4725,4728,4730,4732,4734,4736,4739,4741,4743,4746,4748,4751,4753,4756,4759],{"class":102,"line":755},[100,4722,3711],{"class":504},[100,4724,552],{"class":106},[100,4726,4727],{"class":560},"getTargetElement",[100,4729,1628],{"class":1557},[100,4731,552],{"class":106},[100,4733,312],{"class":504},[100,4735,552],{"class":106},[100,4737,4738],{"class":504},"cursor",[100,4740,508],{"class":106},[100,4742,4652],{"class":504},[100,4744,4745],{"class":545}," ?",[100,4747,511],{"class":157},[100,4749,4750],{"class":161},"pointer",[100,4752,158],{"class":157},[100,4754,4755],{"class":545}," :",[100,4757,4758],{"class":157}," \"\"",[100,4760,350],{"class":106},[100,4762,4763,4765,4767],{"class":102,"line":764},[100,4764,1651],{"class":106},[100,4766,603],{"class":564},[100,4768,350],{"class":106},[10,4770,4771,4772,4775,4776,552],{},"Click any township, section, or LSD cell and the popup shows the legal land description, for example ",[17,4773,4774],{},"TWP-24-1-W5"," or ",[17,4777,4778],{},"SW-14-24-1-W5",[26,4780,4782],{"id":4781},"step-6-add-autocomplete-search","Step 6: Add autocomplete search",[10,4784,4785],{},"Build a search box with autocomplete using the Autocomplete API.",[802,4787,4789],{"id":4788},"autocomplete-endpoint","Autocomplete endpoint",[91,4791,4794],{"className":4792,"code":4793,"language":811},[809],"GET https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location?location={query}&limit=3\nX-API-Key: YOUR_API_KEY\n",[17,4795,4793],{"__ignoreMap":96},[10,4797,4798],{},"The response is a GeoJSON FeatureCollection with up to 10 matching locations:",[91,4800,4802],{"className":2610,"code":4801,"language":2612,"meta":96,"style":96},"{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"geometry\": { \"type\": \"Point\", \"coordinates\": [-114.03125, 51.53125] },\n      \"properties\": {\n        \"descriptor\": \"NW-25-24-1-W5\",\n        \"survey_system\": \"DLS\",\n        \"province\": \"AB\"\n      }\n    }\n  ]\n}\n",[17,4803,4804,4808,4826,4838,4842,4860,4909,4921,4939,4957,4973,4977,4981,4985],{"__ignoreMap":96},[100,4805,4806],{"class":102,"line":103},[100,4807,568],{"class":106},[100,4809,4810,4812,4814,4816,4818,4820,4822,4824],{"class":102,"line":121},[100,4811,2624],{"class":2623},[100,4813,2628],{"class":2627},[100,4815,158],{"class":2623},[100,4817,343],{"class":106},[100,4819,511],{"class":157},[100,4821,2637],{"class":161},[100,4823,158],{"class":157},[100,4825,324],{"class":106},[100,4827,4828,4830,4832,4834,4836],{"class":102,"line":131},[100,4829,2624],{"class":2623},[100,4831,2648],{"class":2627},[100,4833,158],{"class":2623},[100,4835,343],{"class":106},[100,4837,2655],{"class":106},[100,4839,4840],{"class":102,"line":142},[100,4841,2660],{"class":106},[100,4843,4844,4846,4848,4850,4852,4854,4856,4858],{"class":102,"line":170},[100,4845,2665],{"class":2623},[100,4847,2628],{"class":2668},[100,4849,158],{"class":2623},[100,4851,343],{"class":106},[100,4853,511],{"class":157},[100,4855,2677],{"class":161},[100,4857,158],{"class":157},[100,4859,324],{"class":106},[100,4861,4862,4864,4866,4868,4870,4872,4874,4876,4878,4880,4882,4884,4886,4888,4890,4892,4894,4896,4898,4900,4902,4904,4906],{"class":102,"line":192},[100,4863,2665],{"class":2623},[100,4865,2688],{"class":2668},[100,4867,158],{"class":2623},[100,4869,343],{"class":106},[100,4871,3403],{"class":106},[100,4873,511],{"class":2623},[100,4875,2628],{"class":2702},[100,4877,158],{"class":2623},[100,4879,343],{"class":106},[100,4881,511],{"class":157},[100,4883,2966],{"class":161},[100,4885,158],{"class":157},[100,4887,721],{"class":106},[100,4889,511],{"class":2623},[100,4891,2722],{"class":2702},[100,4893,158],{"class":2623},[100,4895,343],{"class":106},[100,4897,660],{"class":106},[100,4899,2985],{"class":346},[100,4901,721],{"class":106},[100,4903,2990],{"class":346},[100,4905,666],{"class":106},[100,4907,4908],{"class":106}," },\n",[100,4910,4911,4913,4915,4917,4919],{"class":102,"line":200},[100,4912,2665],{"class":2623},[100,4914,2759],{"class":2668},[100,4916,158],{"class":2623},[100,4918,343],{"class":106},[100,4920,333],{"class":106},[100,4922,4923,4925,4927,4929,4931,4933,4935,4937],{"class":102,"line":216},[100,4924,2699],{"class":2623},[100,4926,2772],{"class":2702},[100,4928,158],{"class":2623},[100,4930,343],{"class":106},[100,4932,511],{"class":157},[100,4934,2589],{"class":161},[100,4936,158],{"class":157},[100,4938,324],{"class":106},[100,4940,4941,4943,4945,4947,4949,4951,4953,4955],{"class":102,"line":231},[100,4942,2699],{"class":2623},[100,4944,2878],{"class":2702},[100,4946,158],{"class":2623},[100,4948,343],{"class":106},[100,4950,511],{"class":157},[100,4952,2887],{"class":161},[100,4954,158],{"class":157},[100,4956,324],{"class":106},[100,4958,4959,4961,4963,4965,4967,4969,4971],{"class":102,"line":237},[100,4960,2699],{"class":2623},[100,4962,1506],{"class":2702},[100,4964,158],{"class":2623},[100,4966,343],{"class":106},[100,4968,511],{"class":157},[100,4970,2906],{"class":161},[100,4972,213],{"class":157},[100,4974,4975],{"class":102,"line":245},[100,4976,385],{"class":106},[100,4978,4979],{"class":102,"line":260},[100,4980,3054],{"class":106},[100,4982,4983],{"class":102,"line":275},[100,4984,3059],{"class":106},[100,4986,4987],{"class":102,"line":280},[100,4988,1784],{"class":106},[10,4990,4991,4992,343],{},"Add the search box HTML above the map ",[17,4993,3977],{},[91,4995,4997],{"className":93,"code":4996,"language":95,"meta":96,"style":96},"\u003Cdiv\n  id=\"search-container\"\n  style=\"\n  position: absolute; top: 10px; left: 10px; z-index: 1; width: 320px;\n\"\n>\n  \u003Cinput\n    id=\"search-input\"\n    type=\"text\"\n    placeholder=\"Search legal land description...\"\n    style=\"width: 100%; padding: 10px 14px; font-size: 14px;\n           border: 1px solid #ccc; border-radius: 6px;\n           box-shadow: 0 2px 6px rgba(0,0,0,0.1); box-sizing: border-box;\"\n  \u002F>\n  \u003Cul\n    id=\"suggestions\"\n    style=\"\n    list-style: none; margin: 4px 0 0; padding: 0; background: #fff;\n    border-radius: 6px; box-shadow: 0 2px 6px rgba(0,0,0,0.15);\n    display: none;\n  \"\n  >\u003C\u002Ful>\n\u003C\u002Fdiv>\n",[17,4998,4999,5005,5018,5026,5031,5035,5039,5046,5060,5073,5087,5098,5103,5110,5115,5122,5135,5143,5148,5153,5158,5163,5172],{"__ignoreMap":96},[100,5000,5001,5003],{"class":102,"line":103},[100,5002,124],{"class":106},[100,5004,3989],{"class":110},[100,5006,5007,5009,5011,5013,5016],{"class":102,"line":121},[100,5008,3994],{"class":114},[100,5010,154],{"class":106},[100,5012,158],{"class":157},[100,5014,5015],{"class":161},"search-container",[100,5017,213],{"class":157},[100,5019,5020,5022,5024],{"class":102,"line":131},[100,5021,2537],{"class":114},[100,5023,154],{"class":106},[100,5025,213],{"class":157},[100,5027,5028],{"class":102,"line":142},[100,5029,5030],{"class":161},"  position: absolute; top: 10px; left: 10px; z-index: 1; width: 320px;\n",[100,5032,5033],{"class":102,"line":170},[100,5034,213],{"class":157},[100,5036,5037],{"class":102,"line":192},[100,5038,118],{"class":106},[100,5040,5041,5043],{"class":102,"line":200},[100,5042,134],{"class":106},[100,5044,5045],{"class":110},"input\n",[100,5047,5048,5051,5053,5055,5058],{"class":102,"line":216},[100,5049,5050],{"class":114},"    id",[100,5052,154],{"class":106},[100,5054,158],{"class":157},[100,5056,5057],{"class":161},"search-input",[100,5059,213],{"class":157},[100,5061,5062,5065,5067,5069,5071],{"class":102,"line":231},[100,5063,5064],{"class":114},"    type",[100,5066,154],{"class":106},[100,5068,158],{"class":157},[100,5070,811],{"class":161},[100,5072,213],{"class":157},[100,5074,5075,5078,5080,5082,5085],{"class":102,"line":237},[100,5076,5077],{"class":114},"    placeholder",[100,5079,154],{"class":106},[100,5081,158],{"class":157},[100,5083,5084],{"class":161},"Search legal land description...",[100,5086,213],{"class":157},[100,5088,5089,5091,5093,5095],{"class":102,"line":245},[100,5090,1695],{"class":114},[100,5092,154],{"class":106},[100,5094,158],{"class":157},[100,5096,5097],{"class":161},"width: 100%; padding: 10px 14px; font-size: 14px;\n",[100,5099,5100],{"class":102,"line":260},[100,5101,5102],{"class":161},"           border: 1px solid #ccc; border-radius: 6px;\n",[100,5104,5105,5108],{"class":102,"line":275},[100,5106,5107],{"class":161},"           box-shadow: 0 2px 6px rgba(0,0,0,0.1); box-sizing: border-box;",[100,5109,213],{"class":157},[100,5111,5112],{"class":102,"line":280},[100,5113,5114],{"class":106},"  \u002F>\n",[100,5116,5117,5119],{"class":102,"line":307},[100,5118,134],{"class":106},[100,5120,5121],{"class":110},"ul\n",[100,5123,5124,5126,5128,5130,5133],{"class":102,"line":317},[100,5125,5050],{"class":114},[100,5127,154],{"class":106},[100,5129,158],{"class":157},[100,5131,5132],{"class":161},"suggestions",[100,5134,213],{"class":157},[100,5136,5137,5139,5141],{"class":102,"line":327},[100,5138,1695],{"class":114},[100,5140,154],{"class":106},[100,5142,213],{"class":157},[100,5144,5145],{"class":102,"line":336},[100,5146,5147],{"class":161},"    list-style: none; margin: 4px 0 0; padding: 0; background: #fff;\n",[100,5149,5150],{"class":102,"line":353},[100,5151,5152],{"class":161},"    border-radius: 6px; box-shadow: 0 2px 6px rgba(0,0,0,0.15);\n",[100,5154,5155],{"class":102,"line":365},[100,5156,5157],{"class":161},"    display: none;\n",[100,5159,5160],{"class":102,"line":382},[100,5161,5162],{"class":157},"  \"\n",[100,5164,5165,5168,5170],{"class":102,"line":388},[100,5166,5167],{"class":106},"  >\u003C\u002F",[100,5169,34],{"class":110},[100,5171,118],{"class":106},[100,5173,5174,5176,5178],{"class":102,"line":400},[100,5175,185],{"class":106},[100,5177,468],{"class":110},[100,5179,118],{"class":106},[10,5181,5182],{},"Then add the JavaScript:",[91,5184,5186],{"className":1465,"code":5185,"language":1467,"meta":96,"style":96},"const searchInput = document.getElementById(\"search-input\");\nconst suggestionsEl = document.getElementById(\"suggestions\");\nlet debounceTimer;\n\nsearchInput.addEventListener(\"input\", (e) => {\n  clearTimeout(debounceTimer);\n  const query = e.target.value.trim();\n\n  if (query.length \u003C 2) {\n    suggestionsEl.style.display = \"none\";\n    return;\n  }\n\n  debounceTimer = setTimeout(() => fetchSuggestions(query), 300);\n});\n\nsearchInput.addEventListener(\"keydown\", (e) => {\n  if (e.key === \"Enter\") {\n    suggestionsEl.style.display = \"none\";\n    searchAndPanTo(searchInput.value.trim());\n  }\n});\n\nasync function fetchSuggestions(query) {\n  const center = ol.proj.toLonLat(map.getView().getCenter());\n\n  const response = await fetch(\n    `${TC_API}\u002Fautocomplete\u002Flegal-location` +\n      `?location=${encodeURIComponent(query)}&limit=3` +\n      `&proximity=${center[0].toFixed(4)},${center[1].toFixed(4)}`,\n    { headers: { \"X-API-Key\": TC_API_KEY } }\n  );\n\n  const data = await response.json();\n  suggestionsEl.innerHTML = \"\";\n\n  if (!data.features || data.features.length === 0) {\n    suggestionsEl.style.display = \"none\";\n    return;\n  }\n\n  data.features.forEach((feature) => {\n    const li = document.createElement(\"li\");\n    li.textContent = `${feature.properties.legal_location} (${feature.properties.province})`;\n    li.style.cssText =\n      \"padding: 10px 14px; cursor: pointer; border-bottom: 1px solid #eee; font-size: 14px;\";\n\n    li.addEventListener(\"mouseenter\", () => (li.style.backgroundColor = \"#f5f5f5\"));\n    li.addEventListener(\"mouseleave\", () => (li.style.backgroundColor = \"#fff\"));\n\n    li.addEventListener(\"click\", () => {\n      searchInput.value = feature.properties.legal_location;\n      suggestionsEl.style.display = \"none\";\n      searchAndPanTo(feature.properties.legal_location);\n    });\n\n    suggestionsEl.appendChild(li);\n  });\n\n  suggestionsEl.style.display = \"block\";\n}\n\ndocument.addEventListener(\"click\", (e) => {\n  if (!document.getElementById(\"search-container\").contains(e.target)) {\n    suggestionsEl.style.display = \"none\";\n  }\n});\n",[17,5187,5188,5215,5242,5252,5256,5287,5301,5331,5335,5356,5379,5385,5389,5393,5427,5435,5439,5468,5494,5516,5538,5542,5550,5554,5570,5609,5613,5627,5645,5672,5734,5758,5764,5768,5788,5803,5807,5841,5863,5869,5873,5877,5903,5931,5981,5997,6008,6012,6063,6111,6115,6139,6162,6185,6207,6216,6221,6239,6248,6253,6276,6281,6286,6316,6358,6381,6386],{"__ignoreMap":96},[100,5189,5190,5192,5195,5197,5199,5201,5203,5205,5207,5209,5211,5213],{"class":102,"line":103},[100,5191,1474],{"class":500},[100,5193,5194],{"class":504}," searchInput",[100,5196,508],{"class":106},[100,5198,4093],{"class":504},[100,5200,552],{"class":106},[100,5202,4098],{"class":560},[100,5204,565],{"class":564},[100,5206,158],{"class":157},[100,5208,5057],{"class":161},[100,5210,158],{"class":157},[100,5212,603],{"class":564},[100,5214,350],{"class":106},[100,5216,5217,5219,5222,5224,5226,5228,5230,5232,5234,5236,5238,5240],{"class":102,"line":121},[100,5218,1474],{"class":500},[100,5220,5221],{"class":504}," suggestionsEl",[100,5223,508],{"class":106},[100,5225,4093],{"class":504},[100,5227,552],{"class":106},[100,5229,4098],{"class":560},[100,5231,565],{"class":564},[100,5233,158],{"class":157},[100,5235,5132],{"class":161},[100,5237,158],{"class":157},[100,5239,603],{"class":564},[100,5241,350],{"class":106},[100,5243,5244,5247,5250],{"class":102,"line":131},[100,5245,5246],{"class":500},"let",[100,5248,5249],{"class":504}," debounceTimer",[100,5251,350],{"class":106},[100,5253,5254],{"class":102,"line":142},[100,5255,525],{"emptyLinePlaceholder":524},[100,5257,5258,5261,5263,5266,5268,5270,5273,5275,5277,5279,5281,5283,5285],{"class":102,"line":170},[100,5259,5260],{"class":504},"searchInput",[100,5262,552],{"class":106},[100,5264,5265],{"class":560},"addEventListener",[100,5267,565],{"class":564},[100,5269,158],{"class":157},[100,5271,5272],{"class":161},"input",[100,5274,158],{"class":157},[100,5276,721],{"class":106},[100,5278,2180],{"class":106},[100,5280,4244],{"class":1505},[100,5282,603],{"class":106},[100,5284,3572],{"class":3571},[100,5286,333],{"class":106},[100,5288,5289,5292,5294,5297,5299],{"class":102,"line":192},[100,5290,5291],{"class":560},"  clearTimeout",[100,5293,565],{"class":1557},[100,5295,5296],{"class":504},"debounceTimer",[100,5298,603],{"class":1557},[100,5300,350],{"class":106},[100,5302,5303,5305,5307,5309,5312,5314,5317,5319,5322,5324,5327,5329],{"class":102,"line":200},[100,5304,3343],{"class":500},[100,5306,3520],{"class":504},[100,5308,508],{"class":106},[100,5310,5311],{"class":504}," e",[100,5313,552],{"class":106},[100,5315,5316],{"class":504},"target",[100,5318,552],{"class":106},[100,5320,5321],{"class":504},"value",[100,5323,552],{"class":106},[100,5325,5326],{"class":560},"trim",[100,5328,1628],{"class":1557},[100,5330,350],{"class":106},[100,5332,5333],{"class":102,"line":216},[100,5334,525],{"emptyLinePlaceholder":524},[100,5336,5337,5339,5341,5343,5345,5347,5350,5352,5354],{"class":102,"line":231},[100,5338,2177],{"class":1540},[100,5340,2180],{"class":1557},[100,5342,3334],{"class":504},[100,5344,552],{"class":106},[100,5346,3487],{"class":3486},[100,5348,5349],{"class":106}," \u003C",[100,5351,2202],{"class":346},[100,5353,603],{"class":1557},[100,5355,333],{"class":106},[100,5357,5358,5361,5363,5365,5367,5369,5371,5373,5375,5377],{"class":102,"line":237},[100,5359,5360],{"class":504},"    suggestionsEl",[100,5362,552],{"class":106},[100,5364,312],{"class":504},[100,5366,552],{"class":106},[100,5368,4471],{"class":504},[100,5370,508],{"class":106},[100,5372,511],{"class":157},[100,5374,4591],{"class":161},[100,5376,158],{"class":157},[100,5378,350],{"class":106},[100,5380,5381,5383],{"class":102,"line":245},[100,5382,3529],{"class":1540},[100,5384,350],{"class":106},[100,5386,5387],{"class":102,"line":260},[100,5388,2347],{"class":106},[100,5390,5391],{"class":102,"line":275},[100,5392,525],{"emptyLinePlaceholder":524},[100,5394,5395,5398,5400,5403,5405,5407,5409,5412,5414,5416,5418,5420,5423,5425],{"class":102,"line":280},[100,5396,5397],{"class":504},"  debounceTimer",[100,5399,508],{"class":106},[100,5401,5402],{"class":560}," setTimeout",[100,5404,565],{"class":1557},[100,5406,1628],{"class":106},[100,5408,3572],{"class":3571},[100,5410,5411],{"class":560}," fetchSuggestions",[100,5413,565],{"class":1557},[100,5415,3334],{"class":504},[100,5417,603],{"class":1557},[100,5419,721],{"class":106},[100,5421,5422],{"class":346}," 300",[100,5424,603],{"class":1557},[100,5426,350],{"class":106},[100,5428,5429,5431,5433],{"class":102,"line":307},[100,5430,1651],{"class":106},[100,5432,603],{"class":564},[100,5434,350],{"class":106},[100,5436,5437],{"class":102,"line":317},[100,5438,525],{"emptyLinePlaceholder":524},[100,5440,5441,5443,5445,5447,5449,5451,5454,5456,5458,5460,5462,5464,5466],{"class":102,"line":327},[100,5442,5260],{"class":504},[100,5444,552],{"class":106},[100,5446,5265],{"class":560},[100,5448,565],{"class":564},[100,5450,158],{"class":157},[100,5452,5453],{"class":161},"keydown",[100,5455,158],{"class":157},[100,5457,721],{"class":106},[100,5459,2180],{"class":106},[100,5461,4244],{"class":1505},[100,5463,603],{"class":106},[100,5465,3572],{"class":3571},[100,5467,333],{"class":106},[100,5469,5470,5472,5474,5476,5478,5481,5483,5485,5488,5490,5492],{"class":102,"line":336},[100,5471,2177],{"class":1540},[100,5473,2180],{"class":1557},[100,5475,4244],{"class":504},[100,5477,552],{"class":106},[100,5479,5480],{"class":504},"key",[100,5482,3490],{"class":545},[100,5484,511],{"class":157},[100,5486,5487],{"class":161},"Enter",[100,5489,158],{"class":157},[100,5491,603],{"class":1557},[100,5493,333],{"class":106},[100,5495,5496,5498,5500,5502,5504,5506,5508,5510,5512,5514],{"class":102,"line":353},[100,5497,5360],{"class":504},[100,5499,552],{"class":106},[100,5501,312],{"class":504},[100,5503,552],{"class":106},[100,5505,4471],{"class":504},[100,5507,508],{"class":106},[100,5509,511],{"class":157},[100,5511,4591],{"class":161},[100,5513,158],{"class":157},[100,5515,350],{"class":106},[100,5517,5518,5521,5523,5525,5527,5529,5531,5533,5536],{"class":102,"line":365},[100,5519,5520],{"class":560},"    searchAndPanTo",[100,5522,565],{"class":1557},[100,5524,5260],{"class":504},[100,5526,552],{"class":106},[100,5528,5321],{"class":504},[100,5530,552],{"class":106},[100,5532,5326],{"class":560},[100,5534,5535],{"class":1557},"())",[100,5537,350],{"class":106},[100,5539,5540],{"class":102,"line":382},[100,5541,2347],{"class":106},[100,5543,5544,5546,5548],{"class":102,"line":388},[100,5545,1651],{"class":106},[100,5547,603],{"class":564},[100,5549,350],{"class":106},[100,5551,5552],{"class":102,"line":400},[100,5553,525],{"emptyLinePlaceholder":524},[100,5555,5556,5558,5560,5562,5564,5566,5568],{"class":102,"line":414},[100,5557,3323],{"class":500},[100,5559,3326],{"class":500},[100,5561,5411],{"class":560},[100,5563,565],{"class":106},[100,5565,3334],{"class":1505},[100,5567,603],{"class":106},[100,5569,333],{"class":106},[100,5571,5572,5574,5577,5579,5581,5583,5585,5587,5590,5592,5594,5596,5598,5600,5602,5605,5607],{"class":102,"line":428},[100,5573,3343],{"class":500},[100,5575,5576],{"class":504}," center",[100,5578,508],{"class":106},[100,5580,549],{"class":504},[100,5582,552],{"class":106},[100,5584,704],{"class":504},[100,5586,552],{"class":106},[100,5588,5589],{"class":560},"toLonLat",[100,5591,565],{"class":1557},[100,5593,395],{"class":504},[100,5595,552],{"class":106},[100,5597,3716],{"class":560},[100,5599,1628],{"class":1557},[100,5601,552],{"class":106},[100,5603,5604],{"class":560},"getCenter",[100,5606,5535],{"class":1557},[100,5608,350],{"class":106},[100,5610,5611],{"class":102,"line":433},[100,5612,525],{"emptyLinePlaceholder":524},[100,5614,5615,5617,5619,5621,5623,5625],{"class":102,"line":443},[100,5616,3343],{"class":500},[100,5618,3346],{"class":504},[100,5620,508],{"class":106},[100,5622,3351],{"class":1540},[100,5624,3354],{"class":560},[100,5626,3357],{"class":1557},[100,5628,5629,5631,5633,5635,5637,5640,5642],{"class":102,"line":453},[100,5630,3362],{"class":157},[100,5632,1644],{"class":1643},[100,5634,3367],{"class":1647},[100,5636,1651],{"class":1643},[100,5638,5639],{"class":161},"\u002Fautocomplete\u002Flegal-location",[100,5641,3388],{"class":157},[100,5643,5644],{"class":545}," +\n",[100,5646,5647,5650,5653,5655,5657,5659,5661,5663,5665,5668,5670],{"class":102,"line":463},[100,5648,5649],{"class":157},"      `",[100,5651,5652],{"class":161},"?location=",[100,5654,1644],{"class":1643},[100,5656,3377],{"class":560},[100,5658,565],{"class":564},[100,5660,3334],{"class":1647},[100,5662,603],{"class":564},[100,5664,1651],{"class":1643},[100,5666,5667],{"class":161},"&limit=3",[100,5669,3388],{"class":157},[100,5671,5644],{"class":545},[100,5673,5674,5676,5679,5681,5684,5687,5689,5691,5693,5696,5698,5701,5703,5705,5707,5709,5711,5713,5716,5718,5720,5722,5724,5726,5728,5730,5732],{"class":102,"line":488},[100,5675,5649],{"class":157},[100,5677,5678],{"class":161},"&proximity=",[100,5680,1644],{"class":1643},[100,5682,5683],{"class":1647},"center",[100,5685,5686],{"class":564},"[",[100,5688,4180],{"class":346},[100,5690,666],{"class":564},[100,5692,552],{"class":106},[100,5694,5695],{"class":560},"toFixed",[100,5697,565],{"class":564},[100,5699,5700],{"class":346},"4",[100,5702,603],{"class":564},[100,5704,1651],{"class":1643},[100,5706,721],{"class":161},[100,5708,1644],{"class":1643},[100,5710,5683],{"class":1647},[100,5712,5686],{"class":564},[100,5714,5715],{"class":346},"1",[100,5717,666],{"class":564},[100,5719,552],{"class":106},[100,5721,5695],{"class":560},[100,5723,565],{"class":564},[100,5725,5700],{"class":346},[100,5727,603],{"class":564},[100,5729,1651],{"class":1643},[100,5731,3388],{"class":157},[100,5733,324],{"class":106},[100,5735,5736,5738,5740,5742,5744,5746,5748,5750,5752,5754,5756],{"class":102,"line":497},[100,5737,3395],{"class":106},[100,5739,3398],{"class":574},[100,5741,343],{"class":106},[100,5743,3403],{"class":106},[100,5745,511],{"class":157},[100,5747,3409],{"class":3408},[100,5749,158],{"class":157},[100,5751,343],{"class":106},[100,5753,505],{"class":504},[100,5755,2404],{"class":106},[100,5757,3420],{"class":106},[100,5759,5760,5762],{"class":102,"line":521},[100,5761,3425],{"class":1557},[100,5763,350],{"class":106},[100,5765,5766],{"class":102,"line":528},[100,5767,525],{"emptyLinePlaceholder":524},[100,5769,5770,5772,5774,5776,5778,5780,5782,5784,5786],{"class":102,"line":535},[100,5771,3343],{"class":500},[100,5773,3438],{"class":504},[100,5775,508],{"class":106},[100,5777,3351],{"class":1540},[100,5779,3346],{"class":504},[100,5781,552],{"class":106},[100,5783,2612],{"class":560},[100,5785,1628],{"class":1557},[100,5787,350],{"class":106},[100,5789,5790,5793,5795,5797,5799,5801],{"class":102,"line":571},[100,5791,5792],{"class":504},"  suggestionsEl",[100,5794,552],{"class":106},[100,5796,4415],{"class":504},[100,5798,508],{"class":106},[100,5800,4758],{"class":157},[100,5802,350],{"class":106},[100,5804,5805],{"class":102,"line":597},[100,5806,525],{"emptyLinePlaceholder":524},[100,5808,5809,5811,5813,5815,5817,5819,5821,5823,5825,5827,5829,5831,5833,5835,5837,5839],{"class":102,"line":608},[100,5810,2177],{"class":1540},[100,5812,2180],{"class":1557},[100,5814,3465],{"class":545},[100,5816,3468],{"class":504},[100,5818,552],{"class":106},[100,5820,2648],{"class":504},[100,5822,3475],{"class":545},[100,5824,3438],{"class":504},[100,5826,552],{"class":106},[100,5828,2648],{"class":504},[100,5830,552],{"class":106},[100,5832,3487],{"class":3486},[100,5834,3490],{"class":545},[100,5836,347],{"class":346},[100,5838,603],{"class":1557},[100,5840,333],{"class":106},[100,5842,5843,5845,5847,5849,5851,5853,5855,5857,5859,5861],{"class":102,"line":613},[100,5844,5360],{"class":504},[100,5846,552],{"class":106},[100,5848,312],{"class":504},[100,5850,552],{"class":106},[100,5852,4471],{"class":504},[100,5854,508],{"class":106},[100,5856,511],{"class":157},[100,5858,4591],{"class":161},[100,5860,158],{"class":157},[100,5862,350],{"class":106},[100,5864,5865,5867],{"class":102,"line":636},[100,5866,3529],{"class":1540},[100,5868,350],{"class":106},[100,5870,5871],{"class":102,"line":652},[100,5872,2347],{"class":106},[100,5874,5875],{"class":102,"line":671},[100,5876,525],{"emptyLinePlaceholder":524},[100,5878,5879,5882,5884,5886,5888,5891,5893,5895,5897,5899,5901],{"class":102,"line":692},[100,5880,5881],{"class":504},"  data",[100,5883,552],{"class":106},[100,5885,2648],{"class":504},[100,5887,552],{"class":106},[100,5889,5890],{"class":560},"forEach",[100,5892,565],{"class":1557},[100,5894,565],{"class":106},[100,5896,2144],{"class":1505},[100,5898,603],{"class":106},[100,5900,3572],{"class":3571},[100,5902,333],{"class":106},[100,5904,5905,5907,5910,5912,5914,5916,5919,5921,5923,5925,5927,5929],{"class":102,"line":735},[100,5906,3838],{"class":500},[100,5908,5909],{"class":504}," li",[100,5911,508],{"class":106},[100,5913,4093],{"class":504},[100,5915,552],{"class":106},[100,5917,5918],{"class":560},"createElement",[100,5920,565],{"class":1557},[100,5922,158],{"class":157},[100,5924,37],{"class":161},[100,5926,158],{"class":157},[100,5928,603],{"class":1557},[100,5930,350],{"class":106},[100,5932,5933,5936,5938,5941,5943,5945,5947,5949,5951,5953,5955,5957,5959,5961,5963,5965,5967,5969,5971,5973,5975,5977,5979],{"class":102,"line":746},[100,5934,5935],{"class":504},"    li",[100,5937,552],{"class":106},[100,5939,5940],{"class":504},"textContent",[100,5942,508],{"class":106},[100,5944,1640],{"class":157},[100,5946,1644],{"class":1643},[100,5948,2144],{"class":1647},[100,5950,552],{"class":106},[100,5952,2759],{"class":1647},[100,5954,552],{"class":106},[100,5956,4370],{"class":1647},[100,5958,1651],{"class":1643},[100,5960,2180],{"class":161},[100,5962,1644],{"class":1643},[100,5964,2144],{"class":1647},[100,5966,552],{"class":106},[100,5968,2759],{"class":1647},[100,5970,552],{"class":106},[100,5972,1506],{"class":1647},[100,5974,1651],{"class":1643},[100,5976,603],{"class":161},[100,5978,3388],{"class":157},[100,5980,350],{"class":106},[100,5982,5983,5985,5987,5989,5991,5994],{"class":102,"line":755},[100,5984,5935],{"class":504},[100,5986,552],{"class":106},[100,5988,312],{"class":504},[100,5990,552],{"class":106},[100,5992,5993],{"class":504},"cssText",[100,5995,5996],{"class":106}," =\n",[100,5998,5999,6001,6004,6006],{"class":102,"line":764},[100,6000,2665],{"class":157},[100,6002,6003],{"class":161},"padding: 10px 14px; cursor: pointer; border-bottom: 1px solid #eee; font-size: 14px;",[100,6005,158],{"class":157},[100,6007,350],{"class":106},[100,6009,6010],{"class":102,"line":773},[100,6011,525],{"emptyLinePlaceholder":524},[100,6013,6014,6016,6018,6020,6022,6024,6027,6029,6031,6034,6036,6038,6040,6042,6044,6046,6049,6051,6053,6056,6058,6061],{"class":102,"line":782},[100,6015,5935],{"class":504},[100,6017,552],{"class":106},[100,6019,5265],{"class":560},[100,6021,565],{"class":1557},[100,6023,158],{"class":157},[100,6025,6026],{"class":161},"mouseenter",[100,6028,158],{"class":157},[100,6030,721],{"class":106},[100,6032,6033],{"class":106}," ()",[100,6035,3572],{"class":3571},[100,6037,2180],{"class":1557},[100,6039,37],{"class":504},[100,6041,552],{"class":106},[100,6043,312],{"class":504},[100,6045,552],{"class":106},[100,6047,6048],{"class":504},"backgroundColor",[100,6050,508],{"class":106},[100,6052,511],{"class":157},[100,6054,6055],{"class":161},"#f5f5f5",[100,6057,158],{"class":157},[100,6059,6060],{"class":1557},"))",[100,6062,350],{"class":106},[100,6064,6065,6067,6069,6071,6073,6075,6078,6080,6082,6084,6086,6088,6090,6092,6094,6096,6098,6100,6102,6105,6107,6109],{"class":102,"line":3922},[100,6066,5935],{"class":504},[100,6068,552],{"class":106},[100,6070,5265],{"class":560},[100,6072,565],{"class":1557},[100,6074,158],{"class":157},[100,6076,6077],{"class":161},"mouseleave",[100,6079,158],{"class":157},[100,6081,721],{"class":106},[100,6083,6033],{"class":106},[100,6085,3572],{"class":3571},[100,6087,2180],{"class":1557},[100,6089,37],{"class":504},[100,6091,552],{"class":106},[100,6093,312],{"class":504},[100,6095,552],{"class":106},[100,6097,6048],{"class":504},[100,6099,508],{"class":106},[100,6101,511],{"class":157},[100,6103,6104],{"class":161},"#fff",[100,6106,158],{"class":157},[100,6108,6060],{"class":1557},[100,6110,350],{"class":106},[100,6112,6113],{"class":102,"line":3927},[100,6114,525],{"emptyLinePlaceholder":524},[100,6116,6117,6119,6121,6123,6125,6127,6129,6131,6133,6135,6137],{"class":102,"line":3932},[100,6118,5935],{"class":504},[100,6120,552],{"class":106},[100,6122,5265],{"class":560},[100,6124,565],{"class":1557},[100,6126,158],{"class":157},[100,6128,4235],{"class":161},[100,6130,158],{"class":157},[100,6132,721],{"class":106},[100,6134,6033],{"class":106},[100,6136,3572],{"class":3571},[100,6138,333],{"class":106},[100,6140,6141,6144,6146,6148,6150,6152,6154,6156,6158,6160],{"class":102,"line":3937},[100,6142,6143],{"class":504},"      searchInput",[100,6145,552],{"class":106},[100,6147,5321],{"class":504},[100,6149,508],{"class":106},[100,6151,3841],{"class":504},[100,6153,552],{"class":106},[100,6155,2759],{"class":504},[100,6157,552],{"class":106},[100,6159,4370],{"class":504},[100,6161,350],{"class":106},[100,6163,6164,6167,6169,6171,6173,6175,6177,6179,6181,6183],{"class":102,"line":3943},[100,6165,6166],{"class":504},"      suggestionsEl",[100,6168,552],{"class":106},[100,6170,312],{"class":504},[100,6172,552],{"class":106},[100,6174,4471],{"class":504},[100,6176,508],{"class":106},[100,6178,511],{"class":157},[100,6180,4591],{"class":161},[100,6182,158],{"class":157},[100,6184,350],{"class":106},[100,6186,6188,6191,6193,6195,6197,6199,6201,6203,6205],{"class":102,"line":6187},54,[100,6189,6190],{"class":560},"      searchAndPanTo",[100,6192,565],{"class":1557},[100,6194,2144],{"class":504},[100,6196,552],{"class":106},[100,6198,2759],{"class":504},[100,6200,552],{"class":106},[100,6202,4370],{"class":504},[100,6204,603],{"class":1557},[100,6206,350],{"class":106},[100,6208,6210,6212,6214],{"class":102,"line":6209},55,[100,6211,1686],{"class":106},[100,6213,603],{"class":1557},[100,6215,350],{"class":106},[100,6217,6219],{"class":102,"line":6218},56,[100,6220,525],{"emptyLinePlaceholder":524},[100,6222,6224,6226,6228,6231,6233,6235,6237],{"class":102,"line":6223},57,[100,6225,5360],{"class":504},[100,6227,552],{"class":106},[100,6229,6230],{"class":560},"appendChild",[100,6232,565],{"class":1557},[100,6234,37],{"class":504},[100,6236,603],{"class":1557},[100,6238,350],{"class":106},[100,6240,6242,6244,6246],{"class":102,"line":6241},58,[100,6243,1775],{"class":106},[100,6245,603],{"class":1557},[100,6247,350],{"class":106},[100,6249,6251],{"class":102,"line":6250},59,[100,6252,525],{"emptyLinePlaceholder":524},[100,6254,6256,6258,6260,6262,6264,6266,6268,6270,6272,6274],{"class":102,"line":6255},60,[100,6257,5792],{"class":504},[100,6259,552],{"class":106},[100,6261,312],{"class":504},[100,6263,552],{"class":106},[100,6265,4471],{"class":504},[100,6267,508],{"class":106},[100,6269,511],{"class":157},[100,6271,1164],{"class":161},[100,6273,158],{"class":157},[100,6275,350],{"class":106},[100,6277,6279],{"class":102,"line":6278},61,[100,6280,1784],{"class":106},[100,6282,6284],{"class":102,"line":6283},62,[100,6285,525],{"emptyLinePlaceholder":524},[100,6287,6289,6292,6294,6296,6298,6300,6302,6304,6306,6308,6310,6312,6314],{"class":102,"line":6288},63,[100,6290,6291],{"class":504},"document",[100,6293,552],{"class":106},[100,6295,5265],{"class":560},[100,6297,565],{"class":564},[100,6299,158],{"class":157},[100,6301,4235],{"class":161},[100,6303,158],{"class":157},[100,6305,721],{"class":106},[100,6307,2180],{"class":106},[100,6309,4244],{"class":1505},[100,6311,603],{"class":106},[100,6313,3572],{"class":3571},[100,6315,333],{"class":106},[100,6317,6319,6321,6323,6325,6327,6329,6331,6333,6335,6337,6339,6341,6343,6346,6348,6350,6352,6354,6356],{"class":102,"line":6318},64,[100,6320,2177],{"class":1540},[100,6322,2180],{"class":1557},[100,6324,3465],{"class":545},[100,6326,6291],{"class":504},[100,6328,552],{"class":106},[100,6330,4098],{"class":560},[100,6332,565],{"class":1557},[100,6334,158],{"class":157},[100,6336,5015],{"class":161},[100,6338,158],{"class":157},[100,6340,603],{"class":1557},[100,6342,552],{"class":106},[100,6344,6345],{"class":560},"contains",[100,6347,565],{"class":1557},[100,6349,4244],{"class":504},[100,6351,552],{"class":106},[100,6353,5316],{"class":504},[100,6355,6060],{"class":1557},[100,6357,333],{"class":106},[100,6359,6361,6363,6365,6367,6369,6371,6373,6375,6377,6379],{"class":102,"line":6360},65,[100,6362,5360],{"class":504},[100,6364,552],{"class":106},[100,6366,312],{"class":504},[100,6368,552],{"class":106},[100,6370,4471],{"class":504},[100,6372,508],{"class":106},[100,6374,511],{"class":157},[100,6376,4591],{"class":161},[100,6378,158],{"class":157},[100,6380,350],{"class":106},[100,6382,6384],{"class":102,"line":6383},66,[100,6385,2347],{"class":106},[100,6387,6389,6391,6393],{"class":102,"line":6388},67,[100,6390,1651],{"class":106},[100,6392,603],{"class":564},[100,6394,350],{"class":106},[10,6396,6397,6398,6401],{},"The ",[17,6399,6400],{},"proximity"," parameter passes the current map centre to bias autocomplete results toward the visible area. A user zoomed into Saskatchewan sees Saskatchewan results first.",[26,6403,6405],{"id":6404},"full-working-example","Full working example",[10,6407,6408,6409,6411],{},"Here's the complete HTML file combining all steps. Replace ",[17,6410,514],{}," with your actual key.",[91,6413,6415],{"className":93,"code":6414,"language":95,"meta":96,"style":96},"\u003C!DOCTYPE html>\n\u003Chtml>\n  \u003Chead>\n    \u003Cmeta charset=\"utf-8\" \u002F>\n    \u003Ctitle>Township Canada + OpenLayers\u003C\u002Ftitle>\n    \u003Cmeta\n      name=\"viewport\"\n      content=\"width=device-width, initial-scale=1\"\n    \u002F>\n    \u003Clink\n      rel=\"stylesheet\"\n      href=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fol@9\u002Fol.css\"\n    \u002F>\n    \u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fol@9\u002Fdist\u002Fol.js\">\u003C\u002Fscript>\n    \u003Cstyle>\n      html,\n      body {\n        margin: 0;\n        padding: 0;\n        height: 100%;\n        font-family: -apple-system, BlinkMacSystemFont, sans-serif;\n      }\n      #map {\n        width: 100%;\n        height: 100vh;\n      }\n      #search-container {\n        position: absolute;\n        top: 10px;\n        left: 10px;\n        z-index: 1;\n        width: 320px;\n      }\n      #search-input {\n        width: 100%;\n        padding: 10px 14px;\n        font-size: 14px;\n        border: 1px solid #ccc;\n        border-radius: 6px;\n        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);\n        box-sizing: border-box;\n      }\n      #suggestions {\n        list-style: none;\n        margin: 4px 0 0;\n        padding: 0;\n        background: #fff;\n        border-radius: 6px;\n        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);\n        display: none;\n      }\n      #suggestions li {\n        padding: 10px 14px;\n        cursor: pointer;\n        border-bottom: 1px solid #eee;\n        font-size: 14px;\n      }\n      #suggestions li:hover {\n        background: #f5f5f5;\n      }\n      #suggestions li:last-child {\n        border-bottom: none;\n      }\n      #popup {\n        display: none;\n        position: absolute;\n        background: #fff;\n        padding: 10px 14px;\n        border-radius: 6px;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n        font-size: 14px;\n        pointer-events: none;\n        white-space: nowrap;\n      }\n    \u003C\u002Fstyle>\n  \u003C\u002Fhead>\n  \u003Cbody>\n    \u003Cdiv id=\"search-container\">\n      \u003Cinput\n        id=\"search-input\"\n        type=\"text\"\n        placeholder=\"Search legal land description...\"\n      \u002F>\n      \u003Cul id=\"suggestions\">\u003C\u002Ful>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv id=\"popup\">\u003C\u002Fdiv>\n    \u003Cdiv id=\"map\">\u003C\u002Fdiv>\n\n    \u003Cscript>\n      \u002F\u002F --- Configuration ---\n      const TC_API_KEY = \"YOUR_TOWNSHIP_CANADA_API_KEY\";\n      const TC_TILES = \"https:\u002F\u002Fmaps.townshipcanada.com\";\n      const TC_API = \"https:\u002F\u002Fdeveloper.townshipcanada.com\";\n\n      \u002F\u002F --- Base map ---\n      const map = new ol.Map({\n        target: \"map\",\n        layers: [new ol.layer.Tile({ source: new ol.source.OSM() })],\n        view: new ol.View({\n          center: ol.proj.fromLonLat([-114, 51]),\n          zoom: 9\n        })\n      });\n\n      \u002F\u002F --- Grid layers ---\n      function makeTileLayer(province, layer, minZoom, maxZoom, lineWidth, lineColor) {\n        return new ol.layer.VectorTile({\n          minZoom,\n          maxZoom,\n          source: new ol.source.VectorTile({\n            format: new ol.format.MVT(),\n            url: `${TC_TILES}\u002F${province}\u002F${layer}\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=${TC_API_KEY}`\n          }),\n          style: new ol.style.Style({\n            stroke: new ol.style.Stroke({ color: lineColor, width: lineWidth })\n          })\n        });\n      }\n\n      const twpLayer = makeTileLayer(\"ab\", \"twp\", 6, 11, 1.5, \"#2d5a47\");\n      const secLayer = makeTileLayer(\"ab\", \"sec\", 11, 13, 1.0, \"#4a7c59\");\n      const lsdLayer = makeTileLayer(\"ab\", \"lsd\", 13, 20, 0.5, \"#6b9e7a\");\n\n      map.addLayer(twpLayer);\n      map.addLayer(secLayer);\n      map.addLayer(lsdLayer);\n\n      \u002F\u002F --- Search result layer ---\n      const geojsonFormat = new ol.format.GeoJSON();\n\n      const searchResultLayer = new ol.layer.Vector({\n        source: new ol.source.Vector(),\n        style: new ol.style.Style({\n          stroke: new ol.style.Stroke({ color: \"#2d5a47\", width: 2 }),\n          fill: new ol.style.Fill({ color: \"rgba(45, 90, 71, 0.15)\" })\n        })\n      });\n      map.addLayer(searchResultLayer);\n\n      \u002F\u002F --- Popup overlay ---\n      const popup = document.getElementById(\"popup\");\n      const overlay = new ol.Overlay({\n        element: popup,\n        positioning: \"bottom-center\",\n        offset: [0, -8]\n      });\n      map.addOverlay(overlay);\n\n      \u002F\u002F --- Search API ---\n      async function searchAndPanTo(query) {\n        const response = await fetch(\n          `${TC_API}\u002Fsearch\u002Flegal-location?location=${encodeURIComponent(query)}`,\n          { headers: { \"X-API-Key\": TC_API_KEY } }\n        );\n        const data = await response.json();\n\n        if (!data.features || data.features.length === 0) return;\n\n        const centroid = data.features.find((f) => f.properties.shape === \"centroid\");\n        const polygon = data.features.find((f) => f.geometry.type === \"MultiPolygon\");\n\n        if (!centroid) return;\n\n        const [lng, lat] = centroid.geometry.coordinates;\n        map.getView().animate({\n          center: ol.proj.fromLonLat([lng, lat]),\n          zoom: 14,\n          duration: 1500\n        });\n\n        if (polygon) {\n          searchResultLayer.getSource().clear();\n          const feature = geojsonFormat.readFeature(polygon, {\n            dataProjection: \"EPSG:4326\",\n            featureProjection: \"EPSG:3857\"\n          });\n          searchResultLayer.getSource().addFeature(feature);\n        }\n      }\n\n      \u002F\u002F --- Click to identify ---\n      map.on(\"click\", (e) => {\n        let found = false;\n        popup.style.display = \"none\";\n\n        map.forEachFeatureAtPixel(\n          e.pixel,\n          (feature) => {\n            if (found) return;\n            const props = feature.getProperties();\n            const descriptor = props.legal_location || props.descriptor || props.name;\n            if (descriptor) {\n              popup.innerHTML = `\u003Cstrong>${descriptor}\u003C\u002Fstrong>`;\n              overlay.setPosition(e.coordinate);\n              popup.style.display = \"block\";\n              found = true;\n            }\n          },\n          {\n            layerFilter: (layer) => layer === twpLayer || layer === secLayer || layer === lsdLayer\n          }\n        );\n      });\n\n      map.on(\"pointermove\", (e) => {\n        const hit = map.hasFeatureAtPixel(e.pixel, {\n          layerFilter: (layer) => layer === twpLayer || layer === secLayer || layer === lsdLayer\n        });\n        map.getTargetElement().style.cursor = hit ? \"pointer\" : \"\";\n      });\n\n      \u002F\u002F --- Autocomplete ---\n      const searchInput = document.getElementById(\"search-input\");\n      const suggestionsEl = document.getElementById(\"suggestions\");\n      let debounceTimer;\n\n      searchInput.addEventListener(\"input\", (e) => {\n        clearTimeout(debounceTimer);\n        const query = e.target.value.trim();\n        if (query.length \u003C 2) {\n          suggestionsEl.style.display = \"none\";\n          return;\n        }\n        debounceTimer = setTimeout(() => fetchSuggestions(query), 300);\n      });\n\n      searchInput.addEventListener(\"keydown\", (e) => {\n        if (e.key === \"Enter\") {\n          suggestionsEl.style.display = \"none\";\n          searchAndPanTo(searchInput.value.trim());\n        }\n      });\n\n      async function fetchSuggestions(query) {\n        const center = ol.proj.toLonLat(map.getView().getCenter());\n        const response = await fetch(\n          `${TC_API}\u002Fautocomplete\u002Flegal-location` +\n            `?location=${encodeURIComponent(query)}&limit=3` +\n            `&proximity=${center[0].toFixed(4)},${center[1].toFixed(4)}`,\n          { headers: { \"X-API-Key\": TC_API_KEY } }\n        );\n        const data = await response.json();\n        suggestionsEl.innerHTML = \"\";\n\n        if (!data.features || data.features.length === 0) {\n          suggestionsEl.style.display = \"none\";\n          return;\n        }\n\n        data.features.forEach((feature) => {\n          const li = document.createElement(\"li\");\n          li.textContent = `${feature.properties.legal_location} (${feature.properties.province})`;\n          li.addEventListener(\"click\", () => {\n            searchInput.value = feature.properties.legal_location;\n            suggestionsEl.style.display = \"none\";\n            searchAndPanTo(feature.properties.legal_location);\n          });\n          suggestionsEl.appendChild(li);\n        });\n\n        suggestionsEl.style.display = \"block\";\n      }\n\n      document.addEventListener(\"click\", (e) => {\n        if (!document.getElementById(\"search-container\").contains(e.target)) {\n          suggestionsEl.style.display = \"none\";\n        }\n      });\n    \u003C\u002Fscript>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[17,6416,6417,6427,6435,6443,6461,6477,6483,6495,6507,6511,6517,6529,6541,6545,6567,6575,6581,6587,6597,6607,6619,6642,6646,6654,6666,6678,6682,6690,6702,6717,6730,6741,6754,6758,6766,6778,6794,6807,6829,6842,6883,6895,6899,6907,6919,6936,6946,6960,6972,7009,7020,7024,7034,7050,7062,7082,7094,7098,7113,7126,7130,7145,7155,7159,7167,7177,7187,7199,7216,7229,7268,7281,7293,7306,7311,7320,7329,7338,7357,7365,7379,7393,7407,7413,7436,7445,7450,7473,7496,7501,7510,7516,7533,7550,7567,7572,7578,7599,7614,7666,7685,7716,7725,7732,7741,7746,7752,7788,7810,7818,7826,7850,7874,7916,7926,7950,7992,7999,8008,8013,8018,8069,8120,8171,8176,8194,8211,8228,8233,8239,8264,8269,8294,8317,8341,8389,8427,8434,8443,8460,8465,8471,8498,8519,8531,8547,8567,8576,8593,8598,8604,8622,8638,8668,8694,8702,8723,8728,8766,8771,8822,8873,8878,8895,8900,8929,8949,8978,8989,8999,9008,9013,9026,9046,9070,9086,9100,9109,9132,9138,9143,9148,9154,9183,9197,9220,9225,9236,9248,9262,9278,9298,9331,9344,9372,9394,9417,9429,9435,9441,9447,9485,9491,9498,9507,9512,9541,9568,9606,9615,9652,9661,9666,9672,9699,9726,9736,9741,9770,9784,9811,9832,9856,9864,9869,9901,9910,9915,9944,9969,9992,10014,10019,10028,10033,10050,10087,10102,10119,10145,10202,10227,10234,10255,10271,10276,10311,10334,10341,10346,10351,10377,10404,10454,10479,10503,10527,10549,10558,10575,10584,10589,10612,10617,10622,10652,10693,10716,10721,10730,10739,10748],{"__ignoreMap":96},[100,6418,6419,6421,6423,6425],{"class":102,"line":103},[100,6420,107],{"class":106},[100,6422,111],{"class":110},[100,6424,115],{"class":114},[100,6426,118],{"class":106},[100,6428,6429,6431,6433],{"class":102,"line":121},[100,6430,124],{"class":106},[100,6432,95],{"class":110},[100,6434,118],{"class":106},[100,6436,6437,6439,6441],{"class":102,"line":131},[100,6438,134],{"class":106},[100,6440,137],{"class":110},[100,6442,118],{"class":106},[100,6444,6445,6447,6449,6451,6453,6455,6457,6459],{"class":102,"line":142},[100,6446,145],{"class":106},[100,6448,148],{"class":110},[100,6450,151],{"class":114},[100,6452,154],{"class":106},[100,6454,158],{"class":157},[100,6456,162],{"class":161},[100,6458,158],{"class":157},[100,6460,167],{"class":106},[100,6462,6463,6465,6467,6469,6471,6473,6475],{"class":102,"line":170},[100,6464,145],{"class":106},[100,6466,175],{"class":110},[100,6468,178],{"class":106},[100,6470,182],{"class":181},[100,6472,185],{"class":106},[100,6474,175],{"class":110},[100,6476,118],{"class":106},[100,6478,6479,6481],{"class":102,"line":192},[100,6480,145],{"class":106},[100,6482,197],{"class":110},[100,6484,6485,6487,6489,6491,6493],{"class":102,"line":200},[100,6486,203],{"class":114},[100,6488,154],{"class":106},[100,6490,158],{"class":157},[100,6492,210],{"class":161},[100,6494,213],{"class":157},[100,6496,6497,6499,6501,6503,6505],{"class":102,"line":216},[100,6498,219],{"class":114},[100,6500,154],{"class":106},[100,6502,158],{"class":157},[100,6504,226],{"class":161},[100,6506,213],{"class":157},[100,6508,6509],{"class":102,"line":231},[100,6510,234],{"class":106},[100,6512,6513,6515],{"class":102,"line":237},[100,6514,145],{"class":106},[100,6516,242],{"class":110},[100,6518,6519,6521,6523,6525,6527],{"class":102,"line":245},[100,6520,248],{"class":114},[100,6522,154],{"class":106},[100,6524,158],{"class":157},[100,6526,255],{"class":161},[100,6528,213],{"class":157},[100,6530,6531,6533,6535,6537,6539],{"class":102,"line":260},[100,6532,263],{"class":114},[100,6534,154],{"class":106},[100,6536,158],{"class":157},[100,6538,270],{"class":161},[100,6540,213],{"class":157},[100,6542,6543],{"class":102,"line":275},[100,6544,234],{"class":106},[100,6546,6547,6549,6551,6553,6555,6557,6559,6561,6563,6565],{"class":102,"line":280},[100,6548,145],{"class":106},[100,6550,285],{"class":110},[100,6552,288],{"class":114},[100,6554,154],{"class":106},[100,6556,158],{"class":157},[100,6558,295],{"class":161},[100,6560,158],{"class":157},[100,6562,300],{"class":106},[100,6564,285],{"class":110},[100,6566,118],{"class":106},[100,6568,6569,6571,6573],{"class":102,"line":307},[100,6570,145],{"class":106},[100,6572,312],{"class":110},[100,6574,118],{"class":106},[100,6576,6577,6579],{"class":102,"line":317},[100,6578,321],{"class":320},[100,6580,324],{"class":106},[100,6582,6583,6585],{"class":102,"line":327},[100,6584,330],{"class":320},[100,6586,333],{"class":106},[100,6588,6589,6591,6593,6595],{"class":102,"line":336},[100,6590,340],{"class":339},[100,6592,343],{"class":106},[100,6594,347],{"class":346},[100,6596,350],{"class":106},[100,6598,6599,6601,6603,6605],{"class":102,"line":353},[100,6600,356],{"class":339},[100,6602,343],{"class":106},[100,6604,347],{"class":346},[100,6606,350],{"class":106},[100,6608,6609,6611,6613,6615,6617],{"class":102,"line":365},[100,6610,368],{"class":339},[100,6612,343],{"class":106},[100,6614,373],{"class":346},[100,6616,377],{"class":376},[100,6618,350],{"class":106},[100,6620,6621,6624,6626,6630,6632,6635,6637,6640],{"class":102,"line":382},[100,6622,6623],{"class":339},"        font-family",[100,6625,343],{"class":106},[100,6627,6629],{"class":6628},"se3Ec"," -apple-system",[100,6631,721],{"class":106},[100,6633,6634],{"class":181}," BlinkMacSystemFont",[100,6636,721],{"class":106},[100,6638,6639],{"class":6628}," sans-serif",[100,6641,350],{"class":106},[100,6643,6644],{"class":102,"line":388},[100,6645,385],{"class":106},[100,6647,6648,6650,6652],{"class":102,"line":400},[100,6649,391],{"class":106},[100,6651,395],{"class":394},[100,6653,333],{"class":106},[100,6655,6656,6658,6660,6662,6664],{"class":102,"line":414},[100,6657,403],{"class":339},[100,6659,343],{"class":106},[100,6661,373],{"class":346},[100,6663,377],{"class":376},[100,6665,350],{"class":106},[100,6667,6668,6670,6672,6674,6676],{"class":102,"line":428},[100,6669,368],{"class":339},[100,6671,343],{"class":106},[100,6673,373],{"class":346},[100,6675,423],{"class":376},[100,6677,350],{"class":106},[100,6679,6680],{"class":102,"line":433},[100,6681,385],{"class":106},[100,6683,6684,6686,6688],{"class":102,"line":443},[100,6685,391],{"class":106},[100,6687,5015],{"class":394},[100,6689,333],{"class":106},[100,6691,6692,6695,6697,6700],{"class":102,"line":453},[100,6693,6694],{"class":339},"        position",[100,6696,343],{"class":106},[100,6698,6699],{"class":6628}," absolute",[100,6701,350],{"class":106},[100,6703,6704,6707,6709,6712,6715],{"class":102,"line":463},[100,6705,6706],{"class":339},"        top",[100,6708,343],{"class":106},[100,6710,6711],{"class":346}," 10",[100,6713,6714],{"class":376},"px",[100,6716,350],{"class":106},[100,6718,6719,6722,6724,6726,6728],{"class":102,"line":488},[100,6720,6721],{"class":339},"        left",[100,6723,343],{"class":106},[100,6725,6711],{"class":346},[100,6727,6714],{"class":376},[100,6729,350],{"class":106},[100,6731,6732,6735,6737,6739],{"class":102,"line":497},[100,6733,6734],{"class":339},"        z-index",[100,6736,343],{"class":106},[100,6738,2294],{"class":346},[100,6740,350],{"class":106},[100,6742,6743,6745,6747,6750,6752],{"class":102,"line":521},[100,6744,403],{"class":339},[100,6746,343],{"class":106},[100,6748,6749],{"class":346}," 320",[100,6751,6714],{"class":376},[100,6753,350],{"class":106},[100,6755,6756],{"class":102,"line":528},[100,6757,385],{"class":106},[100,6759,6760,6762,6764],{"class":102,"line":535},[100,6761,391],{"class":106},[100,6763,5057],{"class":394},[100,6765,333],{"class":106},[100,6767,6768,6770,6772,6774,6776],{"class":102,"line":571},[100,6769,403],{"class":339},[100,6771,343],{"class":106},[100,6773,373],{"class":346},[100,6775,377],{"class":376},[100,6777,350],{"class":106},[100,6779,6780,6782,6784,6786,6788,6790,6792],{"class":102,"line":597},[100,6781,356],{"class":339},[100,6783,343],{"class":106},[100,6785,6711],{"class":346},[100,6787,6714],{"class":376},[100,6789,3766],{"class":346},[100,6791,6714],{"class":376},[100,6793,350],{"class":106},[100,6795,6796,6799,6801,6803,6805],{"class":102,"line":608},[100,6797,6798],{"class":339},"        font-size",[100,6800,343],{"class":106},[100,6802,3766],{"class":346},[100,6804,6714],{"class":376},[100,6806,350],{"class":106},[100,6808,6809,6812,6814,6816,6818,6821,6824,6827],{"class":102,"line":613},[100,6810,6811],{"class":339},"        border",[100,6813,343],{"class":106},[100,6815,2294],{"class":346},[100,6817,6714],{"class":376},[100,6819,6820],{"class":6628}," solid",[100,6822,6823],{"class":106}," #",[100,6825,6826],{"class":6628},"ccc",[100,6828,350],{"class":106},[100,6830,6831,6834,6836,6838,6840],{"class":102,"line":636},[100,6832,6833],{"class":339},"        border-radius",[100,6835,343],{"class":106},[100,6837,1825],{"class":346},[100,6839,6714],{"class":376},[100,6841,350],{"class":106},[100,6843,6844,6847,6849,6851,6853,6855,6857,6859,6863,6865,6867,6869,6871,6873,6875,6877,6880],{"class":102,"line":652},[100,6845,6846],{"class":339},"        box-shadow",[100,6848,343],{"class":106},[100,6850,347],{"class":346},[100,6852,2202],{"class":346},[100,6854,6714],{"class":376},[100,6856,1825],{"class":346},[100,6858,6714],{"class":376},[100,6860,6862],{"class":6861},"sJdAF"," rgba",[100,6864,565],{"class":106},[100,6866,4180],{"class":346},[100,6868,721],{"class":106},[100,6870,347],{"class":346},[100,6872,721],{"class":106},[100,6874,347],{"class":346},[100,6876,721],{"class":106},[100,6878,6879],{"class":346}," 0.1",[100,6881,6882],{"class":106},");\n",[100,6884,6885,6888,6890,6893],{"class":102,"line":671},[100,6886,6887],{"class":339},"        box-sizing",[100,6889,343],{"class":106},[100,6891,6892],{"class":6628}," border-box",[100,6894,350],{"class":106},[100,6896,6897],{"class":102,"line":692},[100,6898,385],{"class":106},[100,6900,6901,6903,6905],{"class":102,"line":735},[100,6902,391],{"class":106},[100,6904,5132],{"class":394},[100,6906,333],{"class":106},[100,6908,6909,6912,6914,6917],{"class":102,"line":746},[100,6910,6911],{"class":339},"        list-style",[100,6913,343],{"class":106},[100,6915,6916],{"class":6628}," none",[100,6918,350],{"class":106},[100,6920,6921,6923,6925,6928,6930,6932,6934],{"class":102,"line":755},[100,6922,340],{"class":339},[100,6924,343],{"class":106},[100,6926,6927],{"class":346}," 4",[100,6929,6714],{"class":376},[100,6931,347],{"class":346},[100,6933,347],{"class":346},[100,6935,350],{"class":106},[100,6937,6938,6940,6942,6944],{"class":102,"line":764},[100,6939,356],{"class":339},[100,6941,343],{"class":106},[100,6943,347],{"class":346},[100,6945,350],{"class":106},[100,6947,6948,6951,6953,6955,6958],{"class":102,"line":773},[100,6949,6950],{"class":339},"        background",[100,6952,343],{"class":106},[100,6954,6823],{"class":106},[100,6956,6957],{"class":6628},"fff",[100,6959,350],{"class":106},[100,6961,6962,6964,6966,6968,6970],{"class":102,"line":782},[100,6963,6833],{"class":339},[100,6965,343],{"class":106},[100,6967,1825],{"class":346},[100,6969,6714],{"class":376},[100,6971,350],{"class":106},[100,6973,6974,6976,6978,6980,6982,6984,6986,6988,6990,6992,6994,6996,6998,7000,7002,7004,7007],{"class":102,"line":3922},[100,6975,6846],{"class":339},[100,6977,343],{"class":106},[100,6979,347],{"class":346},[100,6981,2202],{"class":346},[100,6983,6714],{"class":376},[100,6985,1825],{"class":346},[100,6987,6714],{"class":376},[100,6989,6862],{"class":6861},[100,6991,565],{"class":106},[100,6993,4180],{"class":346},[100,6995,721],{"class":106},[100,6997,347],{"class":346},[100,6999,721],{"class":106},[100,7001,347],{"class":346},[100,7003,721],{"class":106},[100,7005,7006],{"class":346}," 0.15",[100,7008,6882],{"class":106},[100,7010,7011,7014,7016,7018],{"class":102,"line":3927},[100,7012,7013],{"class":339},"        display",[100,7015,343],{"class":106},[100,7017,6916],{"class":6628},[100,7019,350],{"class":106},[100,7021,7022],{"class":102,"line":3932},[100,7023,385],{"class":106},[100,7025,7026,7028,7030,7032],{"class":102,"line":3937},[100,7027,391],{"class":106},[100,7029,5132],{"class":394},[100,7031,5909],{"class":320},[100,7033,333],{"class":106},[100,7035,7036,7038,7040,7042,7044,7046,7048],{"class":102,"line":3943},[100,7037,356],{"class":339},[100,7039,343],{"class":106},[100,7041,6711],{"class":346},[100,7043,6714],{"class":376},[100,7045,3766],{"class":346},[100,7047,6714],{"class":376},[100,7049,350],{"class":106},[100,7051,7052,7055,7057,7060],{"class":102,"line":6187},[100,7053,7054],{"class":339},"        cursor",[100,7056,343],{"class":106},[100,7058,7059],{"class":6628}," pointer",[100,7061,350],{"class":106},[100,7063,7064,7067,7069,7071,7073,7075,7077,7080],{"class":102,"line":6209},[100,7065,7066],{"class":339},"        border-bottom",[100,7068,343],{"class":106},[100,7070,2294],{"class":346},[100,7072,6714],{"class":376},[100,7074,6820],{"class":6628},[100,7076,6823],{"class":106},[100,7078,7079],{"class":6628},"eee",[100,7081,350],{"class":106},[100,7083,7084,7086,7088,7090,7092],{"class":102,"line":6218},[100,7085,6798],{"class":339},[100,7087,343],{"class":106},[100,7089,3766],{"class":346},[100,7091,6714],{"class":376},[100,7093,350],{"class":106},[100,7095,7096],{"class":102,"line":6223},[100,7097,385],{"class":106},[100,7099,7100,7102,7104,7106,7108,7111],{"class":102,"line":6241},[100,7101,391],{"class":106},[100,7103,5132],{"class":394},[100,7105,5909],{"class":320},[100,7107,343],{"class":106},[100,7109,7110],{"class":114},"hover",[100,7112,333],{"class":106},[100,7114,7115,7117,7119,7121,7124],{"class":102,"line":6250},[100,7116,6950],{"class":339},[100,7118,343],{"class":106},[100,7120,6823],{"class":106},[100,7122,7123],{"class":6628},"f5f5f5",[100,7125,350],{"class":106},[100,7127,7128],{"class":102,"line":6255},[100,7129,385],{"class":106},[100,7131,7132,7134,7136,7138,7140,7143],{"class":102,"line":6278},[100,7133,391],{"class":106},[100,7135,5132],{"class":394},[100,7137,5909],{"class":320},[100,7139,343],{"class":106},[100,7141,7142],{"class":114},"last-child",[100,7144,333],{"class":106},[100,7146,7147,7149,7151,7153],{"class":102,"line":6283},[100,7148,7066],{"class":339},[100,7150,343],{"class":106},[100,7152,6916],{"class":6628},[100,7154,350],{"class":106},[100,7156,7157],{"class":102,"line":6288},[100,7158,385],{"class":106},[100,7160,7161,7163,7165],{"class":102,"line":6318},[100,7162,391],{"class":106},[100,7164,4001],{"class":394},[100,7166,333],{"class":106},[100,7168,7169,7171,7173,7175],{"class":102,"line":6360},[100,7170,7013],{"class":339},[100,7172,343],{"class":106},[100,7174,6916],{"class":6628},[100,7176,350],{"class":106},[100,7178,7179,7181,7183,7185],{"class":102,"line":6383},[100,7180,6694],{"class":339},[100,7182,343],{"class":106},[100,7184,6699],{"class":6628},[100,7186,350],{"class":106},[100,7188,7189,7191,7193,7195,7197],{"class":102,"line":6388},[100,7190,6950],{"class":339},[100,7192,343],{"class":106},[100,7194,6823],{"class":106},[100,7196,6957],{"class":6628},[100,7198,350],{"class":106},[100,7200,7202,7204,7206,7208,7210,7212,7214],{"class":102,"line":7201},68,[100,7203,356],{"class":339},[100,7205,343],{"class":106},[100,7207,6711],{"class":346},[100,7209,6714],{"class":376},[100,7211,3766],{"class":346},[100,7213,6714],{"class":376},[100,7215,350],{"class":106},[100,7217,7219,7221,7223,7225,7227],{"class":102,"line":7218},69,[100,7220,6833],{"class":339},[100,7222,343],{"class":106},[100,7224,1825],{"class":346},[100,7226,6714],{"class":376},[100,7228,350],{"class":106},[100,7230,7232,7234,7236,7238,7240,7242,7245,7247,7249,7251,7253,7255,7257,7259,7261,7263,7266],{"class":102,"line":7231},70,[100,7233,6846],{"class":339},[100,7235,343],{"class":106},[100,7237,347],{"class":346},[100,7239,2202],{"class":346},[100,7241,6714],{"class":376},[100,7243,7244],{"class":346}," 8",[100,7246,6714],{"class":376},[100,7248,6862],{"class":6861},[100,7250,565],{"class":106},[100,7252,4180],{"class":346},[100,7254,721],{"class":106},[100,7256,347],{"class":346},[100,7258,721],{"class":106},[100,7260,347],{"class":346},[100,7262,721],{"class":106},[100,7264,7265],{"class":346}," 0.2",[100,7267,6882],{"class":106},[100,7269,7271,7273,7275,7277,7279],{"class":102,"line":7270},71,[100,7272,6798],{"class":339},[100,7274,343],{"class":106},[100,7276,3766],{"class":346},[100,7278,6714],{"class":376},[100,7280,350],{"class":106},[100,7282,7284,7287,7289,7291],{"class":102,"line":7283},72,[100,7285,7286],{"class":339},"        pointer-events",[100,7288,343],{"class":106},[100,7290,6916],{"class":6628},[100,7292,350],{"class":106},[100,7294,7296,7299,7301,7304],{"class":102,"line":7295},73,[100,7297,7298],{"class":339},"        white-space",[100,7300,343],{"class":106},[100,7302,7303],{"class":6628}," nowrap",[100,7305,350],{"class":106},[100,7307,7309],{"class":102,"line":7308},74,[100,7310,385],{"class":106},[100,7312,7314,7316,7318],{"class":102,"line":7313},75,[100,7315,436],{"class":106},[100,7317,312],{"class":110},[100,7319,118],{"class":106},[100,7321,7323,7325,7327],{"class":102,"line":7322},76,[100,7324,446],{"class":106},[100,7326,137],{"class":110},[100,7328,118],{"class":106},[100,7330,7332,7334,7336],{"class":102,"line":7331},77,[100,7333,134],{"class":106},[100,7335,458],{"class":110},[100,7337,118],{"class":106},[100,7339,7341,7343,7345,7347,7349,7351,7353,7355],{"class":102,"line":7340},78,[100,7342,145],{"class":106},[100,7344,468],{"class":110},[100,7346,471],{"class":114},[100,7348,154],{"class":106},[100,7350,158],{"class":157},[100,7352,5015],{"class":161},[100,7354,158],{"class":157},[100,7356,118],{"class":106},[100,7358,7360,7363],{"class":102,"line":7359},79,[100,7361,7362],{"class":106},"      \u003C",[100,7364,5045],{"class":110},[100,7366,7368,7371,7373,7375,7377],{"class":102,"line":7367},80,[100,7369,7370],{"class":114},"        id",[100,7372,154],{"class":106},[100,7374,158],{"class":157},[100,7376,5057],{"class":161},[100,7378,213],{"class":157},[100,7380,7382,7385,7387,7389,7391],{"class":102,"line":7381},81,[100,7383,7384],{"class":114},"        type",[100,7386,154],{"class":106},[100,7388,158],{"class":157},[100,7390,811],{"class":161},[100,7392,213],{"class":157},[100,7394,7396,7399,7401,7403,7405],{"class":102,"line":7395},82,[100,7397,7398],{"class":114},"        placeholder",[100,7400,154],{"class":106},[100,7402,158],{"class":157},[100,7404,5084],{"class":161},[100,7406,213],{"class":157},[100,7408,7410],{"class":102,"line":7409},83,[100,7411,7412],{"class":106},"      \u002F>\n",[100,7414,7416,7418,7420,7422,7424,7426,7428,7430,7432,7434],{"class":102,"line":7415},84,[100,7417,7362],{"class":106},[100,7419,34],{"class":110},[100,7421,471],{"class":114},[100,7423,154],{"class":106},[100,7425,158],{"class":157},[100,7427,5132],{"class":161},[100,7429,158],{"class":157},[100,7431,300],{"class":106},[100,7433,34],{"class":110},[100,7435,118],{"class":106},[100,7437,7439,7441,7443],{"class":102,"line":7438},85,[100,7440,436],{"class":106},[100,7442,468],{"class":110},[100,7444,118],{"class":106},[100,7446,7448],{"class":102,"line":7447},86,[100,7449,525],{"emptyLinePlaceholder":524},[100,7451,7453,7455,7457,7459,7461,7463,7465,7467,7469,7471],{"class":102,"line":7452},87,[100,7454,145],{"class":106},[100,7456,468],{"class":110},[100,7458,471],{"class":114},[100,7460,154],{"class":106},[100,7462,158],{"class":157},[100,7464,4001],{"class":161},[100,7466,158],{"class":157},[100,7468,300],{"class":106},[100,7470,468],{"class":110},[100,7472,118],{"class":106},[100,7474,7476,7478,7480,7482,7484,7486,7488,7490,7492,7494],{"class":102,"line":7475},88,[100,7477,145],{"class":106},[100,7479,468],{"class":110},[100,7481,471],{"class":114},[100,7483,154],{"class":106},[100,7485,158],{"class":157},[100,7487,395],{"class":161},[100,7489,158],{"class":157},[100,7491,300],{"class":106},[100,7493,468],{"class":110},[100,7495,118],{"class":106},[100,7497,7499],{"class":102,"line":7498},89,[100,7500,525],{"emptyLinePlaceholder":524},[100,7502,7504,7506,7508],{"class":102,"line":7503},90,[100,7505,145],{"class":106},[100,7507,285],{"class":110},[100,7509,118],{"class":106},[100,7511,7513],{"class":102,"line":7512},91,[100,7514,7515],{"class":531},"      \u002F\u002F --- Configuration ---\n",[100,7517,7519,7521,7523,7525,7527,7529,7531],{"class":102,"line":7518},92,[100,7520,501],{"class":500},[100,7522,505],{"class":504},[100,7524,508],{"class":106},[100,7526,511],{"class":157},[100,7528,514],{"class":161},[100,7530,158],{"class":157},[100,7532,350],{"class":106},[100,7534,7536,7538,7540,7542,7544,7546,7548],{"class":102,"line":7535},93,[100,7537,501],{"class":500},[100,7539,1477],{"class":504},[100,7541,508],{"class":106},[100,7543,511],{"class":157},[100,7545,1484],{"class":161},[100,7547,158],{"class":157},[100,7549,350],{"class":106},[100,7551,7553,7555,7557,7559,7561,7563,7565],{"class":102,"line":7552},94,[100,7554,501],{"class":500},[100,7556,3277],{"class":504},[100,7558,508],{"class":106},[100,7560,511],{"class":157},[100,7562,3284],{"class":161},[100,7564,158],{"class":157},[100,7566,350],{"class":106},[100,7568,7570],{"class":102,"line":7569},95,[100,7571,525],{"emptyLinePlaceholder":524},[100,7573,7575],{"class":102,"line":7574},96,[100,7576,7577],{"class":531},"      \u002F\u002F --- Base map ---\n",[100,7579,7581,7583,7585,7587,7589,7591,7593,7595,7597],{"class":102,"line":7580},97,[100,7582,501],{"class":500},[100,7584,618],{"class":504},[100,7586,508],{"class":106},[100,7588,546],{"class":545},[100,7590,549],{"class":504},[100,7592,552],{"class":106},[100,7594,629],{"class":560},[100,7596,565],{"class":564},[100,7598,568],{"class":106},[100,7600,7602,7604,7606,7608,7610,7612],{"class":102,"line":7601},98,[100,7603,639],{"class":574},[100,7605,343],{"class":106},[100,7607,511],{"class":157},[100,7609,395],{"class":161},[100,7611,158],{"class":157},[100,7613,324],{"class":106},[100,7615,7617,7619,7621,7623,7626,7628,7630,7632,7634,7636,7638,7640,7643,7645,7647,7649,7651,7653,7655,7657,7659,7661,7664],{"class":102,"line":7616},99,[100,7618,655],{"class":574},[100,7620,343],{"class":106},[100,7622,660],{"class":564},[100,7624,7625],{"class":545},"new",[100,7627,549],{"class":504},[100,7629,552],{"class":106},[100,7631,555],{"class":504},[100,7633,552],{"class":106},[100,7635,561],{"class":560},[100,7637,565],{"class":564},[100,7639,2395],{"class":106},[100,7641,7642],{"class":574}," source",[100,7644,343],{"class":106},[100,7646,546],{"class":545},[100,7648,549],{"class":504},[100,7650,552],{"class":106},[100,7652,586],{"class":504},[100,7654,552],{"class":106},[100,7656,591],{"class":560},[100,7658,1628],{"class":564},[100,7660,2404],{"class":106},[100,7662,7663],{"class":564},")]",[100,7665,324],{"class":106},[100,7667,7669,7671,7673,7675,7677,7679,7681,7683],{"class":102,"line":7668},100,[100,7670,674],{"class":574},[100,7672,343],{"class":106},[100,7674,546],{"class":545},[100,7676,549],{"class":504},[100,7678,552],{"class":106},[100,7680,685],{"class":560},[100,7682,565],{"class":564},[100,7684,568],{"class":106},[100,7686,7688,7690,7692,7694,7696,7698,7700,7702,7704,7706,7708,7710,7712,7714],{"class":102,"line":7687},101,[100,7689,695],{"class":574},[100,7691,343],{"class":106},[100,7693,549],{"class":504},[100,7695,552],{"class":106},[100,7697,704],{"class":504},[100,7699,552],{"class":106},[100,7701,709],{"class":560},[100,7703,712],{"class":564},[100,7705,715],{"class":545},[100,7707,718],{"class":346},[100,7709,721],{"class":106},[100,7711,724],{"class":346},[100,7713,727],{"class":564},[100,7715,324],{"class":106},[100,7717,7719,7721,7723],{"class":102,"line":7718},102,[100,7720,738],{"class":574},[100,7722,343],{"class":106},[100,7724,743],{"class":346},[100,7726,7728,7730],{"class":102,"line":7727},103,[100,7729,749],{"class":106},[100,7731,752],{"class":564},[100,7733,7735,7737,7739],{"class":102,"line":7734},104,[100,7736,600],{"class":106},[100,7738,603],{"class":564},[100,7740,350],{"class":106},[100,7742,7744],{"class":102,"line":7743},105,[100,7745,525],{"emptyLinePlaceholder":524},[100,7747,7749],{"class":102,"line":7748},106,[100,7750,7751],{"class":531},"      \u002F\u002F --- Grid layers ---\n",[100,7753,7755,7758,7760,7762,7764,7766,7768,7770,7772,7774,7776,7778,7780,7782,7784,7786],{"class":102,"line":7754},107,[100,7756,7757],{"class":500},"      function",[100,7759,1500],{"class":560},[100,7761,565],{"class":106},[100,7763,1506],{"class":1505},[100,7765,721],{"class":106},[100,7767,1511],{"class":1505},[100,7769,721],{"class":106},[100,7771,1516],{"class":1505},[100,7773,721],{"class":106},[100,7775,1521],{"class":1505},[100,7777,721],{"class":106},[100,7779,1526],{"class":1505},[100,7781,721],{"class":106},[100,7783,1531],{"class":1505},[100,7785,603],{"class":106},[100,7787,333],{"class":106},[100,7789,7791,7794,7796,7798,7800,7802,7804,7806,7808],{"class":102,"line":7790},108,[100,7792,7793],{"class":1540},"        return",[100,7795,546],{"class":545},[100,7797,549],{"class":504},[100,7799,552],{"class":106},[100,7801,555],{"class":504},[100,7803,552],{"class":106},[100,7805,1554],{"class":560},[100,7807,565],{"class":1557},[100,7809,568],{"class":106},[100,7811,7813,7816],{"class":102,"line":7812},109,[100,7814,7815],{"class":504},"          minZoom",[100,7817,324],{"class":106},[100,7819,7821,7824],{"class":102,"line":7820},110,[100,7822,7823],{"class":504},"          maxZoom",[100,7825,324],{"class":106},[100,7827,7829,7832,7834,7836,7838,7840,7842,7844,7846,7848],{"class":102,"line":7828},111,[100,7830,7831],{"class":574},"          source",[100,7833,343],{"class":106},[100,7835,546],{"class":545},[100,7837,549],{"class":504},[100,7839,552],{"class":106},[100,7841,586],{"class":504},[100,7843,552],{"class":106},[100,7845,1554],{"class":560},[100,7847,565],{"class":1557},[100,7849,568],{"class":106},[100,7851,7853,7856,7858,7860,7862,7864,7866,7868,7870,7872],{"class":102,"line":7852},112,[100,7854,7855],{"class":574},"            format",[100,7857,343],{"class":106},[100,7859,546],{"class":545},[100,7861,549],{"class":504},[100,7863,552],{"class":106},[100,7865,1620],{"class":504},[100,7867,552],{"class":106},[100,7869,1625],{"class":560},[100,7871,1628],{"class":1557},[100,7873,324],{"class":106},[100,7875,7877,7880,7882,7884,7886,7888,7890,7892,7894,7896,7898,7900,7902,7904,7906,7908,7910,7912,7914],{"class":102,"line":7876},113,[100,7878,7879],{"class":574},"            url",[100,7881,343],{"class":106},[100,7883,1640],{"class":157},[100,7885,1644],{"class":1643},[100,7887,1648],{"class":1647},[100,7889,1651],{"class":1643},[100,7891,1654],{"class":161},[100,7893,1644],{"class":1643},[100,7895,1506],{"class":1647},[100,7897,1651],{"class":1643},[100,7899,1654],{"class":161},[100,7901,1644],{"class":1643},[100,7903,555],{"class":1647},[100,7905,1651],{"class":1643},[100,7907,1671],{"class":161},[100,7909,1644],{"class":1643},[100,7911,1676],{"class":1647},[100,7913,1651],{"class":1643},[100,7915,1681],{"class":157},[100,7917,7919,7922,7924],{"class":102,"line":7918},114,[100,7920,7921],{"class":106},"          }",[100,7923,603],{"class":1557},[100,7925,324],{"class":106},[100,7927,7929,7932,7934,7936,7938,7940,7942,7944,7946,7948],{"class":102,"line":7928},115,[100,7930,7931],{"class":574},"          style",[100,7933,343],{"class":106},[100,7935,546],{"class":545},[100,7937,549],{"class":504},[100,7939,552],{"class":106},[100,7941,312],{"class":504},[100,7943,552],{"class":106},[100,7945,1710],{"class":560},[100,7947,565],{"class":1557},[100,7949,568],{"class":106},[100,7951,7953,7956,7958,7960,7962,7964,7966,7968,7970,7972,7974,7976,7978,7980,7982,7984,7986,7988,7990],{"class":102,"line":7952},116,[100,7954,7955],{"class":574},"            stroke",[100,7957,343],{"class":106},[100,7959,546],{"class":545},[100,7961,549],{"class":504},[100,7963,552],{"class":106},[100,7965,312],{"class":504},[100,7967,552],{"class":106},[100,7969,1734],{"class":560},[100,7971,565],{"class":1557},[100,7973,2395],{"class":106},[100,7975,2166],{"class":574},[100,7977,343],{"class":106},[100,7979,1531],{"class":504},[100,7981,721],{"class":106},[100,7983,2161],{"class":574},[100,7985,343],{"class":106},[100,7987,1526],{"class":504},[100,7989,2404],{"class":106},[100,7991,752],{"class":1557},[100,7993,7995,7997],{"class":102,"line":7994},117,[100,7996,7921],{"class":106},[100,7998,752],{"class":1557},[100,8000,8002,8004,8006],{"class":102,"line":8001},118,[100,8003,749],{"class":106},[100,8005,603],{"class":1557},[100,8007,350],{"class":106},[100,8009,8011],{"class":102,"line":8010},119,[100,8012,385],{"class":106},[100,8014,8016],{"class":102,"line":8015},120,[100,8017,525],{"emptyLinePlaceholder":524},[100,8019,8021,8023,8025,8027,8029,8031,8033,8035,8037,8039,8041,8043,8045,8047,8049,8051,8053,8055,8057,8059,8061,8063,8065,8067],{"class":102,"line":8020},121,[100,8022,501],{"class":500},[100,8024,1800],{"class":504},[100,8026,508],{"class":106},[100,8028,1500],{"class":560},[100,8030,565],{"class":564},[100,8032,158],{"class":157},[100,8034,826],{"class":161},[100,8036,158],{"class":157},[100,8038,721],{"class":106},[100,8040,511],{"class":157},[100,8042,873],{"class":161},[100,8044,158],{"class":157},[100,8046,721],{"class":106},[100,8048,1825],{"class":346},[100,8050,721],{"class":106},[100,8052,1830],{"class":346},[100,8054,721],{"class":106},[100,8056,1835],{"class":346},[100,8058,721],{"class":106},[100,8060,511],{"class":157},[100,8062,1842],{"class":161},[100,8064,158],{"class":157},[100,8066,603],{"class":564},[100,8068,350],{"class":106},[100,8070,8072,8074,8076,8078,8080,8082,8084,8086,8088,8090,8092,8094,8096,8098,8100,8102,8104,8106,8108,8110,8112,8114,8116,8118],{"class":102,"line":8071},122,[100,8073,501],{"class":500},[100,8075,1864],{"class":504},[100,8077,508],{"class":106},[100,8079,1500],{"class":560},[100,8081,565],{"class":564},[100,8083,158],{"class":157},[100,8085,826],{"class":161},[100,8087,158],{"class":157},[100,8089,721],{"class":106},[100,8091,511],{"class":157},[100,8093,915],{"class":161},[100,8095,158],{"class":157},[100,8097,721],{"class":106},[100,8099,1830],{"class":346},[100,8101,721],{"class":106},[100,8103,1893],{"class":346},[100,8105,721],{"class":106},[100,8107,1898],{"class":346},[100,8109,721],{"class":106},[100,8111,511],{"class":157},[100,8113,1905],{"class":161},[100,8115,158],{"class":157},[100,8117,603],{"class":564},[100,8119,350],{"class":106},[100,8121,8123,8125,8127,8129,8131,8133,8135,8137,8139,8141,8143,8145,8147,8149,8151,8153,8155,8157,8159,8161,8163,8165,8167,8169],{"class":102,"line":8122},123,[100,8124,501],{"class":500},[100,8126,1927],{"class":504},[100,8128,508],{"class":106},[100,8130,1500],{"class":560},[100,8132,565],{"class":564},[100,8134,158],{"class":157},[100,8136,826],{"class":161},[100,8138,158],{"class":157},[100,8140,721],{"class":106},[100,8142,511],{"class":157},[100,8144,994],{"class":161},[100,8146,158],{"class":157},[100,8148,721],{"class":106},[100,8150,1893],{"class":346},[100,8152,721],{"class":106},[100,8154,1956],{"class":346},[100,8156,721],{"class":106},[100,8158,1961],{"class":346},[100,8160,721],{"class":106},[100,8162,511],{"class":157},[100,8164,1968],{"class":161},[100,8166,158],{"class":157},[100,8168,603],{"class":564},[100,8170,350],{"class":106},[100,8172,8174],{"class":102,"line":8173},124,[100,8175,525],{"emptyLinePlaceholder":524},[100,8177,8179,8182,8184,8186,8188,8190,8192],{"class":102,"line":8178},125,[100,8180,8181],{"class":504},"      map",[100,8183,552],{"class":106},[100,8185,1987],{"class":560},[100,8187,565],{"class":564},[100,8189,1992],{"class":504},[100,8191,603],{"class":564},[100,8193,350],{"class":106},[100,8195,8197,8199,8201,8203,8205,8207,8209],{"class":102,"line":8196},126,[100,8198,8181],{"class":504},[100,8200,552],{"class":106},[100,8202,1987],{"class":560},[100,8204,565],{"class":564},[100,8206,2009],{"class":504},[100,8208,603],{"class":564},[100,8210,350],{"class":106},[100,8212,8214,8216,8218,8220,8222,8224,8226],{"class":102,"line":8213},127,[100,8215,8181],{"class":504},[100,8217,552],{"class":106},[100,8219,1987],{"class":560},[100,8221,565],{"class":564},[100,8223,2026],{"class":504},[100,8225,603],{"class":564},[100,8227,350],{"class":106},[100,8229,8231],{"class":102,"line":8230},128,[100,8232,525],{"emptyLinePlaceholder":524},[100,8234,8236],{"class":102,"line":8235},129,[100,8237,8238],{"class":531},"      \u002F\u002F --- Search result layer ---\n",[100,8240,8242,8244,8246,8248,8250,8252,8254,8256,8258,8260,8262],{"class":102,"line":8241},130,[100,8243,501],{"class":500},[100,8245,3295],{"class":504},[100,8247,508],{"class":106},[100,8249,546],{"class":545},[100,8251,549],{"class":504},[100,8253,552],{"class":106},[100,8255,1620],{"class":504},[100,8257,552],{"class":106},[100,8259,3310],{"class":560},[100,8261,1628],{"class":564},[100,8263,350],{"class":106},[100,8265,8267],{"class":102,"line":8266},131,[100,8268,525],{"emptyLinePlaceholder":524},[100,8270,8272,8274,8276,8278,8280,8282,8284,8286,8288,8290,8292],{"class":102,"line":8271},132,[100,8273,501],{"class":500},[100,8275,3087],{"class":504},[100,8277,508],{"class":106},[100,8279,546],{"class":545},[100,8281,549],{"class":504},[100,8283,552],{"class":106},[100,8285,555],{"class":504},[100,8287,552],{"class":106},[100,8289,3102],{"class":560},[100,8291,565],{"class":564},[100,8293,568],{"class":106},[100,8295,8297,8299,8301,8303,8305,8307,8309,8311,8313,8315],{"class":102,"line":8296},133,[100,8298,575],{"class":574},[100,8300,343],{"class":106},[100,8302,546],{"class":545},[100,8304,549],{"class":504},[100,8306,552],{"class":106},[100,8308,586],{"class":504},[100,8310,552],{"class":106},[100,8312,3102],{"class":560},[100,8314,1628],{"class":564},[100,8316,324],{"class":106},[100,8318,8320,8323,8325,8327,8329,8331,8333,8335,8337,8339],{"class":102,"line":8319},134,[100,8321,8322],{"class":574},"        style",[100,8324,343],{"class":106},[100,8326,546],{"class":545},[100,8328,549],{"class":504},[100,8330,552],{"class":106},[100,8332,312],{"class":504},[100,8334,552],{"class":106},[100,8336,1710],{"class":560},[100,8338,565],{"class":564},[100,8340,568],{"class":106},[100,8342,8344,8347,8349,8351,8353,8355,8357,8359,8361,8363,8365,8367,8369,8371,8373,8375,8377,8379,8381,8383,8385,8387],{"class":102,"line":8343},135,[100,8345,8346],{"class":574},"          stroke",[100,8348,343],{"class":106},[100,8350,546],{"class":545},[100,8352,549],{"class":504},[100,8354,552],{"class":106},[100,8356,312],{"class":504},[100,8358,552],{"class":106},[100,8360,1734],{"class":560},[100,8362,565],{"class":564},[100,8364,2395],{"class":106},[100,8366,2166],{"class":574},[100,8368,343],{"class":106},[100,8370,511],{"class":157},[100,8372,1842],{"class":161},[100,8374,158],{"class":157},[100,8376,721],{"class":106},[100,8378,2161],{"class":574},[100,8380,343],{"class":106},[100,8382,2202],{"class":346},[100,8384,2404],{"class":106},[100,8386,603],{"class":564},[100,8388,324],{"class":106},[100,8390,8392,8395,8397,8399,8401,8403,8405,8407,8409,8411,8413,8415,8417,8419,8421,8423,8425],{"class":102,"line":8391},136,[100,8393,8394],{"class":574},"          fill",[100,8396,343],{"class":106},[100,8398,546],{"class":545},[100,8400,549],{"class":504},[100,8402,552],{"class":106},[100,8404,312],{"class":504},[100,8406,552],{"class":106},[100,8408,3216],{"class":560},[100,8410,565],{"class":564},[100,8412,2395],{"class":106},[100,8414,2166],{"class":574},[100,8416,343],{"class":106},[100,8418,511],{"class":157},[100,8420,3229],{"class":161},[100,8422,158],{"class":157},[100,8424,2404],{"class":106},[100,8426,752],{"class":564},[100,8428,8430,8432],{"class":102,"line":8429},137,[100,8431,749],{"class":106},[100,8433,752],{"class":564},[100,8435,8437,8439,8441],{"class":102,"line":8436},138,[100,8438,600],{"class":106},[100,8440,603],{"class":564},[100,8442,350],{"class":106},[100,8444,8446,8448,8450,8452,8454,8456,8458],{"class":102,"line":8445},139,[100,8447,8181],{"class":504},[100,8449,552],{"class":106},[100,8451,1987],{"class":560},[100,8453,565],{"class":564},[100,8455,3262],{"class":504},[100,8457,603],{"class":564},[100,8459,350],{"class":106},[100,8461,8463],{"class":102,"line":8462},140,[100,8464,525],{"emptyLinePlaceholder":524},[100,8466,8468],{"class":102,"line":8467},141,[100,8469,8470],{"class":531},"      \u002F\u002F --- Popup overlay ---\n",[100,8472,8474,8476,8478,8480,8482,8484,8486,8488,8490,8492,8494,8496],{"class":102,"line":8473},142,[100,8475,501],{"class":500},[100,8477,4088],{"class":504},[100,8479,508],{"class":106},[100,8481,4093],{"class":504},[100,8483,552],{"class":106},[100,8485,4098],{"class":560},[100,8487,565],{"class":564},[100,8489,158],{"class":157},[100,8491,4001],{"class":161},[100,8493,158],{"class":157},[100,8495,603],{"class":564},[100,8497,350],{"class":106},[100,8499,8501,8503,8505,8507,8509,8511,8513,8515,8517],{"class":102,"line":8500},143,[100,8502,501],{"class":500},[100,8504,4126],{"class":504},[100,8506,508],{"class":106},[100,8508,546],{"class":545},[100,8510,549],{"class":504},[100,8512,552],{"class":106},[100,8514,4137],{"class":560},[100,8516,565],{"class":564},[100,8518,568],{"class":106},[100,8520,8522,8525,8527,8529],{"class":102,"line":8521},144,[100,8523,8524],{"class":574},"        element",[100,8526,343],{"class":106},[100,8528,4088],{"class":504},[100,8530,324],{"class":106},[100,8532,8534,8537,8539,8541,8543,8545],{"class":102,"line":8533},145,[100,8535,8536],{"class":574},"        positioning",[100,8538,343],{"class":106},[100,8540,511],{"class":157},[100,8542,4164],{"class":161},[100,8544,158],{"class":157},[100,8546,324],{"class":106},[100,8548,8550,8553,8555,8557,8559,8561,8563,8565],{"class":102,"line":8549},146,[100,8551,8552],{"class":574},"        offset",[100,8554,343],{"class":106},[100,8556,660],{"class":564},[100,8558,4180],{"class":346},[100,8560,721],{"class":106},[100,8562,4185],{"class":545},[100,8564,4188],{"class":346},[100,8566,2993],{"class":564},[100,8568,8570,8572,8574],{"class":102,"line":8569},147,[100,8571,600],{"class":106},[100,8573,603],{"class":564},[100,8575,350],{"class":106},[100,8577,8579,8581,8583,8585,8587,8589,8591],{"class":102,"line":8578},148,[100,8580,8181],{"class":504},[100,8582,552],{"class":106},[100,8584,4207],{"class":560},[100,8586,565],{"class":564},[100,8588,4212],{"class":504},[100,8590,603],{"class":564},[100,8592,350],{"class":106},[100,8594,8596],{"class":102,"line":8595},149,[100,8597,525],{"emptyLinePlaceholder":524},[100,8599,8601],{"class":102,"line":8600},150,[100,8602,8603],{"class":531},"      \u002F\u002F --- Search API ---\n",[100,8605,8607,8610,8612,8614,8616,8618,8620],{"class":102,"line":8606},151,[100,8608,8609],{"class":500},"      async",[100,8611,3326],{"class":500},[100,8613,3329],{"class":560},[100,8615,565],{"class":106},[100,8617,3334],{"class":1505},[100,8619,603],{"class":106},[100,8621,333],{"class":106},[100,8623,8625,8628,8630,8632,8634,8636],{"class":102,"line":8624},152,[100,8626,8627],{"class":500},"        const",[100,8629,3346],{"class":504},[100,8631,508],{"class":106},[100,8633,3351],{"class":1540},[100,8635,3354],{"class":560},[100,8637,3357],{"class":1557},[100,8639,8641,8644,8646,8648,8650,8652,8654,8656,8658,8660,8662,8664,8666],{"class":102,"line":8640},153,[100,8642,8643],{"class":157},"          `",[100,8645,1644],{"class":1643},[100,8647,3367],{"class":1647},[100,8649,1651],{"class":1643},[100,8651,3372],{"class":161},[100,8653,1644],{"class":1643},[100,8655,3377],{"class":560},[100,8657,565],{"class":564},[100,8659,3334],{"class":1647},[100,8661,603],{"class":564},[100,8663,1651],{"class":1643},[100,8665,3388],{"class":157},[100,8667,324],{"class":106},[100,8669,8671,8674,8676,8678,8680,8682,8684,8686,8688,8690,8692],{"class":102,"line":8670},154,[100,8672,8673],{"class":106},"          {",[100,8675,3398],{"class":574},[100,8677,343],{"class":106},[100,8679,3403],{"class":106},[100,8681,511],{"class":157},[100,8683,3409],{"class":3408},[100,8685,158],{"class":157},[100,8687,343],{"class":106},[100,8689,505],{"class":504},[100,8691,2404],{"class":106},[100,8693,3420],{"class":106},[100,8695,8697,8700],{"class":102,"line":8696},155,[100,8698,8699],{"class":1557},"        )",[100,8701,350],{"class":106},[100,8703,8705,8707,8709,8711,8713,8715,8717,8719,8721],{"class":102,"line":8704},156,[100,8706,8627],{"class":500},[100,8708,3438],{"class":504},[100,8710,508],{"class":106},[100,8712,3351],{"class":1540},[100,8714,3346],{"class":504},[100,8716,552],{"class":106},[100,8718,2612],{"class":560},[100,8720,1628],{"class":1557},[100,8722,350],{"class":106},[100,8724,8726],{"class":102,"line":8725},157,[100,8727,525],{"emptyLinePlaceholder":524},[100,8729,8731,8734,8736,8738,8740,8742,8744,8746,8748,8750,8752,8754,8756,8758,8760,8762,8764],{"class":102,"line":8730},158,[100,8732,8733],{"class":1540},"        if",[100,8735,2180],{"class":1557},[100,8737,3465],{"class":545},[100,8739,3468],{"class":504},[100,8741,552],{"class":106},[100,8743,2648],{"class":504},[100,8745,3475],{"class":545},[100,8747,3438],{"class":504},[100,8749,552],{"class":106},[100,8751,2648],{"class":504},[100,8753,552],{"class":106},[100,8755,3487],{"class":3486},[100,8757,3490],{"class":545},[100,8759,347],{"class":346},[100,8761,603],{"class":1557},[100,8763,3665],{"class":1540},[100,8765,350],{"class":106},[100,8767,8769],{"class":102,"line":8768},159,[100,8770,525],{"emptyLinePlaceholder":524},[100,8772,8774,8776,8778,8780,8782,8784,8786,8788,8790,8792,8794,8796,8798,8800,8802,8804,8806,8808,8810,8812,8814,8816,8818,8820],{"class":102,"line":8773},160,[100,8775,8627],{"class":500},[100,8777,3546],{"class":504},[100,8779,508],{"class":106},[100,8781,3438],{"class":504},[100,8783,552],{"class":106},[100,8785,2648],{"class":504},[100,8787,552],{"class":106},[100,8789,3559],{"class":560},[100,8791,565],{"class":1557},[100,8793,565],{"class":106},[100,8795,3566],{"class":1505},[100,8797,603],{"class":106},[100,8799,3572],{"class":3571},[100,8801,3575],{"class":504},[100,8803,552],{"class":106},[100,8805,2759],{"class":504},[100,8807,552],{"class":106},[100,8809,3034],{"class":504},[100,8811,3490],{"class":545},[100,8813,511],{"class":157},[100,8815,3043],{"class":161},[100,8817,158],{"class":157},[100,8819,603],{"class":1557},[100,8821,350],{"class":106},[100,8823,8825,8827,8829,8831,8833,8835,8837,8839,8841,8843,8845,8847,8849,8851,8853,8855,8857,8859,8861,8863,8865,8867,8869,8871],{"class":102,"line":8824},161,[100,8826,8627],{"class":500},[100,8828,3602],{"class":504},[100,8830,508],{"class":106},[100,8832,3438],{"class":504},[100,8834,552],{"class":106},[100,8836,2648],{"class":504},[100,8838,552],{"class":106},[100,8840,3559],{"class":560},[100,8842,565],{"class":1557},[100,8844,565],{"class":106},[100,8846,3566],{"class":1505},[100,8848,603],{"class":106},[100,8850,3572],{"class":3571},[100,8852,3575],{"class":504},[100,8854,552],{"class":106},[100,8856,2688],{"class":504},[100,8858,552],{"class":106},[100,8860,2628],{"class":504},[100,8862,3490],{"class":545},[100,8864,511],{"class":157},[100,8866,2711],{"class":161},[100,8868,158],{"class":157},[100,8870,603],{"class":1557},[100,8872,350],{"class":106},[100,8874,8876],{"class":102,"line":8875},162,[100,8877,525],{"emptyLinePlaceholder":524},[100,8879,8881,8883,8885,8887,8889,8891,8893],{"class":102,"line":8880},163,[100,8882,8733],{"class":1540},[100,8884,2180],{"class":1557},[100,8886,3465],{"class":545},[100,8888,3043],{"class":504},[100,8890,603],{"class":1557},[100,8892,3665],{"class":1540},[100,8894,350],{"class":106},[100,8896,8898],{"class":102,"line":8897},164,[100,8899,525],{"emptyLinePlaceholder":524},[100,8901,8903,8905,8907,8909,8911,8913,8915,8917,8919,8921,8923,8925,8927],{"class":102,"line":8902},165,[100,8904,8627],{"class":500},[100,8906,660],{"class":106},[100,8908,3685],{"class":504},[100,8910,721],{"class":106},[100,8912,3690],{"class":504},[100,8914,666],{"class":106},[100,8916,508],{"class":106},[100,8918,3546],{"class":504},[100,8920,552],{"class":106},[100,8922,2688],{"class":504},[100,8924,552],{"class":106},[100,8926,2722],{"class":504},[100,8928,350],{"class":106},[100,8930,8932,8935,8937,8939,8941,8943,8945,8947],{"class":102,"line":8931},166,[100,8933,8934],{"class":504},"        map",[100,8936,552],{"class":106},[100,8938,3716],{"class":560},[100,8940,1628],{"class":1557},[100,8942,552],{"class":106},[100,8944,3723],{"class":560},[100,8946,565],{"class":1557},[100,8948,568],{"class":106},[100,8950,8952,8954,8956,8958,8960,8962,8964,8966,8968,8970,8972,8974,8976],{"class":102,"line":8951},167,[100,8953,695],{"class":574},[100,8955,343],{"class":106},[100,8957,549],{"class":504},[100,8959,552],{"class":106},[100,8961,704],{"class":504},[100,8963,552],{"class":106},[100,8965,709],{"class":560},[100,8967,712],{"class":1557},[100,8969,3685],{"class":504},[100,8971,721],{"class":106},[100,8973,3690],{"class":504},[100,8975,727],{"class":1557},[100,8977,324],{"class":106},[100,8979,8981,8983,8985,8987],{"class":102,"line":8980},168,[100,8982,738],{"class":574},[100,8984,343],{"class":106},[100,8986,3766],{"class":346},[100,8988,324],{"class":106},[100,8990,8992,8995,8997],{"class":102,"line":8991},169,[100,8993,8994],{"class":574},"          duration",[100,8996,343],{"class":106},[100,8998,3778],{"class":346},[100,9000,9002,9004,9006],{"class":102,"line":9001},170,[100,9003,749],{"class":106},[100,9005,603],{"class":1557},[100,9007,350],{"class":106},[100,9009,9011],{"class":102,"line":9010},171,[100,9012,525],{"emptyLinePlaceholder":524},[100,9014,9016,9018,9020,9022,9024],{"class":102,"line":9015},172,[100,9017,8733],{"class":1540},[100,9019,2180],{"class":1557},[100,9021,3804],{"class":504},[100,9023,603],{"class":1557},[100,9025,333],{"class":106},[100,9027,9029,9032,9034,9036,9038,9040,9042,9044],{"class":102,"line":9028},173,[100,9030,9031],{"class":504},"          searchResultLayer",[100,9033,552],{"class":106},[100,9035,3818],{"class":560},[100,9037,1628],{"class":1557},[100,9039,552],{"class":106},[100,9041,3825],{"class":560},[100,9043,1628],{"class":1557},[100,9045,350],{"class":106},[100,9047,9049,9052,9054,9056,9058,9060,9062,9064,9066,9068],{"class":102,"line":9048},174,[100,9050,9051],{"class":500},"          const",[100,9053,3841],{"class":504},[100,9055,508],{"class":106},[100,9057,3295],{"class":504},[100,9059,552],{"class":106},[100,9061,3850],{"class":560},[100,9063,565],{"class":1557},[100,9065,3804],{"class":504},[100,9067,721],{"class":106},[100,9069,333],{"class":106},[100,9071,9073,9076,9078,9080,9082,9084],{"class":102,"line":9072},175,[100,9074,9075],{"class":574},"            dataProjection",[100,9077,343],{"class":106},[100,9079,511],{"class":157},[100,9081,3870],{"class":161},[100,9083,158],{"class":157},[100,9085,324],{"class":106},[100,9087,9089,9092,9094,9096,9098],{"class":102,"line":9088},176,[100,9090,9091],{"class":574},"            featureProjection",[100,9093,343],{"class":106},[100,9095,511],{"class":157},[100,9097,3886],{"class":161},[100,9099,213],{"class":157},[100,9101,9103,9105,9107],{"class":102,"line":9102},177,[100,9104,7921],{"class":106},[100,9106,603],{"class":1557},[100,9108,350],{"class":106},[100,9110,9112,9114,9116,9118,9120,9122,9124,9126,9128,9130],{"class":102,"line":9111},178,[100,9113,9031],{"class":504},[100,9115,552],{"class":106},[100,9117,3818],{"class":560},[100,9119,1628],{"class":1557},[100,9121,552],{"class":106},[100,9123,3911],{"class":560},[100,9125,565],{"class":1557},[100,9127,2144],{"class":504},[100,9129,603],{"class":1557},[100,9131,350],{"class":106},[100,9133,9135],{"class":102,"line":9134},179,[100,9136,9137],{"class":106},"        }\n",[100,9139,9141],{"class":102,"line":9140},180,[100,9142,385],{"class":106},[100,9144,9146],{"class":102,"line":9145},181,[100,9147,525],{"emptyLinePlaceholder":524},[100,9149,9151],{"class":102,"line":9150},182,[100,9152,9153],{"class":531},"      \u002F\u002F --- Click to identify ---\n",[100,9155,9157,9159,9161,9163,9165,9167,9169,9171,9173,9175,9177,9179,9181],{"class":102,"line":9156},183,[100,9158,8181],{"class":504},[100,9160,552],{"class":106},[100,9162,1281],{"class":560},[100,9164,565],{"class":564},[100,9166,158],{"class":157},[100,9168,4235],{"class":161},[100,9170,158],{"class":157},[100,9172,721],{"class":106},[100,9174,2180],{"class":106},[100,9176,4244],{"class":1505},[100,9178,603],{"class":106},[100,9180,3572],{"class":3571},[100,9182,333],{"class":106},[100,9184,9186,9189,9191,9193,9195],{"class":102,"line":9185},184,[100,9187,9188],{"class":500},"        let",[100,9190,4257],{"class":504},[100,9192,508],{"class":106},[100,9194,4263],{"class":4262},[100,9196,350],{"class":106},[100,9198,9200,9202,9204,9206,9208,9210,9212,9214,9216,9218],{"class":102,"line":9199},185,[100,9201,4410],{"class":504},[100,9203,552],{"class":106},[100,9205,312],{"class":504},[100,9207,552],{"class":106},[100,9209,4471],{"class":504},[100,9211,508],{"class":106},[100,9213,511],{"class":157},[100,9215,4591],{"class":161},[100,9217,158],{"class":157},[100,9219,350],{"class":106},[100,9221,9223],{"class":102,"line":9222},186,[100,9224,525],{"emptyLinePlaceholder":524},[100,9226,9228,9230,9232,9234],{"class":102,"line":9227},187,[100,9229,8934],{"class":504},[100,9231,552],{"class":106},[100,9233,4283],{"class":560},[100,9235,3357],{"class":1557},[100,9237,9239,9242,9244,9246],{"class":102,"line":9238},188,[100,9240,9241],{"class":504},"          e",[100,9243,552],{"class":106},[100,9245,4295],{"class":504},[100,9247,324],{"class":106},[100,9249,9251,9254,9256,9258,9260],{"class":102,"line":9250},189,[100,9252,9253],{"class":106},"          (",[100,9255,2144],{"class":1505},[100,9257,603],{"class":106},[100,9259,3572],{"class":3571},[100,9261,333],{"class":106},[100,9263,9265,9268,9270,9272,9274,9276],{"class":102,"line":9264},190,[100,9266,9267],{"class":1540},"            if",[100,9269,2180],{"class":1557},[100,9271,4324],{"class":504},[100,9273,603],{"class":1557},[100,9275,3665],{"class":1540},[100,9277,350],{"class":106},[100,9279,9281,9284,9286,9288,9290,9292,9294,9296],{"class":102,"line":9280},191,[100,9282,9283],{"class":500},"            const",[100,9285,4341],{"class":504},[100,9287,508],{"class":106},[100,9289,3841],{"class":504},[100,9291,552],{"class":106},[100,9293,4350],{"class":560},[100,9295,1628],{"class":1557},[100,9297,350],{"class":106},[100,9299,9301,9303,9305,9307,9309,9311,9313,9315,9317,9319,9321,9323,9325,9327,9329],{"class":102,"line":9300},192,[100,9302,9283],{"class":500},[100,9304,4361],{"class":504},[100,9306,508],{"class":106},[100,9308,4341],{"class":504},[100,9310,552],{"class":106},[100,9312,4370],{"class":504},[100,9314,3475],{"class":545},[100,9316,4341],{"class":504},[100,9318,552],{"class":106},[100,9320,2772],{"class":504},[100,9322,3475],{"class":545},[100,9324,4341],{"class":504},[100,9326,552],{"class":106},[100,9328,4387],{"class":504},[100,9330,350],{"class":106},[100,9332,9334,9336,9338,9340,9342],{"class":102,"line":9333},193,[100,9335,9267],{"class":1540},[100,9337,2180],{"class":1557},[100,9339,2772],{"class":504},[100,9341,603],{"class":1557},[100,9343,333],{"class":106},[100,9345,9347,9350,9352,9354,9356,9358,9360,9362,9364,9366,9368,9370],{"class":102,"line":9346},194,[100,9348,9349],{"class":504},"              popup",[100,9351,552],{"class":106},[100,9353,4415],{"class":504},[100,9355,508],{"class":106},[100,9357,1640],{"class":157},[100,9359,4422],{"class":161},[100,9361,1644],{"class":1643},[100,9363,2772],{"class":1647},[100,9365,1651],{"class":1643},[100,9367,4431],{"class":161},[100,9369,3388],{"class":157},[100,9371,350],{"class":106},[100,9373,9375,9378,9380,9382,9384,9386,9388,9390,9392],{"class":102,"line":9374},195,[100,9376,9377],{"class":504},"              overlay",[100,9379,552],{"class":106},[100,9381,4445],{"class":560},[100,9383,565],{"class":1557},[100,9385,4244],{"class":504},[100,9387,552],{"class":106},[100,9389,4454],{"class":504},[100,9391,603],{"class":1557},[100,9393,350],{"class":106},[100,9395,9397,9399,9401,9403,9405,9407,9409,9411,9413,9415],{"class":102,"line":9396},196,[100,9398,9349],{"class":504},[100,9400,552],{"class":106},[100,9402,312],{"class":504},[100,9404,552],{"class":106},[100,9406,4471],{"class":504},[100,9408,508],{"class":106},[100,9410,511],{"class":157},[100,9412,1164],{"class":161},[100,9414,158],{"class":157},[100,9416,350],{"class":106},[100,9418,9420,9423,9425,9427],{"class":102,"line":9419},197,[100,9421,9422],{"class":504},"              found",[100,9424,508],{"class":106},[100,9426,4491],{"class":4262},[100,9428,350],{"class":106},[100,9430,9432],{"class":102,"line":9431},198,[100,9433,9434],{"class":106},"            }\n",[100,9436,9438],{"class":102,"line":9437},199,[100,9439,9440],{"class":106},"          },\n",[100,9442,9444],{"class":102,"line":9443},200,[100,9445,9446],{"class":106},"          {\n",[100,9448,9450,9453,9455,9457,9459,9461,9463,9465,9467,9469,9471,9473,9475,9477,9479,9481,9483],{"class":102,"line":9449},201,[100,9451,9452],{"class":560},"            layerFilter",[100,9454,343],{"class":106},[100,9456,2180],{"class":106},[100,9458,555],{"class":1505},[100,9460,603],{"class":106},[100,9462,3572],{"class":3571},[100,9464,1511],{"class":504},[100,9466,3490],{"class":545},[100,9468,1800],{"class":504},[100,9470,3475],{"class":545},[100,9472,1511],{"class":504},[100,9474,3490],{"class":545},[100,9476,1864],{"class":504},[100,9478,3475],{"class":545},[100,9480,1511],{"class":504},[100,9482,3490],{"class":545},[100,9484,4543],{"class":504},[100,9486,9488],{"class":102,"line":9487},202,[100,9489,9490],{"class":106},"          }\n",[100,9492,9494,9496],{"class":102,"line":9493},203,[100,9495,8699],{"class":1557},[100,9497,350],{"class":106},[100,9499,9501,9503,9505],{"class":102,"line":9500},204,[100,9502,600],{"class":106},[100,9504,603],{"class":564},[100,9506,350],{"class":106},[100,9508,9510],{"class":102,"line":9509},205,[100,9511,525],{"emptyLinePlaceholder":524},[100,9513,9515,9517,9519,9521,9523,9525,9527,9529,9531,9533,9535,9537,9539],{"class":102,"line":9514},206,[100,9516,8181],{"class":504},[100,9518,552],{"class":106},[100,9520,1281],{"class":560},[100,9522,565],{"class":564},[100,9524,158],{"class":157},[100,9526,4631],{"class":161},[100,9528,158],{"class":157},[100,9530,721],{"class":106},[100,9532,2180],{"class":106},[100,9534,4244],{"class":1505},[100,9536,603],{"class":106},[100,9538,3572],{"class":3571},[100,9540,333],{"class":106},[100,9542,9544,9546,9548,9550,9552,9554,9556,9558,9560,9562,9564,9566],{"class":102,"line":9543},207,[100,9545,8627],{"class":500},[100,9547,4652],{"class":504},[100,9549,508],{"class":106},[100,9551,618],{"class":504},[100,9553,552],{"class":106},[100,9555,4661],{"class":560},[100,9557,565],{"class":1557},[100,9559,4244],{"class":504},[100,9561,552],{"class":106},[100,9563,4295],{"class":504},[100,9565,721],{"class":106},[100,9567,333],{"class":106},[100,9569,9571,9574,9576,9578,9580,9582,9584,9586,9588,9590,9592,9594,9596,9598,9600,9602,9604],{"class":102,"line":9570},208,[100,9572,9573],{"class":560},"          layerFilter",[100,9575,343],{"class":106},[100,9577,2180],{"class":106},[100,9579,555],{"class":1505},[100,9581,603],{"class":106},[100,9583,3572],{"class":3571},[100,9585,1511],{"class":504},[100,9587,3490],{"class":545},[100,9589,1800],{"class":504},[100,9591,3475],{"class":545},[100,9593,1511],{"class":504},[100,9595,3490],{"class":545},[100,9597,1864],{"class":504},[100,9599,3475],{"class":545},[100,9601,1511],{"class":504},[100,9603,3490],{"class":545},[100,9605,4543],{"class":504},[100,9607,9609,9611,9613],{"class":102,"line":9608},209,[100,9610,749],{"class":106},[100,9612,603],{"class":1557},[100,9614,350],{"class":106},[100,9616,9618,9620,9622,9624,9626,9628,9630,9632,9634,9636,9638,9640,9642,9644,9646,9648,9650],{"class":102,"line":9617},210,[100,9619,8934],{"class":504},[100,9621,552],{"class":106},[100,9623,4727],{"class":560},[100,9625,1628],{"class":1557},[100,9627,552],{"class":106},[100,9629,312],{"class":504},[100,9631,552],{"class":106},[100,9633,4738],{"class":504},[100,9635,508],{"class":106},[100,9637,4652],{"class":504},[100,9639,4745],{"class":545},[100,9641,511],{"class":157},[100,9643,4750],{"class":161},[100,9645,158],{"class":157},[100,9647,4755],{"class":545},[100,9649,4758],{"class":157},[100,9651,350],{"class":106},[100,9653,9655,9657,9659],{"class":102,"line":9654},211,[100,9656,600],{"class":106},[100,9658,603],{"class":564},[100,9660,350],{"class":106},[100,9662,9664],{"class":102,"line":9663},212,[100,9665,525],{"emptyLinePlaceholder":524},[100,9667,9669],{"class":102,"line":9668},213,[100,9670,9671],{"class":531},"      \u002F\u002F --- Autocomplete ---\n",[100,9673,9675,9677,9679,9681,9683,9685,9687,9689,9691,9693,9695,9697],{"class":102,"line":9674},214,[100,9676,501],{"class":500},[100,9678,5194],{"class":504},[100,9680,508],{"class":106},[100,9682,4093],{"class":504},[100,9684,552],{"class":106},[100,9686,4098],{"class":560},[100,9688,565],{"class":564},[100,9690,158],{"class":157},[100,9692,5057],{"class":161},[100,9694,158],{"class":157},[100,9696,603],{"class":564},[100,9698,350],{"class":106},[100,9700,9702,9704,9706,9708,9710,9712,9714,9716,9718,9720,9722,9724],{"class":102,"line":9701},215,[100,9703,501],{"class":500},[100,9705,5221],{"class":504},[100,9707,508],{"class":106},[100,9709,4093],{"class":504},[100,9711,552],{"class":106},[100,9713,4098],{"class":560},[100,9715,565],{"class":564},[100,9717,158],{"class":157},[100,9719,5132],{"class":161},[100,9721,158],{"class":157},[100,9723,603],{"class":564},[100,9725,350],{"class":106},[100,9727,9729,9732,9734],{"class":102,"line":9728},216,[100,9730,9731],{"class":500},"      let",[100,9733,5249],{"class":504},[100,9735,350],{"class":106},[100,9737,9739],{"class":102,"line":9738},217,[100,9740,525],{"emptyLinePlaceholder":524},[100,9742,9744,9746,9748,9750,9752,9754,9756,9758,9760,9762,9764,9766,9768],{"class":102,"line":9743},218,[100,9745,6143],{"class":504},[100,9747,552],{"class":106},[100,9749,5265],{"class":560},[100,9751,565],{"class":564},[100,9753,158],{"class":157},[100,9755,5272],{"class":161},[100,9757,158],{"class":157},[100,9759,721],{"class":106},[100,9761,2180],{"class":106},[100,9763,4244],{"class":1505},[100,9765,603],{"class":106},[100,9767,3572],{"class":3571},[100,9769,333],{"class":106},[100,9771,9773,9776,9778,9780,9782],{"class":102,"line":9772},219,[100,9774,9775],{"class":560},"        clearTimeout",[100,9777,565],{"class":1557},[100,9779,5296],{"class":504},[100,9781,603],{"class":1557},[100,9783,350],{"class":106},[100,9785,9787,9789,9791,9793,9795,9797,9799,9801,9803,9805,9807,9809],{"class":102,"line":9786},220,[100,9788,8627],{"class":500},[100,9790,3520],{"class":504},[100,9792,508],{"class":106},[100,9794,5311],{"class":504},[100,9796,552],{"class":106},[100,9798,5316],{"class":504},[100,9800,552],{"class":106},[100,9802,5321],{"class":504},[100,9804,552],{"class":106},[100,9806,5326],{"class":560},[100,9808,1628],{"class":1557},[100,9810,350],{"class":106},[100,9812,9814,9816,9818,9820,9822,9824,9826,9828,9830],{"class":102,"line":9813},221,[100,9815,8733],{"class":1540},[100,9817,2180],{"class":1557},[100,9819,3334],{"class":504},[100,9821,552],{"class":106},[100,9823,3487],{"class":3486},[100,9825,5349],{"class":106},[100,9827,2202],{"class":346},[100,9829,603],{"class":1557},[100,9831,333],{"class":106},[100,9833,9835,9838,9840,9842,9844,9846,9848,9850,9852,9854],{"class":102,"line":9834},222,[100,9836,9837],{"class":504},"          suggestionsEl",[100,9839,552],{"class":106},[100,9841,312],{"class":504},[100,9843,552],{"class":106},[100,9845,4471],{"class":504},[100,9847,508],{"class":106},[100,9849,511],{"class":157},[100,9851,4591],{"class":161},[100,9853,158],{"class":157},[100,9855,350],{"class":106},[100,9857,9859,9862],{"class":102,"line":9858},223,[100,9860,9861],{"class":1540},"          return",[100,9863,350],{"class":106},[100,9865,9867],{"class":102,"line":9866},224,[100,9868,9137],{"class":106},[100,9870,9872,9875,9877,9879,9881,9883,9885,9887,9889,9891,9893,9895,9897,9899],{"class":102,"line":9871},225,[100,9873,9874],{"class":504},"        debounceTimer",[100,9876,508],{"class":106},[100,9878,5402],{"class":560},[100,9880,565],{"class":1557},[100,9882,1628],{"class":106},[100,9884,3572],{"class":3571},[100,9886,5411],{"class":560},[100,9888,565],{"class":1557},[100,9890,3334],{"class":504},[100,9892,603],{"class":1557},[100,9894,721],{"class":106},[100,9896,5422],{"class":346},[100,9898,603],{"class":1557},[100,9900,350],{"class":106},[100,9902,9904,9906,9908],{"class":102,"line":9903},226,[100,9905,600],{"class":106},[100,9907,603],{"class":564},[100,9909,350],{"class":106},[100,9911,9913],{"class":102,"line":9912},227,[100,9914,525],{"emptyLinePlaceholder":524},[100,9916,9918,9920,9922,9924,9926,9928,9930,9932,9934,9936,9938,9940,9942],{"class":102,"line":9917},228,[100,9919,6143],{"class":504},[100,9921,552],{"class":106},[100,9923,5265],{"class":560},[100,9925,565],{"class":564},[100,9927,158],{"class":157},[100,9929,5453],{"class":161},[100,9931,158],{"class":157},[100,9933,721],{"class":106},[100,9935,2180],{"class":106},[100,9937,4244],{"class":1505},[100,9939,603],{"class":106},[100,9941,3572],{"class":3571},[100,9943,333],{"class":106},[100,9945,9947,9949,9951,9953,9955,9957,9959,9961,9963,9965,9967],{"class":102,"line":9946},229,[100,9948,8733],{"class":1540},[100,9950,2180],{"class":1557},[100,9952,4244],{"class":504},[100,9954,552],{"class":106},[100,9956,5480],{"class":504},[100,9958,3490],{"class":545},[100,9960,511],{"class":157},[100,9962,5487],{"class":161},[100,9964,158],{"class":157},[100,9966,603],{"class":1557},[100,9968,333],{"class":106},[100,9970,9972,9974,9976,9978,9980,9982,9984,9986,9988,9990],{"class":102,"line":9971},230,[100,9973,9837],{"class":504},[100,9975,552],{"class":106},[100,9977,312],{"class":504},[100,9979,552],{"class":106},[100,9981,4471],{"class":504},[100,9983,508],{"class":106},[100,9985,511],{"class":157},[100,9987,4591],{"class":161},[100,9989,158],{"class":157},[100,9991,350],{"class":106},[100,9993,9995,9998,10000,10002,10004,10006,10008,10010,10012],{"class":102,"line":9994},231,[100,9996,9997],{"class":560},"          searchAndPanTo",[100,9999,565],{"class":1557},[100,10001,5260],{"class":504},[100,10003,552],{"class":106},[100,10005,5321],{"class":504},[100,10007,552],{"class":106},[100,10009,5326],{"class":560},[100,10011,5535],{"class":1557},[100,10013,350],{"class":106},[100,10015,10017],{"class":102,"line":10016},232,[100,10018,9137],{"class":106},[100,10020,10022,10024,10026],{"class":102,"line":10021},233,[100,10023,600],{"class":106},[100,10025,603],{"class":564},[100,10027,350],{"class":106},[100,10029,10031],{"class":102,"line":10030},234,[100,10032,525],{"emptyLinePlaceholder":524},[100,10034,10036,10038,10040,10042,10044,10046,10048],{"class":102,"line":10035},235,[100,10037,8609],{"class":500},[100,10039,3326],{"class":500},[100,10041,5411],{"class":560},[100,10043,565],{"class":106},[100,10045,3334],{"class":1505},[100,10047,603],{"class":106},[100,10049,333],{"class":106},[100,10051,10053,10055,10057,10059,10061,10063,10065,10067,10069,10071,10073,10075,10077,10079,10081,10083,10085],{"class":102,"line":10052},236,[100,10054,8627],{"class":500},[100,10056,5576],{"class":504},[100,10058,508],{"class":106},[100,10060,549],{"class":504},[100,10062,552],{"class":106},[100,10064,704],{"class":504},[100,10066,552],{"class":106},[100,10068,5589],{"class":560},[100,10070,565],{"class":1557},[100,10072,395],{"class":504},[100,10074,552],{"class":106},[100,10076,3716],{"class":560},[100,10078,1628],{"class":1557},[100,10080,552],{"class":106},[100,10082,5604],{"class":560},[100,10084,5535],{"class":1557},[100,10086,350],{"class":106},[100,10088,10090,10092,10094,10096,10098,10100],{"class":102,"line":10089},237,[100,10091,8627],{"class":500},[100,10093,3346],{"class":504},[100,10095,508],{"class":106},[100,10097,3351],{"class":1540},[100,10099,3354],{"class":560},[100,10101,3357],{"class":1557},[100,10103,10105,10107,10109,10111,10113,10115,10117],{"class":102,"line":10104},238,[100,10106,8643],{"class":157},[100,10108,1644],{"class":1643},[100,10110,3367],{"class":1647},[100,10112,1651],{"class":1643},[100,10114,5639],{"class":161},[100,10116,3388],{"class":157},[100,10118,5644],{"class":545},[100,10120,10122,10125,10127,10129,10131,10133,10135,10137,10139,10141,10143],{"class":102,"line":10121},239,[100,10123,10124],{"class":157},"            `",[100,10126,5652],{"class":161},[100,10128,1644],{"class":1643},[100,10130,3377],{"class":560},[100,10132,565],{"class":564},[100,10134,3334],{"class":1647},[100,10136,603],{"class":564},[100,10138,1651],{"class":1643},[100,10140,5667],{"class":161},[100,10142,3388],{"class":157},[100,10144,5644],{"class":545},[100,10146,10148,10150,10152,10154,10156,10158,10160,10162,10164,10166,10168,10170,10172,10174,10176,10178,10180,10182,10184,10186,10188,10190,10192,10194,10196,10198,10200],{"class":102,"line":10147},240,[100,10149,10124],{"class":157},[100,10151,5678],{"class":161},[100,10153,1644],{"class":1643},[100,10155,5683],{"class":1647},[100,10157,5686],{"class":564},[100,10159,4180],{"class":346},[100,10161,666],{"class":564},[100,10163,552],{"class":106},[100,10165,5695],{"class":560},[100,10167,565],{"class":564},[100,10169,5700],{"class":346},[100,10171,603],{"class":564},[100,10173,1651],{"class":1643},[100,10175,721],{"class":161},[100,10177,1644],{"class":1643},[100,10179,5683],{"class":1647},[100,10181,5686],{"class":564},[100,10183,5715],{"class":346},[100,10185,666],{"class":564},[100,10187,552],{"class":106},[100,10189,5695],{"class":560},[100,10191,565],{"class":564},[100,10193,5700],{"class":346},[100,10195,603],{"class":564},[100,10197,1651],{"class":1643},[100,10199,3388],{"class":157},[100,10201,324],{"class":106},[100,10203,10205,10207,10209,10211,10213,10215,10217,10219,10221,10223,10225],{"class":102,"line":10204},241,[100,10206,8673],{"class":106},[100,10208,3398],{"class":574},[100,10210,343],{"class":106},[100,10212,3403],{"class":106},[100,10214,511],{"class":157},[100,10216,3409],{"class":3408},[100,10218,158],{"class":157},[100,10220,343],{"class":106},[100,10222,505],{"class":504},[100,10224,2404],{"class":106},[100,10226,3420],{"class":106},[100,10228,10230,10232],{"class":102,"line":10229},242,[100,10231,8699],{"class":1557},[100,10233,350],{"class":106},[100,10235,10237,10239,10241,10243,10245,10247,10249,10251,10253],{"class":102,"line":10236},243,[100,10238,8627],{"class":500},[100,10240,3438],{"class":504},[100,10242,508],{"class":106},[100,10244,3351],{"class":1540},[100,10246,3346],{"class":504},[100,10248,552],{"class":106},[100,10250,2612],{"class":560},[100,10252,1628],{"class":1557},[100,10254,350],{"class":106},[100,10256,10258,10261,10263,10265,10267,10269],{"class":102,"line":10257},244,[100,10259,10260],{"class":504},"        suggestionsEl",[100,10262,552],{"class":106},[100,10264,4415],{"class":504},[100,10266,508],{"class":106},[100,10268,4758],{"class":157},[100,10270,350],{"class":106},[100,10272,10274],{"class":102,"line":10273},245,[100,10275,525],{"emptyLinePlaceholder":524},[100,10277,10279,10281,10283,10285,10287,10289,10291,10293,10295,10297,10299,10301,10303,10305,10307,10309],{"class":102,"line":10278},246,[100,10280,8733],{"class":1540},[100,10282,2180],{"class":1557},[100,10284,3465],{"class":545},[100,10286,3468],{"class":504},[100,10288,552],{"class":106},[100,10290,2648],{"class":504},[100,10292,3475],{"class":545},[100,10294,3438],{"class":504},[100,10296,552],{"class":106},[100,10298,2648],{"class":504},[100,10300,552],{"class":106},[100,10302,3487],{"class":3486},[100,10304,3490],{"class":545},[100,10306,347],{"class":346},[100,10308,603],{"class":1557},[100,10310,333],{"class":106},[100,10312,10314,10316,10318,10320,10322,10324,10326,10328,10330,10332],{"class":102,"line":10313},247,[100,10315,9837],{"class":504},[100,10317,552],{"class":106},[100,10319,312],{"class":504},[100,10321,552],{"class":106},[100,10323,4471],{"class":504},[100,10325,508],{"class":106},[100,10327,511],{"class":157},[100,10329,4591],{"class":161},[100,10331,158],{"class":157},[100,10333,350],{"class":106},[100,10335,10337,10339],{"class":102,"line":10336},248,[100,10338,9861],{"class":1540},[100,10340,350],{"class":106},[100,10342,10344],{"class":102,"line":10343},249,[100,10345,9137],{"class":106},[100,10347,10349],{"class":102,"line":10348},250,[100,10350,525],{"emptyLinePlaceholder":524},[100,10352,10354,10357,10359,10361,10363,10365,10367,10369,10371,10373,10375],{"class":102,"line":10353},251,[100,10355,10356],{"class":504},"        data",[100,10358,552],{"class":106},[100,10360,2648],{"class":504},[100,10362,552],{"class":106},[100,10364,5890],{"class":560},[100,10366,565],{"class":1557},[100,10368,565],{"class":106},[100,10370,2144],{"class":1505},[100,10372,603],{"class":106},[100,10374,3572],{"class":3571},[100,10376,333],{"class":106},[100,10378,10380,10382,10384,10386,10388,10390,10392,10394,10396,10398,10400,10402],{"class":102,"line":10379},252,[100,10381,9051],{"class":500},[100,10383,5909],{"class":504},[100,10385,508],{"class":106},[100,10387,4093],{"class":504},[100,10389,552],{"class":106},[100,10391,5918],{"class":560},[100,10393,565],{"class":1557},[100,10395,158],{"class":157},[100,10397,37],{"class":161},[100,10399,158],{"class":157},[100,10401,603],{"class":1557},[100,10403,350],{"class":106},[100,10405,10407,10410,10412,10414,10416,10418,10420,10422,10424,10426,10428,10430,10432,10434,10436,10438,10440,10442,10444,10446,10448,10450,10452],{"class":102,"line":10406},253,[100,10408,10409],{"class":504},"          li",[100,10411,552],{"class":106},[100,10413,5940],{"class":504},[100,10415,508],{"class":106},[100,10417,1640],{"class":157},[100,10419,1644],{"class":1643},[100,10421,2144],{"class":1647},[100,10423,552],{"class":106},[100,10425,2759],{"class":1647},[100,10427,552],{"class":106},[100,10429,4370],{"class":1647},[100,10431,1651],{"class":1643},[100,10433,2180],{"class":161},[100,10435,1644],{"class":1643},[100,10437,2144],{"class":1647},[100,10439,552],{"class":106},[100,10441,2759],{"class":1647},[100,10443,552],{"class":106},[100,10445,1506],{"class":1647},[100,10447,1651],{"class":1643},[100,10449,603],{"class":161},[100,10451,3388],{"class":157},[100,10453,350],{"class":106},[100,10455,10457,10459,10461,10463,10465,10467,10469,10471,10473,10475,10477],{"class":102,"line":10456},254,[100,10458,10409],{"class":504},[100,10460,552],{"class":106},[100,10462,5265],{"class":560},[100,10464,565],{"class":1557},[100,10466,158],{"class":157},[100,10468,4235],{"class":161},[100,10470,158],{"class":157},[100,10472,721],{"class":106},[100,10474,6033],{"class":106},[100,10476,3572],{"class":3571},[100,10478,333],{"class":106},[100,10480,10482,10485,10487,10489,10491,10493,10495,10497,10499,10501],{"class":102,"line":10481},255,[100,10483,10484],{"class":504},"            searchInput",[100,10486,552],{"class":106},[100,10488,5321],{"class":504},[100,10490,508],{"class":106},[100,10492,3841],{"class":504},[100,10494,552],{"class":106},[100,10496,2759],{"class":504},[100,10498,552],{"class":106},[100,10500,4370],{"class":504},[100,10502,350],{"class":106},[100,10504,10506,10509,10511,10513,10515,10517,10519,10521,10523,10525],{"class":102,"line":10505},256,[100,10507,10508],{"class":504},"            suggestionsEl",[100,10510,552],{"class":106},[100,10512,312],{"class":504},[100,10514,552],{"class":106},[100,10516,4471],{"class":504},[100,10518,508],{"class":106},[100,10520,511],{"class":157},[100,10522,4591],{"class":161},[100,10524,158],{"class":157},[100,10526,350],{"class":106},[100,10528,10530,10533,10535,10537,10539,10541,10543,10545,10547],{"class":102,"line":10529},257,[100,10531,10532],{"class":560},"            searchAndPanTo",[100,10534,565],{"class":1557},[100,10536,2144],{"class":504},[100,10538,552],{"class":106},[100,10540,2759],{"class":504},[100,10542,552],{"class":106},[100,10544,4370],{"class":504},[100,10546,603],{"class":1557},[100,10548,350],{"class":106},[100,10550,10552,10554,10556],{"class":102,"line":10551},258,[100,10553,7921],{"class":106},[100,10555,603],{"class":1557},[100,10557,350],{"class":106},[100,10559,10561,10563,10565,10567,10569,10571,10573],{"class":102,"line":10560},259,[100,10562,9837],{"class":504},[100,10564,552],{"class":106},[100,10566,6230],{"class":560},[100,10568,565],{"class":1557},[100,10570,37],{"class":504},[100,10572,603],{"class":1557},[100,10574,350],{"class":106},[100,10576,10578,10580,10582],{"class":102,"line":10577},260,[100,10579,749],{"class":106},[100,10581,603],{"class":1557},[100,10583,350],{"class":106},[100,10585,10587],{"class":102,"line":10586},261,[100,10588,525],{"emptyLinePlaceholder":524},[100,10590,10592,10594,10596,10598,10600,10602,10604,10606,10608,10610],{"class":102,"line":10591},262,[100,10593,10260],{"class":504},[100,10595,552],{"class":106},[100,10597,312],{"class":504},[100,10599,552],{"class":106},[100,10601,4471],{"class":504},[100,10603,508],{"class":106},[100,10605,511],{"class":157},[100,10607,1164],{"class":161},[100,10609,158],{"class":157},[100,10611,350],{"class":106},[100,10613,10615],{"class":102,"line":10614},263,[100,10616,385],{"class":106},[100,10618,10620],{"class":102,"line":10619},264,[100,10621,525],{"emptyLinePlaceholder":524},[100,10623,10625,10628,10630,10632,10634,10636,10638,10640,10642,10644,10646,10648,10650],{"class":102,"line":10624},265,[100,10626,10627],{"class":504},"      document",[100,10629,552],{"class":106},[100,10631,5265],{"class":560},[100,10633,565],{"class":564},[100,10635,158],{"class":157},[100,10637,4235],{"class":161},[100,10639,158],{"class":157},[100,10641,721],{"class":106},[100,10643,2180],{"class":106},[100,10645,4244],{"class":1505},[100,10647,603],{"class":106},[100,10649,3572],{"class":3571},[100,10651,333],{"class":106},[100,10653,10655,10657,10659,10661,10663,10665,10667,10669,10671,10673,10675,10677,10679,10681,10683,10685,10687,10689,10691],{"class":102,"line":10654},266,[100,10656,8733],{"class":1540},[100,10658,2180],{"class":1557},[100,10660,3465],{"class":545},[100,10662,6291],{"class":504},[100,10664,552],{"class":106},[100,10666,4098],{"class":560},[100,10668,565],{"class":1557},[100,10670,158],{"class":157},[100,10672,5015],{"class":161},[100,10674,158],{"class":157},[100,10676,603],{"class":1557},[100,10678,552],{"class":106},[100,10680,6345],{"class":560},[100,10682,565],{"class":1557},[100,10684,4244],{"class":504},[100,10686,552],{"class":106},[100,10688,5316],{"class":504},[100,10690,6060],{"class":1557},[100,10692,333],{"class":106},[100,10694,10696,10698,10700,10702,10704,10706,10708,10710,10712,10714],{"class":102,"line":10695},267,[100,10697,9837],{"class":504},[100,10699,552],{"class":106},[100,10701,312],{"class":504},[100,10703,552],{"class":106},[100,10705,4471],{"class":504},[100,10707,508],{"class":106},[100,10709,511],{"class":157},[100,10711,4591],{"class":161},[100,10713,158],{"class":157},[100,10715,350],{"class":106},[100,10717,10719],{"class":102,"line":10718},268,[100,10720,9137],{"class":106},[100,10722,10724,10726,10728],{"class":102,"line":10723},269,[100,10725,600],{"class":106},[100,10727,603],{"class":564},[100,10729,350],{"class":106},[100,10731,10733,10735,10737],{"class":102,"line":10732},270,[100,10734,436],{"class":106},[100,10736,285],{"class":110},[100,10738,118],{"class":106},[100,10740,10742,10744,10746],{"class":102,"line":10741},271,[100,10743,446],{"class":106},[100,10745,458],{"class":110},[100,10747,118],{"class":106},[100,10749,10751,10753,10755],{"class":102,"line":10750},272,[100,10752,185],{"class":106},[100,10754,95],{"class":110},[100,10756,118],{"class":106},[10,10758,10759],{},"Save the file, replace the API key, and open it in a browser. You'll see DLS township, section, and LSD grids across Alberta, a search box with autocomplete, and click-to-identify on any grid cell.",[26,10761,10763],{"id":10762},"next-steps","Next steps",[34,10765,10766,10778,10787,10807,10825,10837,10843],{},[37,10767,10768,10769,10772,10773,4775,10775,10777],{},"Add grids for Saskatchewan or Manitoba by creating additional ",[17,10770,10771],{},"makeTileLayer"," calls with ",[17,10774,2044],{},[17,10776,2047],{}," as the province argument",[37,10779,10780,10781,10783,10784,603],{},"Add Manitoba river lots using the ",[17,10782,1060],{}," layer (",[17,10785,10786],{},"mb\u002Friver-lots",[37,10788,10789,10790,827,10792,827,10794,10796,10797,10799,10800,827,10803,10806],{},"Add NTS grid layers for British Columbia using ",[17,10791,1124],{},[17,10793,1164],{},[17,10795,1203],{},", and ",[17,10798,1242],{}," layer names (",[17,10801,10802],{},"bc\u002Fseries",[17,10804,10805],{},"bc\u002Fblock",", etc.)",[37,10808,10809,10810,827,10812,10796,10814,10799,10816,827,10819,827,10822,603],{},"Add Ontario geographic township grids using ",[17,10811,873],{},[17,10813,1342],{},[17,10815,1380],{},[17,10817,10818],{},"on\u002Ftwp",[17,10820,10821],{},"on\u002Fcon",[17,10823,10824],{},"on\u002Flot",[37,10826,10827,10828,10830,10831,827,10834,10836],{},"When using ",[17,10829,4283],{}," to inspect grid cells, note that source-layer names use underscores (e.g. ",[17,10832,10833],{},"ab_twp",[17,10835,1129],{},") even though the URL path uses hyphens",[37,10838,2581,10839,10842],{},[67,10840,10841],{"href":2584},"Batch API"," to plot hundreds of LLD locations as point markers at once",[37,10844,10845,10846,10849,10850,10853],{},"Replace the OSM base map with a satellite imagery source using ",[17,10847,10848],{},"ol\u002Fsource\u002FXYZ"," for a ",[17,10851,10852],{},"https:\u002F\u002Fserver.arcgisonline.com\u002FArcGIS\u002Frest\u002Fservices\u002FWorld_Imagery\u002FMapServer\u002Ftile\u002F{z}\u002F{y}\u002F{x}"," URL",[26,10855,10857],{"id":10856},"related-guides","Related guides",[34,10859,10860,10866,10873,10880],{},[37,10861,10862,10865],{},[67,10863,10864],{"href":2584},"API Integration Guide"," - API endpoints, authentication, and key management",[37,10867,10868,10872],{},[67,10869,10871],{"href":10870},"\u002Fguides\u002Fmaps-api-vector-tiles","Maps API - Vector Tiles"," - Full vector tile layer reference and available tilesets",[37,10874,10875,10879],{},[67,10876,10878],{"href":10877},"\u002Fguides\u002Fmapbox-integration","Mapbox GL JS Integration"," - The same workflow using Mapbox GL JS",[37,10881,10882,10886],{},[67,10883,10885],{"href":10884},"\u002Fabout","What is a Legal Land Description?"," - DLS, NTS, and Canadian survey systems explained",[312,10888,10889],{},"html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sJFLg, html code.shiki .sJFLg{--shiki-light:#E53935;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s5q8q, html code.shiki .s5q8q{--shiki-light:#9C3EDA;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .skzw8, html code.shiki .skzw8{--shiki-light:#E2931D;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s5HLA, html code.shiki .s5HLA{--shiki-light:#8796B0;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sQBxk, html code.shiki .sQBxk{--shiki-light:#F76D47;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sAntY, html code.shiki .sAntY{--shiki-light:#F76D47;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .sLdnO, html code.shiki .sLdnO{--shiki-light:#E53935;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .su_V2, html code.shiki .su_V2{--shiki-light:#90A4AE;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .skNjk, html code.shiki .skNjk{--shiki-light:#F76D47;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .srjyR, html code.shiki .srjyR{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sQtxO, html code.shiki .sQtxO{--shiki-light:#E53935;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .s131V, html code.shiki .s131V{--shiki-light:#90A4AE;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sIOqK, html code.shiki .sIOqK{--shiki-light:#9C3EDA;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sq3J1, html code.shiki .sq3J1{--shiki-light:#FF5370;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}",{"title":96,"searchDepth":121,"depth":121,"links":10891},[10892,10893,10894,10895,10900,10901,10906,10907,10910,10911,10912],{"id":28,"depth":121,"text":29},{"id":54,"depth":121,"text":55},{"id":81,"depth":121,"text":82},{"id":794,"depth":121,"text":795,"children":10896},[10897,10898,10899],{"id":804,"depth":131,"text":805},{"id":816,"depth":131,"text":817},{"id":1450,"depth":131,"text":1451},{"id":2058,"depth":121,"text":2059},{"id":2577,"depth":121,"text":2578,"children":10902},[10903,10904,10905],{"id":2593,"depth":131,"text":2594},{"id":2603,"depth":131,"text":2604},{"id":3066,"depth":131,"text":3067},{"id":3967,"depth":121,"text":3968},{"id":4781,"depth":121,"text":4782,"children":10908},[10909],{"id":4788,"depth":131,"text":4789},{"id":6404,"depth":121,"text":6405},{"id":10762,"depth":121,"text":10763},{"id":10856,"depth":121,"text":10857},"api","Display Canadian survey grids as vector tiles and search legal land descriptions in your OpenLayers application using the Township Canada API.",false,"md","i-lucide-layers",{},"\u002Fguides\u002Fopenlayers-integration",{"title":5,"description":10914},"guides\u002Fopenlayers-integration","p_GezIsTrWg1h3Nw_Zlxl9C3SJqODTQ8ieY0LdY5Yx4",[10924,11405,12289],{"id":10925,"title":10926,"body":10927,"category":10913,"description":11399,"draft":10915,"extension":10916,"icon":11400,"meta":11401,"navigation":524,"order":103,"path":2584,"seo":11402,"stem":11403,"__hash__":11404},"guides\u002Fguides\u002Fapi-integration.md","Legal Land Description API Integration Guide",{"type":7,"value":10928,"toc":11364},[10929,10932,10939,10943,10971,10978,10982,10985,10989,10992,10998,11002,11005,11010,11014,11017,11022,11026,11029,11034,11038,11041,11046,11108,11114,11164,11167,11171,11175,11178,11182,11185,11189,11192,11196,11199,11203,11206,11210,11251,11255,11261,11281,11285,11288,11292,11295,11299,11302,11306,11309,11313,11323,11325,11356],[10,10930,10931],{},"Integrate Township Canada's legal land description services directly into your applications and workflows. Our REST APIs enable LLD-to-coordinate conversion, autocomplete search, batch processing, and interactive grid maps-all with simple JSON responses.",[10,10933,10934],{},[10935,10936],"img",{"alt":10937,"src":10938},"Developer Portal","\u002Fimages\u002Fguides\u002Fapi-portal.webp",[26,10940,10942],{"id":10941},"quick-start","Quick start",[10944,10945,10946,10950,10957,10961,10964,10968],"steps",{},[802,10947,10949],{"id":10948},"get-an-api-key","Get an API key",[10,10951,10952,10953,10956],{},"Log into your Township Canada account and go to ",[62,10954,10955],{},"API"," in the main navigation. Subscribe to an API endpoint and create your first API key.",[802,10958,10960],{"id":10959},"make-your-first-request","Make your first request",[10,10962,10963],{},"Add your API key to the request header and make a test request.",[802,10965,10967],{"id":10966},"parse-the-response","Parse the response",[10,10969,10970],{},"All APIs return JSON with coordinates, legal descriptions, and metadata.",[10,10972,10973,10974,552],{},"For full documentation and code examples, visit the ",[67,10975,10977],{"href":10976},"\u002Fapi","API documentation",[26,10979,10981],{"id":10980},"api-endpoints","API endpoints",[10,10983,10984],{},"Township Canada offers four distinct API endpoints:",[802,10986,10988],{"id":10987},"search-api-20month","Search API ($20\u002Fmonth)",[10,10990,10991],{},"Convert legal land descriptions to geographic coordinates and vice versa. Supports DLS, NTS, Geographic Townships, and FPS formats.",[10,10993,10994,10997],{},[62,10995,10996],{},"Use cases",": Property lookup, coordinate conversion, reverse geocoding",[802,10999,11001],{"id":11000},"autocomplete-api-20month","Autocomplete API ($20\u002Fmonth)",[10,11003,11004],{},"Search legal land descriptions with partial text. Returns up to 10 matching results with coordinates-ideal for search boxes and type-ahead interfaces.",[10,11006,11007,11009],{},[62,11008,10996],{},": Search boxes, type-ahead, field validation",[802,11011,11013],{"id":11012},"batch-api-40month","Batch API ($40\u002Fmonth)",[10,11015,11016],{},"Process up to 100 records per request. Convert lists of legal land descriptions to coordinates or coordinates to legal land descriptions.",[10,11018,11019,11021],{},[62,11020,10996],{},": Bulk data processing, migration, spatial analysis",[802,11023,11025],{"id":11024},"maps-api-20month","Maps API ($20\u002Fmonth)",[10,11027,11028],{},"Display legal survey grids on maps in your web or mobile applications. Vector tiles format compatible with Mapbox GL, Leaflet, and other mapping libraries.",[10,11030,11031,11033],{},[62,11032,10996],{},": Custom mapping applications, data visualization",[26,11035,11037],{"id":11036},"api-pricing-tiers","API pricing tiers",[10,11039,11040],{},"Each API offers three pricing tiers:",[10,11042,11043],{},[62,11044,11045],{},"Search, Autocomplete & Batch APIs",[839,11047,11048,11064],{},[842,11049,11050],{},[845,11051,11052,11055,11058,11061],{},[848,11053,11054],{},"Tier",[848,11056,11057],{},"Monthly Requests",[848,11059,11060],{},"Rate Limit",[848,11062,11063],{},"Price",[864,11065,11066,11080,11094],{},[845,11067,11068,11071,11074,11077],{},[869,11069,11070],{},"Build",[869,11072,11073],{},"1,000",[869,11075,11076],{},"1\u002Fsec",[869,11078,11079],{},"$20-40\u002Fmo",[845,11081,11082,11085,11088,11091],{},[869,11083,11084],{},"Scale",[869,11086,11087],{},"10,000",[869,11089,11090],{},"5\u002Fsec",[869,11092,11093],{},"$100-200\u002Fmo",[845,11095,11096,11099,11102,11105],{},[869,11097,11098],{},"Enterprise",[869,11100,11101],{},"100,000",[869,11103,11104],{},"25\u002Fsec",[869,11106,11107],{},"$500-1,000\u002Fmo",[10,11109,11110,11113],{},[62,11111,11112],{},"Maps API"," (higher request quotas for tile rendering)",[839,11115,11116,11128],{},[842,11117,11118],{},[845,11119,11120,11122,11124,11126],{},[848,11121,11054],{},[848,11123,11057],{},[848,11125,11060],{},[848,11127,11063],{},[864,11129,11130,11141,11152],{},[845,11131,11132,11134,11136,11138],{},[869,11133,11070],{},[869,11135,11087],{},[869,11137,11076],{},[869,11139,11140],{},"$20\u002Fmo",[845,11142,11143,11145,11147,11149],{},[869,11144,11084],{},[869,11146,11101],{},[869,11148,11090],{},[869,11150,11151],{},"$100\u002Fmo",[845,11153,11154,11156,11159,11161],{},[869,11155,11098],{},[869,11157,11158],{},"1,000,000",[869,11160,11104],{},[869,11162,11163],{},"$500\u002Fmo",[10,11165,11166],{},"Annual billing saves two months compared to monthly billing.",[26,11168,11170],{"id":11169},"common-integration-patterns","Common integration patterns",[802,11172,11174],{"id":11173},"real-estate-applications","Real Estate Applications",[10,11176,11177],{},"Add legal land description lookup to property search interfaces. Use the Autocomplete API for type-ahead search and the Search API for coordinate conversion.",[802,11179,11181],{"id":11180},"oil-gas-software","Oil & Gas Software",[10,11183,11184],{},"Integrate batch conversion for well location management. Use the Maps API to display DLS\u002FNTS grids in custom mapping applications.",[802,11186,11188],{"id":11187},"mobile-field-apps","Mobile Field Apps",[10,11190,11191],{},"Add LLD search and coordinate conversion for field workers. The APIs work with any mobile development framework (React Native, Flutter, native iOS\u002FAndroid).",[802,11193,11195],{"id":11194},"gis-platforms","GIS Platforms",[10,11197,11198],{},"Enhance ArcGIS, QGIS, or custom GIS tools with legal land description support. Batch API enables bulk coordinate conversion for spatial analysis.",[802,11200,11202],{"id":11201},"agriculture-technology","Agriculture Technology",[10,11204,11205],{},"Add quarter section and LSD lookup to farm management software. Combine with soil and boundary data for precision agriculture applications.",[26,11207,11209],{"id":11208},"getting-an-api-key","Getting an API key",[10944,11211,11212,11216,11222,11226,11229,11233,11240,11244],{},[802,11213,11215],{"id":11214},"open-the-developer-portal","Open the Developer Portal",[10,11217,11218,11219,11221],{},"Go to ",[62,11220,10955],{}," in the main navigation to access the Developer Portal.",[802,11223,11225],{"id":11224},"subscribe-to-an-api","Subscribe to an API",[10,11227,11228],{},"Click on the API you want to use (Search, Autocomplete, Batch, or Maps). Select a tier and complete payment.",[802,11230,11232],{"id":11231},"create-an-api-key","Create an API key",[10,11234,11235,11236,11239],{},"Click ",[62,11237,11238],{},"+ Add Key"," and give your key a descriptive name. Copy the key immediately-it won't be shown again.",[802,11241,11243],{"id":11242},"use-your-key","Use your key",[10,11245,11246,11247,11250],{},"Include the API key in the ",[17,11248,11249],{},"x-api-key"," header for all requests.",[26,11252,11254],{"id":11253},"managing-api-subscriptions","Managing API subscriptions",[10,11256,11257,11258,11260],{},"Manage your API subscriptions from the ",[62,11259,10955],{}," page in the main navigation. The Developer Portal provides:",[34,11262,11263,11269,11275],{},[37,11264,11265,11268],{},[62,11266,11267],{},"Overview",": View all your API keys and subscriptions",[37,11270,11271,11274],{},[62,11272,11273],{},"Logs",": Monitor API requests with timestamps and response codes",[37,11276,11277,11280],{},[62,11278,11279],{},"Alerts",": Configure usage threshold notifications",[802,11282,11284],{"id":11283},"usage-monitoring","Usage monitoring",[10,11286,11287],{},"Track your API usage in real-time from the Overview tab. Usage resets at the start of each billing period.",[802,11289,11291],{"id":11290},"rate-limiting","Rate limiting",[10,11293,11294],{},"Exceeding your rate limit results in HTTP 429 Too Many Requests responses. Implement exponential backoff in your integration to handle rate limits gracefully.",[802,11296,11298],{"id":11297},"quota-management","Quota management",[10,11300,11301],{},"When you reach your monthly quota, requests return HTTP 429 until the next billing cycle. Upgrade your tier for higher quotas or implement caching to reduce request volume.",[26,11303,11305],{"id":11304},"code-examples","Code examples",[10,11307,11308],{},"Access code examples in JavaScript, Python, and cURL from the Developer Portal. Each API endpoint includes ready-to-use code snippets you can copy and customize.",[26,11310,11312],{"id":11311},"checking-system-health","Checking system health",[10,11314,11315,11316,11322],{},"For the current status of Township Canada's APIs, including uptime, response time, and incident history, visit ",[67,11317,11321],{"href":11318,"rel":11319},"https:\u002F\u002Fstatus.townshipcanada.com",[11320],"nofollow","status.townshipcanada.com",". This site provides real-time updates on API system health.",[26,11324,10857],{"id":10856},[34,11326,11327,11333,11340,11347],{},[37,11328,11329,11332],{},[67,11330,11331],{"href":74},"Account Management"," - Manage billing for API subscriptions",[37,11334,11335,11339],{},[67,11336,11338],{"href":11337},"\u002Fguides\u002Fbatch-conversion","Batch Conversion"," - Web interface for batch processing",[37,11341,11342,11346],{},[67,11343,11345],{"href":11344},"\u002Fguides\u002Fmap","Interactive Maps"," - Map features available through the Maps API",[37,11348,11349,11355],{},[67,11350,11352],{"href":11351},"\u002Fblog\u002Ftownshipcanada-sdk-typescript-npm-package",[17,11353,11354],{},"townshipcanada"," - Official TypeScript SDK for Node.js developers",[10,11357,11358,11359,11363],{},"Need help with your integration? ",[67,11360,11362],{"href":11361},"\u002Fcontact-us","Contact us"," for technical support and custom API solutions.",{"title":96,"searchDepth":121,"depth":121,"links":11365},[11366,11371,11377,11378,11385,11391,11396,11397,11398],{"id":10941,"depth":121,"text":10942,"children":11367},[11368,11369,11370],{"id":10948,"depth":131,"text":10949},{"id":10959,"depth":131,"text":10960},{"id":10966,"depth":131,"text":10967},{"id":10980,"depth":121,"text":10981,"children":11372},[11373,11374,11375,11376],{"id":10987,"depth":131,"text":10988},{"id":11000,"depth":131,"text":11001},{"id":11012,"depth":131,"text":11013},{"id":11024,"depth":131,"text":11025},{"id":11036,"depth":121,"text":11037},{"id":11169,"depth":121,"text":11170,"children":11379},[11380,11381,11382,11383,11384],{"id":11173,"depth":131,"text":11174},{"id":11180,"depth":131,"text":11181},{"id":11187,"depth":131,"text":11188},{"id":11194,"depth":131,"text":11195},{"id":11201,"depth":131,"text":11202},{"id":11208,"depth":121,"text":11209,"children":11386},[11387,11388,11389,11390],{"id":11214,"depth":131,"text":11215},{"id":11224,"depth":131,"text":11225},{"id":11231,"depth":131,"text":11232},{"id":11242,"depth":131,"text":11243},{"id":11253,"depth":121,"text":11254,"children":11392},[11393,11394,11395],{"id":11283,"depth":131,"text":11284},{"id":11290,"depth":131,"text":11291},{"id":11297,"depth":131,"text":11298},{"id":11304,"depth":121,"text":11305},{"id":11311,"depth":121,"text":11312},{"id":10856,"depth":121,"text":10857},"Integrate legal land description APIs into your applications. Convert LLDs to coordinates, add autocomplete search, process batch records, and display DLS\u002FNTS grid maps. REST API with JSON responses.","i-lucide-code",{},{"title":10926,"description":11399},"guides\u002Fapi-integration","0skTidP_JHbRyEgb2lLso64Jt5ActydUoBJbxBER46M",{"id":11406,"title":11407,"body":11408,"category":10913,"description":12282,"draft":10915,"extension":10916,"icon":12283,"meta":12284,"navigation":524,"order":245,"path":12285,"seo":12286,"stem":12287,"__hash__":12288},"guides\u002Fguides\u002Fapi-key-management.md","Managing API Keys for Development, Staging, and Production",{"type":7,"value":11409,"toc":12266},[11410,11413,11416,11420,11426,11449,11452,11458,11462,11465,11471,11474,11538,11541,11545,11548,11552,11559,11576,11579,11694,11697,11735,11739,11744,11756,11762,11927,11931,11940,11966,11973,11992,11996,11999,12025,12028,12032,12035,12039,12042,12066,12069,12165,12168,12172,12175,12178,12181,12185,12188,12203,12209,12215,12221,12227,12229,12263],[10,11411,11412],{},"Most API integrations span multiple environments-local development, a staging server, and production. Using a single API key across all three creates problems: one accidental revocation takes everything down, you can't track which environment is generating traffic, and debugging becomes harder when all requests look identical in the logs.",[10,11414,11415],{},"Township Canada lets you create unlimited API keys on paid plans. The recommended approach is one key per environment, per project.",[26,11417,11419],{"id":11418},"creating-api-keys","Creating API keys",[10,11421,11422,11423,11425],{},"API keys are managed from the ",[67,11424,10937],{"href":69},". To create a new key:",[11427,11428,11429,11434,11438,11441,11446],"ol",{},[37,11430,11218,11431,11433],{},[62,11432,10955],{}," in the main navigation",[37,11435,11235,11436],{},[62,11437,11238],{},[37,11439,11440],{},"Enter a descriptive name (see naming conventions below)",[37,11442,11235,11443],{},[62,11444,11445],{},"Create",[37,11447,11448],{},"Copy the key immediately - it will not be shown again",[10,11450,11451],{},"Each key displays its name, creation date, and last-used timestamp. Keys can be revoked individually without affecting any other key on your account.",[11453,11454,11455],"warning",{},[10,11456,11457],{},"Copy your key before closing the dialog. Township Canada does not store the full key value after creation. If you lose it, revoke the key and create a new one.",[26,11459,11461],{"id":11460},"naming-conventions","Naming conventions",[10,11463,11464],{},"A consistent naming pattern makes it easy to identify keys at a glance, especially once you have several. Use the format:",[91,11466,11469],{"className":11467,"code":11468,"language":811},[809],"{Environment} - {Project} {Version}\n",[17,11470,11468],{"__ignoreMap":96},[10,11472,11473],{},"Examples:",[839,11475,11476,11486],{},[842,11477,11478],{},[845,11479,11480,11483],{},[848,11481,11482],{},"Key name",[848,11484,11485],{},"What it's for",[864,11487,11488,11498,11508,11518,11528],{},[845,11489,11490,11495],{},[869,11491,11492],{},[17,11493,11494],{},"Production - Well Mapper v2",[869,11496,11497],{},"Live production traffic for version 2 of your app",[845,11499,11500,11505],{},[869,11501,11502],{},[17,11503,11504],{},"Staging - Well Mapper v2",[869,11506,11507],{},"Pre-release testing against real data",[845,11509,11510,11515],{},[869,11511,11512],{},[17,11513,11514],{},"Dev - Local Testing",[869,11516,11517],{},"Your local development environment",[845,11519,11520,11525],{},[869,11521,11522],{},[17,11523,11524],{},"CI - Well Mapper",[869,11526,11527],{},"Automated tests in your CI pipeline",[845,11529,11530,11535],{},[869,11531,11532],{},[17,11533,11534],{},"Dev - Jane Smith",[869,11536,11537],{},"A team member's personal development key",[10,11539,11540],{},"Avoid generic names like \"API Key 1\" or \"Test Key\". When you're reviewing keys six months from now, a descriptive name tells you exactly what to keep and what to revoke.",[26,11542,11544],{"id":11543},"environment-variable-setup","Environment variable setup",[10,11546,11547],{},"Never hardcode an API key in your source code. Use environment variables so keys stay out of version control.",[802,11549,11551],{"id":11550},"nodejs","Node.js",[10,11553,11554,11555,11558],{},"Create a ",[17,11556,11557],{},".env"," file in your project root:",[91,11560,11564],{"className":11561,"code":11562,"language":11563,"meta":96,"style":96},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","TOWNSHIP_CANADA_API_KEY=tc_live_your_key_here\n","bash",[17,11565,11566],{"__ignoreMap":96},[100,11567,11568,11571,11573],{"class":102,"line":103},[100,11569,11570],{"class":504},"TOWNSHIP_CANADA_API_KEY",[100,11572,154],{"class":106},[100,11574,11575],{"class":161},"tc_live_your_key_here\n",[10,11577,11578],{},"Load and use it in your application:",[91,11580,11582],{"className":1465,"code":11581,"language":1467,"meta":96,"style":96},"\u002F\u002F Make sure dotenv is loaded early (e.g., in your entry file)\nrequire(\"dotenv\").config();\n\nconst response = await fetch(\n  \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-36-42-3-W5\",\n  {\n    headers: {\n      \"X-API-Key\": process.env.TOWNSHIP_CANADA_API_KEY\n    }\n  }\n);\n",[17,11583,11584,11589,11614,11618,11632,11643,11648,11657,11680,11684,11688],{"__ignoreMap":96},[100,11585,11586],{"class":102,"line":103},[100,11587,11588],{"class":531},"\u002F\u002F Make sure dotenv is loaded early (e.g., in your entry file)\n",[100,11590,11591,11594,11596,11598,11601,11603,11605,11607,11610,11612],{"class":102,"line":121},[100,11592,11593],{"class":560},"require",[100,11595,565],{"class":564},[100,11597,158],{"class":157},[100,11599,11600],{"class":161},"dotenv",[100,11602,158],{"class":157},[100,11604,603],{"class":564},[100,11606,552],{"class":106},[100,11608,11609],{"class":560},"config",[100,11611,1628],{"class":564},[100,11613,350],{"class":106},[100,11615,11616],{"class":102,"line":131},[100,11617,525],{"emptyLinePlaceholder":524},[100,11619,11620,11622,11624,11626,11628,11630],{"class":102,"line":142},[100,11621,1474],{"class":500},[100,11623,3346],{"class":504},[100,11625,508],{"class":106},[100,11627,3351],{"class":1540},[100,11629,3354],{"class":560},[100,11631,3357],{"class":564},[100,11633,11634,11636,11639,11641],{"class":102,"line":170},[100,11635,2624],{"class":157},[100,11637,11638],{"class":161},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-36-42-3-W5",[100,11640,158],{"class":157},[100,11642,324],{"class":106},[100,11644,11645],{"class":102,"line":192},[100,11646,11647],{"class":106},"  {\n",[100,11649,11650,11653,11655],{"class":102,"line":200},[100,11651,11652],{"class":574},"    headers",[100,11654,343],{"class":106},[100,11656,333],{"class":106},[100,11658,11659,11661,11663,11665,11667,11670,11672,11675,11677],{"class":102,"line":216},[100,11660,2665],{"class":157},[100,11662,3409],{"class":3408},[100,11664,158],{"class":157},[100,11666,343],{"class":106},[100,11668,11669],{"class":504}," process",[100,11671,552],{"class":106},[100,11673,11674],{"class":504},"env",[100,11676,552],{"class":106},[100,11678,11679],{"class":504},"TOWNSHIP_CANADA_API_KEY\n",[100,11681,11682],{"class":102,"line":231},[100,11683,3054],{"class":106},[100,11685,11686],{"class":102,"line":237},[100,11687,2347],{"class":106},[100,11689,11690,11692],{"class":102,"line":245},[100,11691,603],{"class":564},[100,11693,350],{"class":106},[10,11695,11696],{},"For the Maps API tiles, pass the key as a query parameter instead:",[91,11698,11700],{"className":1465,"code":11699,"language":1467,"meta":96,"style":96},"const tileUrl = `https:\u002F\u002Fmaps.townshipcanada.com\u002Fgrid\u002Fdls\u002Ftwp\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=${process.env.TOWNSHIP_CANADA_API_KEY}`;\n",[17,11701,11702],{"__ignoreMap":96},[100,11703,11704,11706,11709,11711,11713,11716,11718,11721,11723,11725,11727,11729,11731,11733],{"class":102,"line":103},[100,11705,1474],{"class":500},[100,11707,11708],{"class":504}," tileUrl",[100,11710,508],{"class":106},[100,11712,1640],{"class":157},[100,11714,11715],{"class":161},"https:\u002F\u002Fmaps.townshipcanada.com\u002Fgrid\u002Fdls\u002Ftwp\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=",[100,11717,1644],{"class":1643},[100,11719,11720],{"class":1647},"process",[100,11722,552],{"class":106},[100,11724,11674],{"class":1647},[100,11726,552],{"class":106},[100,11728,11570],{"class":1647},[100,11730,1651],{"class":1643},[100,11732,3388],{"class":157},[100,11734,350],{"class":106},[802,11736,11738],{"id":11737},"python","Python",[10,11740,11554,11741,11743],{},[17,11742,11557],{}," file:",[91,11745,11746],{"className":11561,"code":11562,"language":11563,"meta":96,"style":96},[17,11747,11748],{"__ignoreMap":96},[100,11749,11750,11752,11754],{"class":102,"line":103},[100,11751,11570],{"class":504},[100,11753,154],{"class":106},[100,11755,11575],{"class":161},[10,11757,11758,11759,343],{},"Load it using ",[17,11760,11761],{},"python-dotenv",[91,11763,11766],{"className":11764,"code":11765,"language":11737,"meta":96,"style":96},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","import os\nfrom dotenv import load_dotenv\nimport requests\n\nload_dotenv()\n\napi_key = os.environ.get('TOWNSHIP_CANADA_API_KEY')\n\nresponse = requests.get(\n    'https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location',\n    headers={'X-API-Key': api_key},\n    params={'location': '10-15-23-4-W4'}\n)\n",[17,11767,11768,11776,11789,11796,11800,11808,11812,11844,11848,11864,11876,11897,11923],{"__ignoreMap":96},[100,11769,11770,11773],{"class":102,"line":103},[100,11771,11772],{"class":1540},"import",[100,11774,11775],{"class":181}," os\n",[100,11777,11778,11781,11784,11786],{"class":102,"line":121},[100,11779,11780],{"class":1540},"from",[100,11782,11783],{"class":181}," dotenv ",[100,11785,11772],{"class":1540},[100,11787,11788],{"class":181}," load_dotenv\n",[100,11790,11791,11793],{"class":102,"line":131},[100,11792,11772],{"class":1540},[100,11794,11795],{"class":181}," requests\n",[100,11797,11798],{"class":102,"line":142},[100,11799,525],{"emptyLinePlaceholder":524},[100,11801,11802,11806],{"class":102,"line":170},[100,11803,11805],{"class":11804},"siWMO","load_dotenv",[100,11807,594],{"class":106},[100,11809,11810],{"class":102,"line":192},[100,11811,525],{"emptyLinePlaceholder":524},[100,11813,11814,11817,11819,11822,11824,11828,11830,11833,11835,11838,11840,11842],{"class":102,"line":200},[100,11815,11816],{"class":181},"api_key ",[100,11818,154],{"class":106},[100,11820,11821],{"class":181}," os",[100,11823,552],{"class":106},[100,11825,11827],{"class":11826},"sBPpx","environ",[100,11829,552],{"class":106},[100,11831,11832],{"class":11804},"get",[100,11834,565],{"class":106},[100,11836,11837],{"class":157},"'",[100,11839,11570],{"class":161},[100,11841,11837],{"class":157},[100,11843,752],{"class":106},[100,11845,11846],{"class":102,"line":216},[100,11847,525],{"emptyLinePlaceholder":524},[100,11849,11850,11853,11855,11858,11860,11862],{"class":102,"line":231},[100,11851,11852],{"class":181},"response ",[100,11854,154],{"class":106},[100,11856,11857],{"class":181}," requests",[100,11859,552],{"class":106},[100,11861,11832],{"class":11804},[100,11863,3357],{"class":106},[100,11865,11866,11869,11872,11874],{"class":102,"line":237},[100,11867,11868],{"class":157},"    '",[100,11870,11871],{"class":161},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location",[100,11873,11837],{"class":157},[100,11875,324],{"class":106},[100,11877,11878,11880,11883,11885,11887,11889,11891,11894],{"class":102,"line":245},[100,11879,11652],{"class":1505},[100,11881,11882],{"class":106},"={",[100,11884,11837],{"class":157},[100,11886,3409],{"class":161},[100,11888,11837],{"class":157},[100,11890,343],{"class":106},[100,11892,11893],{"class":11804}," api_key",[100,11895,11896],{"class":106},"},\n",[100,11898,11899,11902,11904,11906,11909,11911,11913,11916,11919,11921],{"class":102,"line":260},[100,11900,11901],{"class":1505},"    params",[100,11903,11882],{"class":106},[100,11905,11837],{"class":157},[100,11907,11908],{"class":161},"location",[100,11910,11837],{"class":157},[100,11912,343],{"class":106},[100,11914,11915],{"class":157}," '",[100,11917,11918],{"class":161},"10-15-23-4-W4",[100,11920,11837],{"class":157},[100,11922,1784],{"class":106},[100,11924,11925],{"class":102,"line":275},[100,11926,752],{"class":106},[802,11928,11930],{"id":11929},"keeping-keys-out-of-git","Keeping keys out of git",[10,11932,11933,11934,11936,11937,11743],{},"Add ",[17,11935,11557],{}," to your ",[17,11938,11939],{},".gitignore",[91,11941,11943],{"className":11561,"code":11942,"language":11563,"meta":96,"style":96},"# .gitignore\n.env\n.env.local\n.env.*.local\n",[17,11944,11945,11950,11956,11961],{"__ignoreMap":96},[100,11946,11947],{"class":102,"line":103},[100,11948,11949],{"class":531},"# .gitignore\n",[100,11951,11952],{"class":102,"line":121},[100,11953,11955],{"class":11954},"sYn-s",".env\n",[100,11957,11958],{"class":102,"line":131},[100,11959,11960],{"class":11954},".env.local\n",[100,11962,11963],{"class":102,"line":142},[100,11964,11965],{"class":11954},".env.*.local\n",[10,11967,11968,11969,11972],{},"Commit a ",[17,11970,11971],{},".env.example"," file with placeholder values instead. Other developers on your team know what variables to set without seeing real credentials:",[91,11974,11976],{"className":11561,"code":11975,"language":11563,"meta":96,"style":96},"# .env.example\nTOWNSHIP_CANADA_API_KEY=your_api_key_here\n",[17,11977,11978,11983],{"__ignoreMap":96},[100,11979,11980],{"class":102,"line":103},[100,11981,11982],{"class":531},"# .env.example\n",[100,11984,11985,11987,11989],{"class":102,"line":121},[100,11986,11570],{"class":504},[100,11988,154],{"class":106},[100,11990,11991],{"class":161},"your_api_key_here\n",[26,11993,11995],{"id":11994},"key-rotation-without-downtime","Key rotation without downtime",[10,11997,11998],{},"Rotating a production key requires a brief overlap period where both the old and new key are valid. Follow this sequence:",[11427,12000,12001,12007,12013,12019],{},[37,12002,12003,12006],{},[62,12004,12005],{},"Create the new key"," in the Developer Portal with the same name (add \"v2\" or today's date to distinguish it)",[37,12008,12009,12012],{},[62,12010,12011],{},"Update your deployment"," - set the new key value in your environment variables or secrets manager",[37,12014,12015,12018],{},[62,12016,12017],{},"Deploy and verify"," - confirm requests are succeeding with the new key in your application logs",[37,12020,12021,12024],{},[62,12022,12023],{},"Revoke the old key"," - only after confirming the new key is working",[10,12026,12027],{},"Never revoke the old key before confirming the new one works. A failed deploy with no fallback means downtime.",[26,12029,12031],{"id":12030},"cicd-secrets","CI\u002FCD secrets",[10,12033,12034],{},"Automated pipelines need API keys without human involvement. Store keys in your CI provider's secrets store, not in configuration files.",[802,12036,12038],{"id":12037},"github-actions","GitHub Actions",[10,12040,12041],{},"Add your API key as a repository secret:",[11427,12043,12044,12050,12055,12061],{},[37,12045,11218,12046,12049],{},[62,12047,12048],{},"Settings → Secrets and variables → Actions"," in your GitHub repository",[37,12051,11235,12052],{},[62,12053,12054],{},"New repository secret",[37,12056,12057,12058,12060],{},"Name it ",[17,12059,11570],{}," and paste your CI key value",[37,12062,11235,12063],{},[62,12064,12065],{},"Add secret",[10,12067,12068],{},"Reference it in your workflow file:",[91,12070,12074],{"className":12071,"code":12072,"language":12073,"meta":96,"style":96},"language-yaml shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# .github\u002Fworkflows\u002Ftest.yml\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Run integration tests\n        env:\n          TOWNSHIP_CANADA_API_KEY: ${{ secrets.TOWNSHIP_CANADA_API_KEY }}\n        run: npm test\n","yaml",[17,12075,12076,12081,12089,12096,12106,12113,12126,12138,12145,12155],{"__ignoreMap":96},[100,12077,12078],{"class":102,"line":103},[100,12079,12080],{"class":531},"# .github\u002Fworkflows\u002Ftest.yml\n",[100,12082,12083,12086],{"class":102,"line":121},[100,12084,12085],{"class":574},"jobs",[100,12087,12088],{"class":106},":\n",[100,12090,12091,12094],{"class":102,"line":131},[100,12092,12093],{"class":574},"  test",[100,12095,12088],{"class":106},[100,12097,12098,12101,12103],{"class":102,"line":142},[100,12099,12100],{"class":574},"    runs-on",[100,12102,343],{"class":106},[100,12104,12105],{"class":161}," ubuntu-latest\n",[100,12107,12108,12111],{"class":102,"line":170},[100,12109,12110],{"class":574},"    steps",[100,12112,12088],{"class":106},[100,12114,12115,12118,12121,12123],{"class":102,"line":192},[100,12116,12117],{"class":106},"      -",[100,12119,12120],{"class":574}," uses",[100,12122,343],{"class":106},[100,12124,12125],{"class":161}," actions\u002Fcheckout@v4\n",[100,12127,12128,12130,12133,12135],{"class":102,"line":200},[100,12129,12117],{"class":106},[100,12131,12132],{"class":574}," name",[100,12134,343],{"class":106},[100,12136,12137],{"class":161}," Run integration tests\n",[100,12139,12140,12143],{"class":102,"line":216},[100,12141,12142],{"class":574},"        env",[100,12144,12088],{"class":106},[100,12146,12147,12150,12152],{"class":102,"line":231},[100,12148,12149],{"class":574},"          TOWNSHIP_CANADA_API_KEY",[100,12151,343],{"class":106},[100,12153,12154],{"class":161}," ${{ secrets.TOWNSHIP_CANADA_API_KEY }}\n",[100,12156,12157,12160,12162],{"class":102,"line":237},[100,12158,12159],{"class":574},"        run",[100,12161,343],{"class":106},[100,12163,12164],{"class":161}," npm test\n",[10,12166,12167],{},"The same pattern applies to other CI platforms - GitLab CI uses project variables, Bitbucket Pipelines uses repository variables, and CircleCI uses environment variables in project settings. The key principle is the same: the secret is stored in the platform, referenced by name in the config file, and never written to disk or logs.",[26,12169,12171],{"id":12170},"team-key-management","Team key management",[10,12173,12174],{},"On the Business plan, account admins can view all API keys created by team members - including the key name, creator, creation date, and last-used timestamp. This makes it possible to audit which keys are active, identify keys that haven't been used recently, and revoke credentials when a team member leaves.",[10,12176,12177],{},"Individual developers see only their own keys. Admins see keys across the entire team.",[10,12179,12180],{},"If your team uses a shared integration (for example, a company-wide internal tool), create that key under an admin account rather than a personal one. That way the key doesn't become inaccessible if the original creator's account is deactivated.",[26,12182,12184],{"id":12183},"security-practices","Security practices",[10,12186,12187],{},"A few habits that prevent the most common problems:",[10,12189,12190,12193,12194,12196,12197,12202],{},[62,12191,12192],{},"Don't commit keys."," The ",[17,12195,11939],{}," pattern above covers most cases. For extra protection, consider a tool like ",[67,12198,12201],{"href":12199,"rel":12200},"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fgit-secrets",[11320],"git-secrets"," that scans commits for credential patterns before they're pushed.",[10,12204,12205,12208],{},[62,12206,12207],{},"Use separate keys for separate projects."," If Project A's key is ever compromised, you revoke that key without touching Project B. It also makes usage monitoring cleaner - each key's activity in the logs maps to exactly one project.",[10,12210,12211,12214],{},[62,12212,12213],{},"Rotate keys periodically."," There's no hard rule on frequency, but a yearly rotation for production keys is a reasonable baseline. After a team member departure, rotate any keys they had access to.",[10,12216,12217,12220],{},[62,12218,12219],{},"Delete unused keys."," Old keys from completed projects or former team members are attack surface with no benefit. If a key hasn't been used in 90 days and you don't recognize its purpose, revoke it.",[10,12222,12223,12226],{},[62,12224,12225],{},"Treat keys like passwords."," Don't paste them into chat messages, emails, or support tickets. If you need to share a key temporarily, do it through a password manager or secrets vault.",[26,12228,10857],{"id":10856},[34,12230,12231,12237,12244,12251,12256],{},[37,12232,12233,12236],{},[67,12234,12235],{"href":2584},"API Integration"," - Get started with the Township Canada API",[37,12238,12239,12243],{},[67,12240,12242],{"href":12241},"\u002Fguides\u002Fbatch-api-guide","Batch API Guide"," - Process multiple records in a single request",[37,12245,12246,12250],{},[67,12247,12249],{"href":12248},"\u002Fguides\u002Fautocomplete-api-guide","Autocomplete API Guide"," - Add LLD search suggestions to your app",[37,12252,12253,12255],{},[67,12254,11331],{"href":74}," - Manage subscriptions and billing",[37,12257,12258,12262],{},[67,12259,12261],{"href":12260},"\u002Fpricing","Pricing"," - API plan tiers and request quotas",[312,12264,12265],{},"html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sQtxO, html code.shiki .sQtxO{--shiki-light:#E53935;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .su_V2, html code.shiki .su_V2{--shiki-light:#90A4AE;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}",{"title":96,"searchDepth":121,"depth":121,"links":12267},[12268,12269,12270,12275,12276,12279,12280,12281],{"id":11418,"depth":121,"text":11419},{"id":11460,"depth":121,"text":11461},{"id":11543,"depth":121,"text":11544,"children":12271},[12272,12273,12274],{"id":11550,"depth":131,"text":11551},{"id":11737,"depth":131,"text":11738},{"id":11929,"depth":131,"text":11930},{"id":11994,"depth":121,"text":11995},{"id":12030,"depth":121,"text":12031,"children":12277},[12278],{"id":12037,"depth":131,"text":12038},{"id":12170,"depth":121,"text":12171},{"id":12183,"depth":121,"text":12184},{"id":10856,"depth":121,"text":10857},"Create and manage multiple Township Canada API keys for different environments. Naming conventions, key rotation, environment variables, and CI\u002FCD setup.","i-lucide-key-round",{},"\u002Fguides\u002Fapi-key-management",{"title":11407,"description":12282},"guides\u002Fapi-key-management","y5S7M5b-MjrYZXjYnpDKKgJzo3-V9wx-qk4t04QBnso",{"id":12290,"title":12291,"body":12292,"category":10913,"description":13274,"draft":10915,"extension":10916,"icon":13275,"meta":13276,"navigation":524,"order":216,"path":13277,"seo":13278,"stem":13279,"__hash__":13280},"guides\u002Fguides\u002Fapi-troubleshooting.md","API Troubleshooting & Best Practices",{"type":7,"value":12293,"toc":13252},[12294,12300,12304,12308,12335,12341,12346,12363,12396,12399,12403,12408,12441,12445,12470,12474,12480,12485,12490,12503,12507,12510,12515,12526,12531,12561,12565,12575,12580,12598,12602,12609,12644,12648,12652,12758,12839,12843,13057,13061,13064,13070,13074,13077,13134,13137,13151,13155,13159,13166,13170,13173,13205,13209,13216,13218,13249],[10,12295,12296,12299],{},[62,12297,12298],{},"Getting errors from the Township Canada API?"," This guide covers the most common issues developers run into - authentication failures, CORS blocks, rate limits, and unexpected empty responses - with clear fixes for each one.",[26,12301,12303],{"id":12302},"common-errors-and-what-they-mean","Common errors and what they mean",[802,12305,12307],{"id":12306},"forbidden-http-403","Forbidden (HTTP 403)",[91,12309,12311],{"className":2610,"code":12310,"language":2612,"meta":96,"style":96},"{ \"message\": \"Forbidden\" }\n",[17,12312,12313],{"__ignoreMap":96},[100,12314,12315,12317,12319,12322,12324,12326,12328,12331,12333],{"class":102,"line":103},[100,12316,2395],{"class":106},[100,12318,511],{"class":2623},[100,12320,12321],{"class":2627},"message",[100,12323,158],{"class":2623},[100,12325,343],{"class":106},[100,12327,511],{"class":157},[100,12329,12330],{"class":161},"Forbidden",[100,12332,158],{"class":157},[100,12334,3420],{"class":106},[10,12336,12337,12340],{},[62,12338,12339],{},"Cause:"," Your API key is missing, invalid, or not included correctly.",[10,12342,12343],{},[62,12344,12345],{},"Fix:",[11427,12347,12348,12354,12360],{},[37,12349,12350,12351],{},"Confirm your API key exists: go to ",[62,12352,12353],{},"My Account → API Access",[37,12355,12356,12357,12359],{},"Include it in the ",[17,12358,3409],{}," header (not as a URL parameter)",[37,12361,12362],{},"Test with curl:",[91,12364,12366],{"className":11561,"code":12365,"language":11563,"meta":96,"style":96},"curl -H \"X-API-Key: YOUR_KEY\" \\\n  \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?q=SW-25-24-1-W5\"\n",[17,12367,12368,12387],{"__ignoreMap":96},[100,12369,12370,12373,12377,12379,12382,12384],{"class":102,"line":103},[100,12371,12372],{"class":11954},"curl",[100,12374,12376],{"class":12375},"sz9Cv"," -H",[100,12378,511],{"class":157},[100,12380,12381],{"class":161},"X-API-Key: YOUR_KEY",[100,12383,158],{"class":157},[100,12385,12386],{"class":6628}," \\\n",[100,12388,12389,12391,12394],{"class":102,"line":121},[100,12390,2624],{"class":157},[100,12392,12393],{"class":161},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?q=SW-25-24-1-W5",[100,12395,213],{"class":157},[10,12397,12398],{},"If you get a valid JSON response, your key works. If you still get Forbidden, the key may have been rotated - generate a new one from your account page.",[802,12400,12402],{"id":12401},"too-many-requests-http-429","Too Many Requests (HTTP 429)",[10,12404,12405,12407],{},[62,12406,12339],{}," You exceeded the rate limit for your API tier.",[839,12409,12410,12418],{},[842,12411,12412],{},[845,12413,12414,12416],{},[848,12415,11054],{},[848,12417,11060],{},[864,12419,12420,12427,12434],{},[845,12421,12422,12424],{},[869,12423,11070],{},[869,12425,12426],{},"1 request\u002Fsecond",[845,12428,12429,12431],{},[869,12430,11084],{},[869,12432,12433],{},"5 requests\u002Fsecond",[845,12435,12436,12438],{},[869,12437,11098],{},[869,12439,12440],{},"25 requests\u002Fsecond",[10,12442,12443],{},[62,12444,12345],{},[34,12446,12447,12458,12463],{},[37,12448,12449,12450,12453,12454,12457],{},"Add a delay between requests: ",[17,12451,12452],{},"await new Promise(r => setTimeout(r, 1000))"," in JavaScript, or ",[17,12455,12456],{},"time.sleep(1)"," in Python",[37,12459,2581,12460,12462],{},[67,12461,10841],{"href":12241}," instead of looping single calls - it processes up to 100 records per request",[37,12464,12465,12466,12469],{},"If you consistently need higher throughput, ",[67,12467,12468],{"href":11361},"contact us"," about upgrading your tier",[802,12471,12473],{"id":12472},"cors-policy-error","CORS Policy Error",[91,12475,12478],{"className":12476,"code":12477,"language":811},[809],"Access to fetch at 'https:\u002F\u002Fdeveloper.townshipcanada.com\u002F...' has been blocked by CORS policy\n",[17,12479,12477],{"__ignoreMap":96},[10,12481,12482,12484],{},[62,12483,12339],{}," You are calling the API directly from a browser (client-side JavaScript). The API is designed for server-to-server calls and does not include CORS headers by default.",[10,12486,12487],{},[62,12488,12489],{},"Fix options:",[11427,12491,12492,12498],{},[37,12493,12494,12497],{},[62,12495,12496],{},"Proxy through your backend"," - Make the API call from your server (Node.js, Python, etc.) and return the result to your frontend",[37,12499,12500,12502],{},[62,12501,11362],{}," - If you need direct browser access, we can add your domain to the CORS allowlist",[802,12504,12506],{"id":12505},"empty-response-no-features","Empty Response (no features)",[10,12508,12509],{},"The API returns a valid HTTP 200 response, but the result contains no features or coordinates.",[10,12511,12512],{},[62,12513,12514],{},"Possible causes:",[34,12516,12517,12520,12523],{},[37,12518,12519],{},"The legal description does not exist (e.g., a township\u002Frange combination that was never surveyed)",[37,12521,12522],{},"The description is at a resolution not supported for that region",[37,12524,12525],{},"Format is slightly wrong - the API is stricter than the web app",[10,12527,12528],{},[62,12529,12530],{},"Debugging steps:",[11427,12532,12533,12541,12550,12553],{},[37,12534,12535,12536,12540],{},"Try the same description in the ",[67,12537,12539],{"href":12538},"\u002Fapp","web app search box"," - does it work there?",[37,12542,12543,12544,12546,12547,603],{},"Check that you included the full meridian (e.g., ",[17,12545,2867],{}," not just ",[17,12548,12549],{},"5",[37,12551,12552],{},"Verify component ranges: LSD 1–16, Section 1–36, Township 1–126, Range 1–34",[37,12554,12555,12556,12560],{},"Check the ",[67,12557,12559],{"href":12558},"\u002Fguides\u002Fcoverage","Coverage Guide"," for resolution limits by region",[802,12562,12564],{"id":12563},"database-errors-28000-08006","Database Errors (28000, 08006)",[10,12566,12567,12568,4775,12571,12574],{},"Errors with codes like ",[17,12569,12570],{},"28000",[17,12572,12573],{},"08006"," indicate a service disruption, not an issue with your code.",[10,12576,12577],{},[62,12578,12579],{},"What to do:",[34,12581,12582,12590,12593],{},[37,12583,12555,12584,12589],{},[67,12585,12588],{"href":12586,"rel":12587},"https:\u002F\u002Fstatus.townshipcanada.com\u002F",[11320],"status page"," for incident reports",[37,12591,12592],{},"Wait a few minutes and retry",[37,12594,12595,12596],{},"If the issue persists beyond 15 minutes, ",[67,12597,12468],{"href":11361},[26,12599,12601],{"id":12600},"api-key-setup","API key setup",[10,12603,12604,12605,12608],{},"Quick recap of key setup (see the ",[67,12606,12607],{"href":12285},"full API key management guide"," for details):",[11427,12610,12611,12617,12626,12632,12638],{},[37,12612,12613,12616],{},[62,12614,12615],{},"Find your key:"," My Account → API Access",[37,12618,12619,12622,12623,12625],{},[62,12620,12621],{},"Include in requests:"," Add the ",[17,12624,3409],{}," header to every request",[37,12627,12628,12631],{},[62,12629,12630],{},"Test before coding:"," Use curl or Postman to confirm the key works",[37,12633,12634,12637],{},[62,12635,12636],{},"Name your keys:"," Use descriptive names like \"production-backend\" or \"staging-test\" to keep track of which key is used where",[37,12639,12640,12643],{},[62,12641,12642],{},"Rotate regularly:"," Generate new keys periodically and phase out old ones",[26,12645,12647],{"id":12646},"rate-limiting-best-practices","Rate limiting best practices",[802,12649,12651],{"id":12650},"add-delay-between-requests","Add delay between requests",[91,12653,12655],{"className":1465,"code":12654,"language":1467,"meta":96,"style":96},"\u002F\u002F JavaScript - simple delay\nfor (const query of queries) {\n  const result = await fetch(url + query, { headers });\n  await new Promise((r) => setTimeout(r, 1000));\n}\n",[17,12656,12657,12662,12683,12718,12754],{"__ignoreMap":96},[100,12658,12659],{"class":102,"line":103},[100,12660,12661],{"class":531},"\u002F\u002F JavaScript - simple delay\n",[100,12663,12664,12667,12669,12671,12673,12676,12679,12681],{"class":102,"line":121},[100,12665,12666],{"class":1540},"for",[100,12668,2180],{"class":564},[100,12670,1474],{"class":500},[100,12672,3520],{"class":504},[100,12674,12675],{"class":545}," of",[100,12677,12678],{"class":504}," queries",[100,12680,603],{"class":564},[100,12682,333],{"class":106},[100,12684,12685,12687,12690,12692,12694,12696,12698,12701,12704,12706,12708,12710,12712,12714,12716],{"class":102,"line":131},[100,12686,3343],{"class":500},[100,12688,12689],{"class":504}," result",[100,12691,508],{"class":106},[100,12693,3351],{"class":1540},[100,12695,3354],{"class":560},[100,12697,565],{"class":1557},[100,12699,12700],{"class":504},"url",[100,12702,12703],{"class":545}," +",[100,12705,3520],{"class":504},[100,12707,721],{"class":106},[100,12709,3403],{"class":106},[100,12711,3398],{"class":504},[100,12713,2404],{"class":106},[100,12715,603],{"class":1557},[100,12717,350],{"class":106},[100,12719,12720,12723,12725,12728,12730,12732,12735,12737,12739,12741,12743,12745,12747,12750,12752],{"class":102,"line":142},[100,12721,12722],{"class":1540},"  await",[100,12724,546],{"class":545},[100,12726,12727],{"class":2668}," Promise",[100,12729,565],{"class":1557},[100,12731,565],{"class":106},[100,12733,12734],{"class":1505},"r",[100,12736,603],{"class":106},[100,12738,3572],{"class":3571},[100,12740,5402],{"class":560},[100,12742,565],{"class":1557},[100,12744,12734],{"class":504},[100,12746,721],{"class":106},[100,12748,12749],{"class":346}," 1000",[100,12751,6060],{"class":1557},[100,12753,350],{"class":106},[100,12755,12756],{"class":102,"line":170},[100,12757,1784],{"class":106},[91,12759,12761],{"className":11764,"code":12760,"language":11737,"meta":96,"style":96},"# Python - simple delay\nimport time\nfor query in queries:\n    result = requests.get(url + query, headers=headers)\n    time.sleep(1)\n",[17,12762,12763,12768,12775,12789,12823],{"__ignoreMap":96},[100,12764,12765],{"class":102,"line":103},[100,12766,12767],{"class":531},"# Python - simple delay\n",[100,12769,12770,12772],{"class":102,"line":121},[100,12771,11772],{"class":1540},[100,12773,12774],{"class":181}," time\n",[100,12776,12777,12779,12782,12785,12787],{"class":102,"line":131},[100,12778,12666],{"class":1540},[100,12780,12781],{"class":181}," query ",[100,12783,12784],{"class":1540},"in",[100,12786,12678],{"class":181},[100,12788,12088],{"class":106},[100,12790,12791,12794,12796,12798,12800,12802,12804,12807,12810,12812,12814,12816,12818,12821],{"class":102,"line":142},[100,12792,12793],{"class":181},"    result ",[100,12795,154],{"class":106},[100,12797,11857],{"class":181},[100,12799,552],{"class":106},[100,12801,11832],{"class":11804},[100,12803,565],{"class":106},[100,12805,12806],{"class":11804},"url ",[100,12808,12809],{"class":545},"+",[100,12811,3520],{"class":11804},[100,12813,721],{"class":106},[100,12815,3398],{"class":1505},[100,12817,154],{"class":106},[100,12819,12820],{"class":11804},"headers",[100,12822,752],{"class":106},[100,12824,12825,12828,12830,12833,12835,12837],{"class":102,"line":170},[100,12826,12827],{"class":181},"    time",[100,12829,552],{"class":106},[100,12831,12832],{"class":11804},"sleep",[100,12834,565],{"class":106},[100,12836,5715],{"class":346},[100,12838,752],{"class":106},[802,12840,12842],{"id":12841},"use-exponential-backoff-on-429","Use exponential backoff on 429",[91,12844,12846],{"className":1465,"code":12845,"language":1467,"meta":96,"style":96},"async function fetchWithBackoff(url, headers, maxRetries = 3) {\n  for (let i = 0; i \u003C maxRetries; i++) {\n    const res = await fetch(url, { headers });\n    if (res.status !== 429) return res;\n    await new Promise((r) => setTimeout(r, 1000 * Math.pow(2, i)));\n  }\n  throw new Error(\"Rate limit exceeded after retries\");\n}\n",[17,12847,12848,12879,12914,12943,12972,13026,13030,13053],{"__ignoreMap":96},[100,12849,12850,12852,12854,12857,12859,12861,12863,12865,12867,12870,12872,12875,12877],{"class":102,"line":103},[100,12851,3323],{"class":500},[100,12853,3326],{"class":500},[100,12855,12856],{"class":560}," fetchWithBackoff",[100,12858,565],{"class":106},[100,12860,12700],{"class":1505},[100,12862,721],{"class":106},[100,12864,3398],{"class":1505},[100,12866,721],{"class":106},[100,12868,12869],{"class":1505}," maxRetries",[100,12871,508],{"class":106},[100,12873,12874],{"class":346}," 3",[100,12876,603],{"class":106},[100,12878,333],{"class":106},[100,12880,12881,12884,12886,12888,12891,12893,12895,12897,12899,12901,12903,12905,12907,12910,12912],{"class":102,"line":121},[100,12882,12883],{"class":1540},"  for",[100,12885,2180],{"class":1557},[100,12887,5246],{"class":500},[100,12889,12890],{"class":504}," i",[100,12892,508],{"class":106},[100,12894,347],{"class":346},[100,12896,2091],{"class":106},[100,12898,12890],{"class":504},[100,12900,5349],{"class":106},[100,12902,12869],{"class":504},[100,12904,2091],{"class":106},[100,12906,12890],{"class":504},[100,12908,12909],{"class":545},"++",[100,12911,603],{"class":1557},[100,12913,333],{"class":106},[100,12915,12916,12918,12921,12923,12925,12927,12929,12931,12933,12935,12937,12939,12941],{"class":102,"line":131},[100,12917,3838],{"class":500},[100,12919,12920],{"class":504}," res",[100,12922,508],{"class":106},[100,12924,3351],{"class":1540},[100,12926,3354],{"class":560},[100,12928,565],{"class":1557},[100,12930,12700],{"class":504},[100,12932,721],{"class":106},[100,12934,3403],{"class":106},[100,12936,3398],{"class":504},[100,12938,2404],{"class":106},[100,12940,603],{"class":1557},[100,12942,350],{"class":106},[100,12944,12945,12948,12950,12953,12955,12958,12961,12964,12966,12968,12970],{"class":102,"line":142},[100,12946,12947],{"class":1540},"    if",[100,12949,2180],{"class":1557},[100,12951,12952],{"class":504},"res",[100,12954,552],{"class":106},[100,12956,12957],{"class":504},"status",[100,12959,12960],{"class":545}," !==",[100,12962,12963],{"class":346}," 429",[100,12965,603],{"class":1557},[100,12967,3665],{"class":1540},[100,12969,12920],{"class":504},[100,12971,350],{"class":106},[100,12973,12974,12977,12979,12981,12983,12985,12987,12989,12991,12993,12995,12997,12999,13001,13004,13007,13009,13012,13014,13017,13019,13021,13024],{"class":102,"line":170},[100,12975,12976],{"class":1540},"    await",[100,12978,546],{"class":545},[100,12980,12727],{"class":2668},[100,12982,565],{"class":1557},[100,12984,565],{"class":106},[100,12986,12734],{"class":1505},[100,12988,603],{"class":106},[100,12990,3572],{"class":3571},[100,12992,5402],{"class":560},[100,12994,565],{"class":1557},[100,12996,12734],{"class":504},[100,12998,721],{"class":106},[100,13000,12749],{"class":346},[100,13002,13003],{"class":545}," *",[100,13005,13006],{"class":504}," Math",[100,13008,552],{"class":106},[100,13010,13011],{"class":560},"pow",[100,13013,565],{"class":1557},[100,13015,13016],{"class":346},"2",[100,13018,721],{"class":106},[100,13020,12890],{"class":504},[100,13022,13023],{"class":1557},")))",[100,13025,350],{"class":106},[100,13027,13028],{"class":102,"line":192},[100,13029,2347],{"class":106},[100,13031,13032,13035,13037,13040,13042,13044,13047,13049,13051],{"class":102,"line":200},[100,13033,13034],{"class":1540},"  throw",[100,13036,546],{"class":545},[100,13038,13039],{"class":560}," Error",[100,13041,565],{"class":1557},[100,13043,158],{"class":157},[100,13045,13046],{"class":161},"Rate limit exceeded after retries",[100,13048,158],{"class":157},[100,13050,603],{"class":1557},[100,13052,350],{"class":106},[100,13054,13055],{"class":102,"line":216},[100,13056,1784],{"class":106},[802,13058,13060],{"id":13059},"use-the-batch-api-for-bulk-work","Use the Batch API for bulk work",[10,13062,13063],{},"Instead of looping 1,000 single calls (which takes 17+ minutes at 1\u002Fsec), use the Batch API to process 100 records per call - the same 1,000 records take 10 calls.",[10,13065,13066,13067,13069],{},"See the ",[67,13068,12242],{"href":12241}," for chunking examples in Node.js and Python.",[26,13071,13073],{"id":13072},"format-differences-web-app-vs-api","Format differences: web app vs. API",[10,13075,13076],{},"The web app's search box is more forgiving than the API:",[839,13078,13079,13091],{},[842,13080,13081],{},[845,13082,13083,13086,13089],{},[848,13084,13085],{},"Issue",[848,13087,13088],{},"Web App",[848,13090,10955],{},[864,13092,13093,13104,13115,13124],{},[845,13094,13095,13098,13101],{},[869,13096,13097],{},"Missing \"W\" on meridian",[869,13099,13100],{},"May auto-correct",[869,13102,13103],{},"Returns empty",[845,13105,13106,13109,13112],{},[869,13107,13108],{},"Extra spaces",[869,13110,13111],{},"Handled",[869,13113,13114],{},"May cause issues",[845,13116,13117,13120,13122],{},[869,13118,13119],{},"Mixed case",[869,13121,13111],{},[869,13123,13111],{},[845,13125,13126,13129,13132],{},[869,13127,13128],{},"Partial descriptions",[869,13130,13131],{},"Shows suggestions",[869,13133,13103],{},[10,13135,13136],{},"When building API integrations, always normalize your input first:",[34,13138,13139,13142,13145,13148],{},[37,13140,13141],{},"Include dashes between all components",[37,13143,13144],{},"Add the \"W\" prefix on meridians",[37,13146,13147],{},"Remove extra text, parentheses, and place names",[37,13149,13150],{},"Trim whitespace",[26,13152,13154],{"id":13153},"integration-patterns","Integration patterns",[802,13156,13158],{"id":13157},"caching","Caching",[10,13160,13161,13162,13165],{},"If your application looks up the same legal descriptions repeatedly, cache the results. Legal land descriptions map to fixed coordinates - the result for ",[17,13163,13164],{},"SW-25-24-1-W5"," will not change.",[802,13167,13169],{"id":13168},"error-handling","Error handling",[10,13171,13172],{},"Always handle these response codes:",[34,13174,13175,13181,13187,13193,13199],{},[37,13176,13177,13180],{},[62,13178,13179],{},"200"," - Success, parse the result",[37,13182,13183,13186],{},[62,13184,13185],{},"400"," - Bad request, check your input format",[37,13188,13189,13192],{},[62,13190,13191],{},"403"," - Authentication failed, check your API key",[37,13194,13195,13198],{},[62,13196,13197],{},"429"," - Rate limited, wait and retry",[37,13200,13201,13204],{},[62,13202,13203],{},"500\u002F502\u002F503"," - Server issue, retry after a short delay",[802,13206,13208],{"id":13207},"openapi-spec","OpenAPI spec",[10,13210,13211,13212,13215],{},"Download the OpenAPI specification at ",[67,13213,13214],{"href":13214},"\u002Fopenapi.yaml"," and import it into Postman, Swagger UI, or Insomnia for interactive testing and documentation.",[26,13217,10857],{"id":10856},[34,13219,13220,13225,13231,13238,13243],{},[37,13221,13222,13224],{},[67,13223,10864],{"href":2584}," - getting started with the API",[37,13226,13227,13230],{},[67,13228,13229],{"href":12285},"API Key Management"," - creating and managing API keys",[37,13232,13233,13237],{},[67,13234,13236],{"href":13235},"\u002Fguides\u002Fsearch-api-guide","Search API Guide"," - single-location lookups",[37,13239,13240,13242],{},[67,13241,12242],{"href":12241}," - bulk conversions",[37,13244,13245,13248],{},[67,13246,13247],{"href":12558},"Coverage & Limitations"," - what regions and resolutions are supported",[312,13250,13251],{},"html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sLdnO, html code.shiki .sLdnO{--shiki-light:#E53935;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sIOqK, html code.shiki .sIOqK{--shiki-light:#9C3EDA;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}",{"title":96,"searchDepth":121,"depth":121,"links":13253},[13254,13261,13262,13267,13268,13273],{"id":12302,"depth":121,"text":12303,"children":13255},[13256,13257,13258,13259,13260],{"id":12306,"depth":131,"text":12307},{"id":12401,"depth":131,"text":12402},{"id":12472,"depth":131,"text":12473},{"id":12505,"depth":131,"text":12506},{"id":12563,"depth":131,"text":12564},{"id":12600,"depth":121,"text":12601},{"id":12646,"depth":121,"text":12647,"children":13263},[13264,13265,13266],{"id":12650,"depth":131,"text":12651},{"id":12841,"depth":131,"text":12842},{"id":13059,"depth":131,"text":13060},{"id":13072,"depth":121,"text":13073},{"id":13153,"depth":121,"text":13154,"children":13269},[13270,13271,13272],{"id":13157,"depth":131,"text":13158},{"id":13168,"depth":131,"text":13169},{"id":13207,"depth":131,"text":13208},{"id":10856,"depth":121,"text":10857},"Fix common Township Canada API errors including Forbidden responses, CORS issues, rate limiting, and empty results. Includes debugging tips and integration patterns.","i-lucide-bug",{},"\u002Fguides\u002Fapi-troubleshooting",{"title":12291,"description":13274},"guides\u002Fapi-troubleshooting","YhFOkUOkxRyXExvO-F29ZJyxlbLEw9dMy2FCmSMog7U"]