{"id":3410,"date":"2025-10-16T01:51:38","date_gmt":"2025-10-16T04:51:38","guid":{"rendered":"https:\/\/santaclaraagro.com.br\/?page_id=3410"},"modified":"2025-10-16T18:22:34","modified_gmt":"2025-10-16T21:22:34","slug":"onde-encontrar","status":"publish","type":"page","link":"https:\/\/santaclaraagro.com.br\/es\/onde-encontrar\/","title":{"rendered":"Donde encontrar"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"3410\" class=\"elementor elementor-3410\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-310bea9 elementor-section-height-min-height elementor-section-boxed elementor-section-height-default elementor-section-items-middle\" data-id=\"310bea9\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a928c99\" data-id=\"a928c99\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e2fca6f elementor-widget elementor-widget-heading\" data-id=\"e2fca6f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Donde Encontrar<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d71279 elementor-widget elementor-widget-heading\" data-id=\"6d71279\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">Fale com o Consultor de Vendas mais pr\u00f3ximo de voc\u00ea<\/h6>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-16dc199 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"16dc199\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-397445a\" data-id=\"397445a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-44f155a elementor-widget elementor-widget-html\" data-id=\"44f155a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- ==== ONDE ATUAMOS (independente, sem plugin) \u2013 CSV remoto + fallback ====\n     L\u00ea https:\/\/santaclaraagro.com.br\/listas\/ctv.csv\n     Formato do CSV (UTF-8, separador v\u00edrgula):\n     ctv,cidade,estado,telefone,lat,lng,coverage\n     - coverage: \"Cidade,UF;Outra,UF\"\n     - lat\/lng podem ficar vazios (geocodifica pela cidade\/UF)\n=========================================================================== -->\n<section id=\"onde-atuamos\" style=\"margin:24px 0\">\n  <style>\n    :root{ --pdv-bg:#ffffff; --pdv-brd:#ebedf0; --pdv-muted:#667085; --pdv-accent:#0086C1; --pdv-title:#101828; --pdv-chip:#f2f4f7; --pdv-success:#22c55e;}\n    .pdv-wrap{display:grid;grid-template-columns:1fr 1.1fr;gap:20px;align-items:start}\n    @media(max-width:980px){.pdv-wrap{grid-template-columns:1fr;gap:16px}}\n    .pdv-card{background:var(--pdv-bg);border:1px solid var(--pdv-brd);border-radius:14px;box-shadow:0 1px 2px rgba(16,24,40,.04)}\n    .pdv-left{max-height:560px;overflow:auto}\n    .pdv-head{padding:14px 14px 8px;border-bottom:1px solid var(--pdv-brd)}\n    .pdv-top{display:flex;gap:10px}\n    .pdv-input{flex:1;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--pdv-brd);border-radius:12px;padding:10px 12px}\n    .pdv-input input{border:0;outline:none;width:100%}\n    .pdv-btn{padding:10px 14px;border:1px solid var(--pdv-accent);background:var(--pdv-accent);color:#fff;border-radius:12px;cursor:pointer;white-space:nowrap}\n    .pdv-sub{font-size:12px;color:var(--pdv-muted);margin-top:6px}\n    #pdv-list{padding:8px 14px 14px}\n    .pdv-item{padding:14px;border-bottom:1px solid var(--pdv-brd)}\n    .pdv-item:last-child{border-bottom:none}\n    .pdv-ttl{font-weight:700;margin:0 0 6px;color:var(--pdv-title)}\n    .pdv-line{margin:2px 0;color:#1f2937}\n    .pdv-wa a{display:inline-flex;align-items:center;gap:8px;text-decoration:none;border:1px solid var(--pdv-success);background:var(--pdv-success);color:#fff;border-radius:10px;padding:8px 12px;font-weight:600}\n    .pdv-chip{display:inline-flex;align-items:center;gap:6px;background:var(--pdv-chip);color:#344054;border:1px solid var(--pdv-brd);border-radius:999px;padding:6px 10px;font-size:12px}\n    #pdv-map{width:100%;height:560px;border-radius:14px;border:1px solid var(--pdv-brd)}\n    .pdv-empty{color:var(--pdv-muted);padding:16px}\n    .pdv-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-top:1px solid var(--pdv-brd);gap:10px;flex-wrap:wrap}\n    .pdv-mode{font-size:12px;color:#475467}.pdv-mode strong{color:#0a7}\n    @media(max-width:980px){#pdv-map{height:420px}}\n    [type=button]:focus, [type=button]:hover, [type=submit]:focus, [type=submit]:hover, button:focus, button:hover {background-color:#003F78;}\n  <\/style>\n\n  <div class=\"pdv-wrap\" data-message=\"Estou no site Santa Clara e gostaria de atendimento\" data-radius-km=\"300\">\n    <div class=\"pdv-card pdv-left\">\n      <div class=\"pdv-head\">\n        <div class=\"pdv-top\">\n          <div class=\"pdv-input\">\n            <svg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#98a2b3\" d=\"M21 20l-5.6-5.6a7 7 0 10-1.4 1.4L20 21zM5 10a5 5 0 1110 0a5 5 0 01-10 0\"\/><\/svg>\n            <input id=\"pdv-city\" type=\"text\" placeholder=\"Digite sua cidade ...\">\n          <\/div>\n          <button id=\"pdv-search\" class=\"pdv-btn\" type=\"button\">Procurar<\/button>\n        <\/div>\n        <div class=\"pdv-sub\">Selecione sua cidade ou permita a localiza\u00e7\u00e3o autom\u00e1tica.<\/div>\n      <\/div>\n      <div id=\"pdv-list\"><\/div>\n      <div class=\"pdv-footer\">\n        <span id=\"pdv-count\" class=\"pdv-sub\"><\/span>\n        <span id=\"pdv-updated\" class=\"pdv-sub\"><\/span>\n      <\/div>\n    <\/div>\n    <div class=\"pdv-card\"><div id=\"pdv-map\" aria-label=\"Mapa de consultores\"><\/div><\/div>\n  <\/div>\n\n  <script>\n\/* ============================\n   Configura\u00e7\u00f5es principais\n============================ *\/\nconst CSV_URL = \"https:\/\/santaclaraagro.com.br\/listas\/ctv.csv\"; \/\/ <- sua planilha publicada\nconst FALLBACK_CITY = 'Ribeir\u00e3o Preto';\nconst FALLBACK_UF   = 'SP';\nconst FALLBACK_CENTER = { lat: -21.1775, lng: -47.8103 }; \/\/ Ribeir\u00e3o Preto-SP\n\n\/* =========================================================\n   Fallback embutido (caso o CSV n\u00e3o carregue por qualquer motivo)\n   -> Pode manter ou remover depois que o CSV estiver 100% confi\u00e1vel.\n========================================================= *\/\n\n\/* ===========================================\n   Utilit\u00e1rios: sanitiza\u00e7\u00e3o, telefone, dist\u00e2ncia\n=========================================== *\/\nconst onlyDigits = s => (s||'').toString().replace(\/\\D+\/g,'');\nconst ensure55 = s => { const n=onlyDigits(s); if(!n) return ''; return n.startsWith('55') ? n : ('55'+n.replace(\/^0+\/,'')); };\nconst waLink = (num,msg) => num ? `https:\/\/wa.me\/${num}?text=${encodeURIComponent(msg)}` : '';\nconst esc = s => (s||'').replace(\/[&<>\"']\/g, m => ({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[m]));\nconst toRad = d => d*Math.PI\/180;\nfunction haversineKm(a,b){ if(!a||!b) return Infinity; const R=6371, dLat=toRad(b.lat-a.lat), dLng=toRad(b.lng-a.lng); const s1=Math.sin(dLat\/2), s2=Math.sin(dLng\/2); const c=s1*s1+Math.cos(toRad(a.lat))*Math.cos(toRad(b.lat))*s2*s2; return 2*R*Math.asin(Math.sqrt(c)); }\nconst covSplit = s => (s||'').split(';').map(x=>x.trim()).filter(Boolean);\n\n\/* CSV parser leve: suporta campos \"entre aspas\", v\u00edrgulas e quebras de linha *\/\nfunction parseCSV(text){\n  const rows=[]; let i=0, field='', row=[], inQuotes=false;\n  while(i<text.length){\n    const c=text[i];\n    if(inQuotes){\n      if(c==='\"' && text[i+1]==='\"'){ field+='\"'; i+=2; continue; }\n      if(c==='\"'){ inQuotes=false; i++; continue; }\n      field+=c; i++; continue;\n    }else{\n      if(c==='\"'){ inQuotes=true; i++; continue; }\n      if(c===','){ row.push(field); field=''; i++; continue; }\n      if(c==='\\r'){ i++; continue; }\n      if(c==='\\n'){ row.push(field); rows.push(row); field=''; row=[]; i++; continue; }\n      field+=c; i++; continue;\n    }\n  }\n  if(field.length || row.length) { row.push(field); rows.push(row); }\n  \/\/ primeira linha = cabe\u00e7alho\n  const header = (rows.shift()||[]).map(h => h.trim());\n  return rows.filter(r=>r.length).map(cols=>{\n    const obj={}; header.forEach((h,idx)=> obj[h] = (cols[idx]||'').trim()); return obj;\n  });\n}\n\n\/* ===========================================\n   Estado\/vari\u00e1veis globais da p\u00e1gina\n=========================================== *\/\n(function(){\n  const wrap   = document.querySelector('#onde-atuamos .pdv-wrap');\n  const listEl = wrap.querySelector('#pdv-list');\n  const mapEl  = wrap.querySelector('#pdv-map');\n  const input  = wrap.querySelector('#pdv-city');\n  const btn    = wrap.querySelector('#pdv-search');\n  const msg    = wrap.getAttribute('data-message') || 'Contato via site';\n  const RADIUS_KM = parseFloat(wrap.getAttribute('data-radius-km')) || 300;\n  const elCount = document.getElementById('pdv-count');\n  const elUpdated = document.getElementById('pdv-updated');\n\n  let MAP=null, BOUNDS=null, GEOCODER=null, MARKERS=[];\n  let STORES=[]; let center=null;\n\n  \/* Converte linhas (CSV ou fallback) para o formato interno *\/\n  function fromData(raw){\n    return raw.map(r=>{\n      const tel55 = ensure55(r.telefone||r.phone_55||'');\n      const lat = r.lat===undefined || r.lat==='' ? NaN : parseFloat(String(r.lat).replace(',','.'));\n      const lng = r.lng===undefined || r.lng==='' ? NaN : parseFloat(String(r.lng).replace(',','.'));\n      const validLat = isFinite(lat) && Math.abs(lat) <= 90 ? lat : NaN;\n      const validLng = isFinite(lng) && Math.abs(lng) <= 180 ? lng : NaN;\n      return {\n        ctv: (r.ctv||r[\"Nome Abreviado\"]||r.consultor||r.representante||r.nome||'').trim(),\n        cidade: (r.cidade||'').trim(),\n        estado: (r.estado||r.uf||'').trim(),\n        telefone: tel55,\n        wa: waLink(tel55, msg),\n        coverage: covSplit(r.coverage||r.coverage_cities||r.__coverage_normalized||''),\n        lat: validLat,\n        lng: validLng\n      };\n    }).filter(r=>r.cidade && r.estado);\n  }\n\n  \/* Inicializa Google Maps *\/\n  function initMap(){\n    MAP = new google.maps.Map(mapEl, { center:{lat:-14.2350,lng:-51.9253}, zoom:4, mapTypeControl:false, streetViewControl:false });\n    GEOCODER = new google.maps.Geocoder();\n    BOUNDS = new google.maps.LatLngBounds();\n  }\n  function clearMarkers(){ MARKERS.forEach(m=>m.setMap(null)); MARKERS=[]; }\n  function addMarker(s){\n    if(!isFinite(s.lat)||!isFinite(s.lng)) return;\n    const pos={lat:s.lat,lng:s.lng};\n    const mk = new google.maps.Marker({map:MAP, position:pos, title: s.ctv || `${s.cidade}\/${s.estado}`});\n    const iw = new google.maps.InfoWindow({\n      content: `<div style=\"font-family:system-ui, -apple-system, Segoe UI, Roboto, 'Helvetica Neue', Arial\">\n        <div style=\"font-weight:700;margin-bottom:4px\">${esc(s.ctv||'Consultor')}<\/div>\n        <div style=\"color:#475467;margin-bottom:8px\">${esc(s.cidade)} - ${esc(s.estado)}<\/div>\n        ${s.telefone ? `<a href=\"${s.wa}\" target=\"_blank\" rel=\"noopener\" style=\"display:inline-block;padding:8px 10px;background:#22c55e;color:#fff;border-radius:8px;text-decoration:none;font-weight:600\">Falar no WhatsApp: ${esc(s.telefone)}<\/a>`:''}\n      <\/div>`\n    });\n    mk.addListener('click', ()=> iw.open(MAP, mk));\n    MARKERS.push(mk); BOUNDS.extend(pos);\n  }\n  async function geocodeCityIfNeeded(s){\n    if(isFinite(s.lat) && isFinite(s.lng)) return s;\n    const key = `pdv_geo_${s.cidade}_${s.estado}`.replace(\/\\s+\/g,'_').toLowerCase();\n    try{ const cached=localStorage.getItem(key); if(cached){ const v=JSON.parse(cached); if(isFinite(v.lat)&&isFinite(v.lng)){ s.lat=v.lat; s.lng=v.lng; return s; } } }catch(e){}\n    return new Promise(resolve=>{\n      GEOCODER.geocode({ address: `${s.cidade}, ${s.estado}, Brasil` }, (r,st)=>{\n        if(st==='OK' && r && r[0]){ const loc=r[0].geometry.location; s.lat=loc.lat(); s.lng=loc.lng(); localStorage.setItem(key, JSON.stringify({lat:s.lat,lng:s.lng})); }\n        resolve(s);\n      });\n    });\n  }\n  async function ensureAllGeocoded(rows){ for(let i=0;i<rows.length;i++){ rows[i] = await geocodeCityIfNeeded(rows[i]); } return rows; }\n\n  function renderList(rows){\n    listEl.innerHTML='';\n    if(!rows.length){\n      listEl.innerHTML=`<div class=\"pdv-empty\">No momento, n\u00e3o h\u00e1 um consultor pr\u00f3ximo a voc\u00ea.<br><a href=\"https:\/\/santaclaraagro.com.br\/fale-conosco\/\">Preencha o formul\u00e1rio<\/a> para que nossa equipe entre em contato.<\/div>`;\n      if(elCount) elCount.textContent = '0 consultor(es) listado(s)';\n      return;\n    }\n    rows.forEach(s=>{\n      const el=document.createElement('div');\n      el.className='pdv-item';\n      el.innerHTML=`\n        <div class=\"pdv-ttl\">${esc(s.ctv || 'Consultor')}<\/div>\n        <div class=\"pdv-line\">${esc(s.cidade)} - ${esc(s.estado)}<\/div>\n        <div class=\"pdv-line pdv-wa\">\n          ${s.telefone ? `<a href=\"${s.wa}\" target=\"_blank\" rel=\"noopener\" aria-label=\"Abrir WhatsApp para ${esc(s.ctv||'consultor')}\">\n            <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#fff\" d=\"M20.52 3.48A11.9 11.9 0 0 0 12 0C5.38 0 0 5.38 0 12c0 2.11.54 4.18 1.57 6.01L0 24l6.19-1.62A11.96 11.96 0 0 0 12 24c6.62 0 12-5.38 12-12c0-3.2-1.25-6.2-3.48-8.52M12 22a9.9 9.9 0 0 1-5.04-1.38l-.36-.21l-3.67.96l.98-3.58l-.24-.37A9.9 9.9 0 0 1 2 12C2 6.49 6.49 2 12 2s10 4.49 10 10s-4.49 10-10 10m5.49-7.31c-.3-.16-1.79-.88-2.06-.98c-.28-.1-.48-.16-.68.16c-.2.31-.78.97-.95 1.17c-.17.2-.35.23-.65.08c-.3-.16-1.25-.46-2.38-1.47c-.88-.78-1.48-1.74-1.65-2.03c-.17-.3-.02-.46.13-.61c.13-.13.3-.35.45-.53c.15-.18.2-.31.3-.52c.1-.2.05-.39-.02-.55c-.08-.16-.68-1.62-.93-2.22c-.25-.6-.5-.52-.68-.53h-.58c-.2 0 -.52 .07 -.79 .39c-.27 .31 -1.04 1.01 -1.04 2.46 s1.06 2.85 1.21 3.05 c.15 .2 2.08 3.17 5.04 4.45 c.7 .3 1.25 .47 1.68 .6 c.71 .23 1.35 .2 1.86 .12 c.57 -.08 1.79 -.73 2.05 -1.43 c.25 -.71 .25 -1.31 .17 -1.43 c-.07 -.12 -.27 -.2 -.56 -.36Z\"\/><\/svg>\n            Falar no WhatsApp: ${esc(s.telefone)}\n          <\/a>` : '<span class=\"pdv-sub\">Sem telefone<\/span>'}\n        <\/div>`;\n      listEl.appendChild(el);\n    });\n    if(elCount) elCount.textContent = `${rows.length} consultor(es) listado(s)`;\n  }\n\n  async function refreshMap(rows){\n    clearMarkers(); BOUNDS = new google.maps.LatLngBounds();\n    for(const s of rows){ addMarker(s); }\n    if(MARKERS.length){\n      if(MARKERS.length===1){ MAP.setCenter(MARKERS[0].getPosition()); MAP.setZoom(9); }\n      else { MAP.fitBounds(BOUNDS); }\n    }\n  }\n\n  function filterByCoverage(city, uf, rows){\n    const wanted = `${city},${uf}`.replace(\/\\s*,\\s*\/, ',').trim().toLowerCase();\n    return rows.filter(s => s.coverage.map(c=>String(c).trim().toLowerCase()).includes(wanted));\n  }\n  function filterByRadius(center, rows){\n    return rows.filter(s => isFinite(s.lat)&&isFinite(s.lng) && haversineKm(center, {lat:s.lat,lng:s.lng}) <= (parseFloat(wrap.getAttribute('data-radius-km')) || 300));\n  }\n\n  async function run(city, uf, centerPoint){\n    await ensureAllGeocoded(STORES);\n    let result = filterByCoverage(city, uf, STORES);\n    if(!result.length && centerPoint){ result = filterByRadius(centerPoint, STORES); }\n    renderList(result); refreshMap(result);\n  }\n\n  function setInputCity(city){ input.value = (city||'').trim(); }\n\n  \/* ============ Carrega CSV remoto com cache-buster e HEAD para \"Last-Modified\" ============ *\/\n  async function loadCSVStores(){\n    let lastMod='';\n    try{\n      \/\/ HEAD para data de atualiza\u00e7\u00e3o (n\u00e3o bloqueia se falhar)\n      const head = await fetch(CSV_URL, { method:'HEAD', cache:'no-store' });\n      lastMod = head.headers.get('Last-Modified') || '';\n    }catch(e){}\n    try{\n      const res = await fetch(CSV_URL + '?v=' + Date.now(), { cache:'no-store' });\n      if(!res.ok) throw new Error('HTTP '+res.status);\n      const text = await res.text();\n      const rows = parseCSV(text);\n      if(!Array.isArray(rows) || !rows.length) throw new Error('CSV vazio');\n      const mapped = rows.map(o=>({\n        ctv: o.ctv || '',\n        cidade: o.cidade || '',\n        estado: o.estado || o.uf || '',\n        telefone: o.telefone || '',\n        lat: o.lat || '',\n        lng: o.lng || '',\n        coverage: o.coverage || ''\n      }));\n      if(elUpdated && lastMod){\n        const d = new Date(lastMod); if(!isNaN(d)) elUpdated.textContent = `Dados atualizados em ${d.toLocaleString('pt-BR')}`;\n      }\n      return fromData(mapped);\n    }catch(err){\n      console.warn('[PDV] Falha ao carregar CSV remoto, usando fallback embutido.', err);\n      if(elUpdated) elUpdated.textContent = 'Dados locais (fallback)';\n      return fromData(PDV_DATA);\n    }\n  }\n\n  \/* =================== START =================== *\/\n  window.__pdvStart = async function(){\n    initMap();\n    STORES = await loadCSVStores();\n\n    const afterGeo = async (pt)=>{\n      center = pt; MAP.setCenter(center); MAP.setZoom(8);\n      new google.maps.Marker({map:MAP, position:center, icon:{path:google.maps.SymbolPath.CIRCLE, scale:6, fillColor:'#0a7', fillOpacity:1, strokeColor:'#fff', strokeWeight:2}, title:'Voc\u00ea est\u00e1 aqui'});\n      \/\/ Inverter geocode -> city\/UF e preencher apenas a cidade no input\n      GEOCODER.geocode({location:center}, async (res,st)=>{\n        if(st==='OK' && res && res[0]){\n          const comp = res[0].address_components||[];\n          const city = (comp.find(c=>c.types.includes('administrative_area_level_2'))||comp.find(c=>c.types.includes('locality'))||{}).long_name || '';\n          const uf = (comp.find(c=>c.types.includes('administrative_area_level_1'))||{}).short_name || '';\n          setInputCity(city);\n          await run(city, uf, center);\n        }else{\n          setInputCity(FALLBACK_CITY);\n          center = FALLBACK_CENTER;\n          MAP.setCenter(center); MAP.setZoom(9);\n          await run(FALLBACK_CITY, FALLBACK_UF, center);\n        }\n      });\n    };\n\n    \/\/ Geolocaliza\u00e7\u00e3o do usu\u00e1rio\n    if(navigator.geolocation){\n      navigator.geolocation.getCurrentPosition(\n        (pos)=> afterGeo({lat:pos.coords.latitude, lng:pos.coords.longitude}),\n        async ()=>{\n          setInputCity(FALLBACK_CITY);\n          center = FALLBACK_CENTER;\n          MAP.setCenter(center); MAP.setZoom(9);\n          await run(FALLBACK_CITY, FALLBACK_UF, center);\n        },\n        { enableHighAccuracy:false, timeout:5000, maximumAge:300000 }\n      );\n    }else{\n      setInputCity(FALLBACK_CITY);\n      center = FALLBACK_CENTER;\n      MAP.setCenter(center); MAP.setZoom(9);\n      await run(FALLBACK_CITY, FALLBACK_UF, center);\n    }\n\n    \/\/ Autocomplete Google (apenas cidades no Brasil)\n    const ac = new google.maps.places.Autocomplete(input, { types:['(cities)'], componentRestrictions:{country:'br'} });\n    ac.addListener('place_changed', async ()=>{\n      const place = ac.getPlace(); if(!place || !place.geometry) return;\n      const p = place.geometry.location; center = {lat:p.lat(), lng:p.lng()}; MAP.setCenter(center); MAP.setZoom(9);\n      const comp = place.address_components || [];\n      const city = (comp.find(c=>c.types.includes('administrative_area_level_2'))||comp.find(c=>c.types.includes('locality'))||{}).long_name || (place.name||'');\n      const uf = (comp.find(c=>c.types.includes('administrative_area_level_1'))||{}).short_name || '';\n      setInputCity(city);\n      await run(city, uf, center);\n    });\n\n    \/\/ Bot\u00e3o \"Procurar\" (geocode do texto do input)\n    btn.addEventListener('click', async ()=>{\n      const q = input.value.trim(); if(!q) return;\n      GEOCODER.geocode({address: `${q}, Brasil`}, async (r,st)=>{\n        if(st==='OK' && r && r[0]){\n          const loc=r[0].geometry.location; center = {lat:loc.lat(), lng:loc.lng()}; MAP.setCenter(center); MAP.setZoom(9);\n          const comp = r[0].address_components || [];\n          const city = (comp.find(c=>c.types.includes('administrative_area_level_2'))||comp.find(c=>c.types.includes('locality'))||{}).long_name || q;\n          const uf = (comp.find(c=>c.types.includes('administrative_area_level_1'))||{}).short_name || '';\n          setInputCity(city);\n          await run(city, uf, center);\n        }\n      });\n    });\n  };\n})();\n  <\/script>\n\n  <!-- Google Maps + Places em PT-BR \/ regi\u00e3o BR -->\n  <script async defer src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyDRqzi3pIkv9c5cZAUSXV948mySNZ1AQtM&language=pt-BR&region=BR&libraries=places\" onload=\"window.__pdvStart && window.__pdvStart()\"><\/script>\n<\/section>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Onde Encontrar Fale com o Consultor de Vendas mais pr\u00f3ximo de voc\u00ea Procurar Selecione sua cidade ou permita a localiza\u00e7\u00e3o autom\u00e1tica.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3410","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/santaclaraagro.com.br\/es\/wp-json\/wp\/v2\/pages\/3410"}],"collection":[{"href":"https:\/\/santaclaraagro.com.br\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/santaclaraagro.com.br\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/santaclaraagro.com.br\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/santaclaraagro.com.br\/es\/wp-json\/wp\/v2\/comments?post=3410"}],"version-history":[{"count":62,"href":"https:\/\/santaclaraagro.com.br\/es\/wp-json\/wp\/v2\/pages\/3410\/revisions"}],"predecessor-version":[{"id":3473,"href":"https:\/\/santaclaraagro.com.br\/es\/wp-json\/wp\/v2\/pages\/3410\/revisions\/3473"}],"wp:attachment":[{"href":"https:\/\/santaclaraagro.com.br\/es\/wp-json\/wp\/v2\/media?parent=3410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}