{"id":3192,"date":"2025-12-09T18:20:02","date_gmt":"2025-12-09T18:20:02","guid":{"rendered":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/?post_type=avada_portfolio&#038;p=3192"},"modified":"2025-12-11T17:39:49","modified_gmt":"2025-12-11T17:39:49","slug":"washington-county","status":"publish","type":"avada_portfolio","link":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/portfolio-items\/washington-county\/","title":{"rendered":"Washington County, OR"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--link_hover_color: #434549;--link_color: #141617;--awb-border-sizes-top:0px;--awb-border-sizes-bottom:0px;--awb-border-sizes-left:0px;--awb-border-sizes-right:0px;--awb-border-color:#fcf4ec;--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:19px;--awb-padding-right:30px;--awb-padding-bottom:0px;--awb-padding-left:30px;--awb-padding-top-small:60px;--awb-padding-bottom-small:60px;--awb-margin-top:-50px;--awb-margin-bottom:0px;--awb-background-color:#fcf4ec;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 1170px + 100px );margin-left: calc(-100px \/ 2 );margin-right: calc(-100px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-animated\" style=\"--awb-padding-right:58px;--awb-padding-left:55px;--awb-padding-right-small:2px;--awb-padding-left-small:0px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:0px;--awb-margin-bottom-large:16px;--awb-spacing-left-large:0px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:0px;--awb-spacing-left-medium:0px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:50px;--awb-margin-bottom-small:44px;--awb-spacing-left-small:50px;\" data-animationType=\"fadeInUp\" data-animationDuration=\"1.3\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div ><a class=\"fusion-button button-3d button-large button-custom fusion-button-default button-1 fusion-button-default-span \" style=\"--button_bevel_color:var(--awb-color5);--button_bevel_color_hover:var(--awb-custom_color_12);--button_accent_color:var(--awb-color2);--button_border_color:var(--awb-color2);--button_accent_hover_color:var(--awb-color1);--button_border_hover_color:var(--awb-color1);--button_gradient_top_color:var(--awb-custom_color_4);--button_gradient_bottom_color:var(--awb-custom_color_4);--button_gradient_top_color_hover:var(--awb-custom_color_6);--button_gradient_bottom_color_hover:var(--awb-custom_color_6);\" target=\"_self\" data-hover=\"text_slide_up\" href=\"#yelp\"><span class=\"fusion-button-icon-divider button-icon-divider-left\"><i class=\"fa-yelp fab awb-button__icon awb-button__icon--default\" aria-hidden=\"true\"><\/i><\/span><div class=\"awb-button-text-transition \"><span class=\"fusion-button-text awb-button__text awb-button__text--default fusion-button-text-left\">Local Yelp Search<\/span><span class=\"fusion-button-text awb-button__text awb-button__text--default fusion-button-text-left\">Local Yelp Search<\/span><\/div><\/a><\/div><div class=\"fusion-title title fusion-title-1 fusion-title-center fusion-title-text fusion-title-size-one\" style=\"--awb-text-color:#141617;--awb-margin-top:2px;--awb-margin-bottom:-50px;--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:-20px;--awb-margin-left-small:0px;--awb-sep-color:#fcf4ec;--awb-font-size:65px;\"><div class=\"title-sep-container title-sep-container-left\"><div class=\"title-sep sep- sep-solid\" style=\"border-color:#fcf4ec;\"><\/div><\/div><span class=\"awb-title-spacer\"><\/span><h1 class=\"fusion-title-heading title-heading-center\" style=\"font-family:&quot;Unna&quot;;font-style:normal;font-weight:400;margin:0;text-transform:var(--awb-typography1-text-transform);font-size:1em;line-height:1.2;\"><h2 class=\"fusion-title-heading title-heading-left fusion-live-editable fusion-responsive-typography-calculated medium-editor-element\" role=\"textbox\" contenteditable=\"true\" spellcheck=\"true\" data-inline-parent-cid=\"10\" data-inline-override-color=\"text_color\" data-inline-override-font-size=\"font_size\" data-inline-override-line-height=\"line_height\" data-inline-override-letter-spacing=\"letter_spacing\" data-inline-override-tag=\"size\" data-toolbar=\"full\" data-param=\"element_content\" data-fontsize=\"26\" data-lineheight=\"28.8667px\" data-medium-editor-element=\"true\" aria-multiline=\"true\" data-medium-editor-editor-index=\"1\" data-placeholder=\"Your Content Goes Here\" data-medium-focused=\"true\"><strong><b>Washington County, OR<\/b><\/strong><\/h2>\n<p>&nbsp;<\/p><\/h1><span class=\"awb-title-spacer\"><\/span><div class=\"title-sep-container title-sep-container-right\"><div class=\"title-sep sep- sep-solid\" style=\"border-color:#fcf4ec;\"><\/div><\/div><\/div><div class=\"fusion-text fusion-text-1 fusion-text-no-margin\" style=\"--awb-content-alignment:center;--awb-font-size:15px;--awb-line-height:24px;--awb-letter-spacing:0px;--awb-text-transform:var(--awb-typography4-text-transform);--awb-text-color:#141617;--awb-margin-right:0px;--awb-margin-bottom:0px;--awb-margin-left:0px;--awb-text-font-family:&quot;Montserrat&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><p style=\"text-align: left;\">Vibrant and diverse, this part of the Portland metro area is prized for its blend of urban convenience, scenic landscapes, and thriving community life. Residents benefit from excellent schools, abundant parks and trails, and a dynamic food and cultural scene dotted with caf\u00e9s, restaurants, and shops\u2014ideal for families and young professionals alike. With strong job opportunities in sectors like tech, manufacturing, and healthcare, it offers both career growth and stability. Though housing and living costs can run above national averages, the overall quality of life remains one of the highest in the region, with reliable public services, a reputation for safety, and a strong sense of community. With walkable neighborhoods, efficient transit systems, and easy access to both city life and outdoor escapes, it\u2019s a place where balanced, enriching living truly comes together.<\/p>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-animated\" style=\"--awb-padding-right:37px;--awb-padding-left:8px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:calc( 0.051 * calc( 100% - 100px ) );--awb-margin-bottom-large:80px;--awb-spacing-left-large:50px;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:calc( 0.153 * calc( 100% - 100px ) );--awb-spacing-left-medium:50px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:50px;--awb-margin-bottom-small:40px;--awb-spacing-left-small:50px;\" data-animationType=\"fadeInUp\" data-animationDuration=\"1.3\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-2\"><p><a href=\"https:\/\/www.cityofbanks.org\/\"><strong><b>Banks<\/b><\/strong><\/a><strong><b><br \/><\/b><\/strong>Bordered by rolling farmland and forested ridges just west of the Portland metro area, this small town offers a lifestyle deeply rooted in community, outdoor adventure, and regional accessibility. With access to a popular rail-trail ideal for biking, hiking, and horseback riding, it\u2019s perfect for those who love daily escapes into nature. The downtown features a handful of locally owned caf\u00e9s, breweries, and shops, giving it a welcoming, laid-back charm that fosters neighborly connection. Strong schools and a high rate of homeownership help create stability and attract families, while safety and affordable housing\u2014relative to nearby cities\u2014enhance its appeal. Though amenities within walking distance may be limited, reliable transit options and proximity to larger urban centers make commuting practical and enrich daily life.<br \/><strong><b><br \/><\/b><\/strong><a href=\"https:\/\/www.beavertonoregon.gov\/\"><strong><b>Beaverton<\/b><\/strong><\/a><strong><b><br \/><\/b><\/strong>With a diverse and welcoming community set against a backdrop of tree-lined streets and vibrant neighborhoods, this city offers a lifestyle filled with both comfort and innovation. Residents enjoy excellent schools, abundant parks and trails, and a growing food scene featuring global flavors, craft breweries, and cozy caf\u00e9s. Active events such as farmers markets, art walks, and cultural festivals foster strong connections and local pride. Well-connected by light rail, buses, and bike routes, it\u2019s easy to get around or commute to nearby urban hubs. Tech hubs and corporate offices nearby offer employment opportunities, while a variety of housing\u2014from charming older homes to modern apartments\u2014caters to families, professionals, and retirees alike. This place strikes a thoughtful balance between suburban ease and dynamic city living.<br \/><a href=\"https:\/\/www.corneliusor.gov\/\"><strong><em><b><i><br \/><\/i><\/b><\/em><\/strong><strong><b>Cornelius<\/b><\/strong><\/a><strong><b> <br \/><\/b><\/strong>Framed by rolling vineyards and lush farmland in Washington County\u2019s wine country, this small city offers a lifestyle rooted in agriculture, community, and scenic charm. Residents enjoy scenic trails and parks for walking, biking, and picnicking, all while embracing an agrarian spirit rich with community-supported farms, seasonal harvest events, and local markets. The downtown area is cozy and welcoming, with family-run caf\u00e9s, boutique shops, and friendly annual festivals that draw neighbors together. Excellent schools and a peaceful pace of life make it ideal for families and those seeking stability, while affordable housing relative to larger metro areas adds appeal. With quick access to nearby urban centers yet distinctly its own in character, it\u2019s a place where countryside tranquility and connected living come together beautifully.<strong><b><\/p>\n<p><\/b><\/strong><a href=\"https:\/\/durham-oregon.us\/\"><strong><b>Durham<\/b><\/strong><\/a><strong><b><br \/><\/b><\/strong>Set amid pastoral landscapes and nestled between urban hubs, this small city offers a serene lifestyle grounded in green space, local agriculture, and strong neighborhood ties. Residents benefit from spacious parks, community gardens, and scenic walking or biking paths\u2014perfect for daily outdoor time or quiet contemplation. Its tight-knit feel is complemented by shared events like farm-to-table dinners, harvest celebrations, and seasonal gatherings that foster connection. With access to nearby markets, schools, and amenities in adjacent towns, daily necessities are within reach, while freeway and transit links make commuting straightforward. Secure, peaceful, and community-oriented, it appeals especially to families, nature lovers, and anyone seeking a thoughtfully peaceful yet connected way of life.<\/p>\n<p><a href=\"https:\/\/www.forestgrove-or.gov\/\"><strong><b>Forest Grove<\/b><\/strong><\/a><strong><b><br \/><\/b><\/strong>Surrounded by scenic vineyards, rolling hills, and a strong sense of heritage, this college town offers a lifestyle that blends intellectual energy, community warmth, and access to nature. Residents enjoy exploring local trails and parks, browsing unique shops and caf\u00e9s downtown, or attending lectures, art exhibits, and performances at the university. Farm-to-table dining, seasonal markets, and winery tours reflect the area\u2019s agricultural roots while bolstering a vibrant food scene. Quality schools, affordable housing options, and neighborhood-focused events like street fairs and outdoor concerts make it a welcoming spot for families, students, professionals, and retirees alike. With a pace that feels both thoughtful and lively, it\u2019s a place where learning, leisure, and connection harmonize beautifully.<strong><b><\/p>\n<p><\/b><\/strong><a href=\"https:\/\/www.cityofgaston.com\/\"><strong><b>Gaston<\/b><\/strong><\/a><strong><b><br \/><\/b><\/strong>Tucked away amidst lush forests and fertile farmland, this quiet town offers a lifestyle that values tranquility, natural beauty, and strong community bonds. Residents regularly explore nearby rivers, trails, and wooded areas\u2014ideal for hiking, bird watching, or picnicking in peaceful surroundings. The small but amiable downtown area includes a few local caf\u00e9s, shops, and community spaces where seasonal events and neighborly gatherings foster a warm, supportive atmosphere. With affordable housing, a slower pace of life, and proximity to larger regional centers for shopping and services, it\u2019s particularly appealing to families, retirees, and nature lovers looking for balance, connection, and a sense of peaceful rootedness.<br \/><a href=\"https:\/\/www.hillsboro-oregon.gov\/\"><strong><em><b><i><br \/><\/i><\/b><\/em><\/strong><strong><b>Hillsboro<\/b><\/strong><\/a><strong><b><br \/><\/b><\/strong>Anchored in the heart of a thriving tech corridor yet offering suburban ease and green space, this city presents a comfortable and forward-looking lifestyle. Community members enjoy extensive parks, trails, and public gardens, making outdoor activity\u2014from biking to picnicking\u2014a daily delight. A lively downtown filled with caf\u00e9s, breweries, and local markets hosts frequent events like concerts, art walks, and farmers markets that foster a strong sense of connection. High-quality schools, a variety of housing options, and a reputation for safety make it a popular choice for families and professionals alike. With light rail, commuter bus service, and easy freeway access, residents find commuting to nearby urban centers seamless. It\u2019s a place where innovation, nature, and community converge in balanced, inviting ways.<\/p>\n<p><a href=\"https:\/\/www.ci.king-city.or.us\"><strong><b>King City<\/b><\/strong><\/a><br \/>Nestled in a peaceful corner of Washington County\u2019s wine country, this small city offers a relaxed and neighborly lifestyle rich in agricultural charm and natural beauty. Residents enjoy scenic walking and biking paths, community gardens, and local parks that make daily outdoor activity effortless. The tight-knit downtown features family-owned caf\u00e9s, artisan shops, and occasional community gatherings like harvest festivals and potluck dinners that foster warmth and belonging. With excellent schools, affordable housing compared to nearby urban centers, and easy access to regional parks and farmland, it\u2019s especially appealing for families, retirees, and those craving both openness and community spirit. Calm, connected, and genuinely welcoming, it\u2019s a place where simplicity and local pride intertwine.<\/p>\n<p><a href=\"https:\/\/www.northplains.org\"><strong><b>North Plains<\/b><\/strong><\/a><strong><b> <br \/><\/b><\/strong>Bordered by rolling farmland and forested trails just outside the Portland metro area, this small town offers a lifestyle rooted in rural calm, outdoor discovery, and close community ties. Residents enjoy easy access to scenic rail\u2011trails perfect for biking, walking, and horseback riding, along with local parks that invite picnics, garden days, or quiet reflection. The quaint town core hosts a handful of locally owned caf\u00e9s and shops, and community events\u2014like seasonal markets, potlucks, and volunteer gatherings\u2014encourage neighborly connection. With reputable schools, abundant green space, and exceptionally affordable housing, it\u2019s a magnet for families, retirees, and nature lovers looking for both peace and practical access to nearby urban centers.<strong><b><br \/><\/b><\/strong><br \/><a href=\"https:\/\/www.sherwoodoregon.gov\/\"><strong><b>Sherwood<\/b><\/strong><\/a><strong><b><br \/><\/b><\/strong>Framed by lush vineyards and tree-lined neighborhoods, this city offers a lifestyle that masterfully blends suburban comfort, historic charm, and community vitality. Residents enjoy access to sprawling parks, scenic trails beside the Tualatin River, and reserved open spaces ideal for walking, biking, or family picnics. A walkable downtown captures the town\u2019s heritage with boutique shops, cozy caf\u00e9s, and local festivals\u2014especially the annual renaissance-themed celebration\u2014that foster neighborly connection. Excellent schools, safe neighborhoods, and varied housing options\u2014from timeless Craftsman homes to modern developments\u2014make it ideal for families, commuters, and retirees alike. With nearby regional parks, access to urban amenities, and a warm small-town feel, it\u2019s a place where tradition, nature, and community come together beautifully.<strong><b><br \/><\/b><\/strong><a href=\"https:\/\/www.tigard-or.gov\/\"><strong><em><b><i><br \/><\/i><\/b><\/em><\/strong><strong><b>Tigard<\/b><\/strong><\/a><strong><b> <br \/><\/b><\/strong>Offering the best of suburban life with surprising access to urban amenities, this city provides residents with a lifestyle that is both comfortable and connected. A network of parks, trails, and natural areas\u2014including riverside paths and tree-lined green spaces\u2014encourages daily outdoor activity like biking, walking, or family outings. The downtown and nearby hubs feature diverse caf\u00e9s, breweries, shops, and a lively farmers market that bring community spirit to life. Excellent schools, homeowner-friendly neighborhoods, and a variety of housing styles\u2014from cozy bungalows to newly built townhomes\u2014cater to families, professionals, and retirees. With efficient light rail, bus lines, and easy freeway links into Portland, commuting is smooth, making it an ideal base for those seeking both accessibility and peaceful local living.<br \/><strong><b><br \/><\/b><\/strong><a href=\"https:\/\/www.tualatinoregon.gov\/\"><strong><b>Tualatin<\/b><\/strong><\/a><strong><b> <br \/><\/b><\/strong>Framed by the convergence of natural beauty and suburban convenience, this city offers a lifestyle where outdoor leisure and community vibrancy go hand in hand. Locals enjoy expansive parks and scenic riverside trails perfect for walking, biking, kayaking, or simply relaxing by the water\u2019s edge. The bustling town center features a mix of caf\u00e9s, shops, restaurants, and seasonal farmers markets that foster connection and local spirit. With top-rated schools, various housing options catering to young families and empty-nesters alike, and a calendar full of community activities like festivals and outdoor concerts, everyday life feels both engaging and relaxed. Efficient transit access, including light rail, buses, and easy highway connections to neighboring cities, makes commuting effortless while preserving the calm pace of suburban living.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div id=\"yelp\" class=\"fusion-container-anchor\"><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:26px;--awb-flex-wrap:wrap;--awb-flex-wrap-small:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1216.8px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-2 fusion-title-center fusion-title-text fusion-title-size-one\" style=\"--awb-text-color:var(--awb-custom_color_4);--awb-margin-bottom:-10px;--awb-margin-top-small:0px;--awb-margin-right-small:0px;--awb-margin-bottom-small:20px;--awb-margin-left-small:0px;\"><div class=\"title-sep-container title-sep-container-left\"><div class=\"title-sep sep- sep-solid\" style=\"border-color:var(--awb-color3);\"><\/div><\/div><span class=\"awb-title-spacer\"><\/span><h1 class=\"fusion-title-heading title-heading-center\" style=\"margin:0;\"><h1 style=\"text-align: center;\">Local Activities &amp; Information<\/h1><\/h1><span class=\"awb-title-spacer\"><\/span><div class=\"title-sep-container title-sep-container-right\"><div class=\"title-sep sep- sep-solid\" style=\"border-color:var(--awb-color3);\"><\/div><\/div><\/div><div class=\"fusion-text fusion-text-3\"><p style=\"text-align: center;\"><span style=\"color: var(--awb-custom_color_5);\">Use the search box below to find listings on anything from Restaurants and Coffee Shops, to Grocery Stores, Schools and much more.<br \/>\nThe <\/span><b style=\"color: var(--awb-custom_color_5);\">More<\/b><span style=\"color: var(--awb-custom_color_5);\"> menu will give you some options as well. <\/span><\/p>\n<\/div><!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Yelp Store Locator<\/title>\n<style>\nbody {\n    font-family: Arial, sans-serif;\n    margin: 0;\n    padding: 0;\n    background: #f8f8f8; \/* Slight grey background *\/\n}\n\n\/* Flex container for the whole page content *\/\n.form-wrapper {\n    display: flex;\n    justify-content: space-around; \/* Evenly distribute space around items *\/\n    flex-wrap: wrap; \/* Allow items to wrap if not enough space *\/\n    margin: 20px;\n}\n\n\/* Search form and results container *\/\n.form-wrapper .form-container {\n    flex-basis: 47%;\n    margin-bottom: 20px;\n}\n\n\/* Search bar at the top *\/\n.search-top {\n    margin-top: 20px;\n}\n.search-bar {\n    max-width: 1024px;\n    padding:0 20px;\n    padding: 10px;\n    border-radius: 4px;\n    margin: 0 auto 20px;\n}\n.search-bar #searchForm {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    box-shadow: rgba(0,0,0,0.15) 0px 2px 18px 0px;\n}\n.search-field {\n    flex: 1;\n}\n.search-field.desc {\n    position: relative;\n}\n.search-field.desc::after {\n    content: '';\n    position: absolute;\n    top: 10px;\n    bottom: 10px;\n    right: 0;\n    width: 2px;\n    background-color: rgba(0, 0, 0, 0.2);\n}\n#searchForm .search-field input {\n    border: 0;\n  \n}\n.search-field.category-dropdown select {\n    width: auto;\n    background: transparent;\n    margin-top:15px;\n}\n.search-field input[type=\"text\"],\n.search-field select {\n    width: 100%; \/* Full width of parent *\/\n    padding: 15px 10px;\n    border: 1px solid #ddd;\n    font-size: 14px;\n    box-sizing: border-box;\n}\n\n\/* Search button styling *\/\n.search-button button {\n    padding: 17px 20px;\n    background-color: #ff0000; \/* Yelp red *\/\n    color: #fff;\n    border: none;\n    border-radius: 4px;\n    cursor: pointer;\n    text-transform: uppercase;\n    font-weight: bold;\n}\n\n\/* Style the pagination buttons *\/\n.pagination{\n    border-top: 1px solid #e3d8d8;\n    padding: 15px 0;\n    margin-top: 20px;\n    border-bottom: 1px solid #e3d8d8;\n}\n\n\n.pagination button {\n    background: none;\n    padding: 5px 10px;\n    border-radius: 4px;\n    margin-right: 5px;\n    border: none;\n    cursor: pointer;\n    font-size: 16px;\n}\n\n.pagination button.active,\n.pagination button:hover {\n    font-weight: bold;\n}\n\n\/* Map container styling *\/\n#map {\n    flex: 1;\n    height: 700px; \/* Adjusted height for consistency *\/\n    border-radius: 4px; \/* Rounded corners *\/\n    overflow: hidden; \/* Clip the content *\/\n    margin-left: 20px; \/* Space from the form container *\/\n}\n\n\/* Search results card styles *\/\n.card {\n    display: flex;\n    background: #fff;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n    border-radius: 4px;\n    overflow: hidden;\n    align-items: center;\n    padding: 0 15px;\n    border-bottom: 1px solid #eee;\n}\n\n.card img {\n    width: 200px; \/* Slightly smaller images *\/\n    height: 200px;\n    object-fit: cover;\n}\n\n.card-content {\n    padding: 15px;\n    flex-grow: 1;\n}\n\n\/* Loader style adjustments *\/\n#loader {\n    display: none; \/* Hide by default, show when loading *\/\n    position: fixed; \/* Or absolute, depending on use-case *\/\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    text-align: center;\n}\n\n#loader img {\n    width: 50px; \/* Adjust as needed *\/\n    height: 50px; \/* Adjust as needed *\/\n    \/* Animation for spinning *\/\n    animation: spin 1s linear infinite;\n}\n\n\/* Loader animation *\/\n@keyframes spin {\n    0% { transform: translate(-50%, -50%) rotate(0deg); }\n    100% { transform: translate(-50%, -50%) rotate(360deg); }\n}\n\n@media (max-width: 768px) {\n    .form-wrapper {\n        flex-direction: column; \/* Stack on smaller screens *\/\n    }\n\n    .form-container,\n    #map {\n        width: 100%;\n        max-width: none;\n        margin-left: 0; \/* Remove margin for full width *\/\n    }\n\n    #map {\n        order: -1; \/* Map comes before search results on small screens *\/\n    }\n}\n\n\/* Add responsive design for very small screens *\/\n@media (max-width: 480px) {\n    .search-bar {\n        flex-direction: column; \/* Stack form fields vertically *\/\n    }\n\n    .search-field,\n    .search-button button {\n        width: 100%; \/* Full width for small screens *\/\n        margin: 5px 0; \/* Add space between stacked items *\/\n    }\n}\n\n\/* Style the dropdown button *\/\n.dropbtn {\n    background-color: transparent;\n    color: black;\n    padding: 16px;\n    font-size: 16px;\n    border: none;\n    cursor: pointer;\n}\n\n\/* The container <div> - needed to position the dropdown content *\/\n.dropdown {\n    position: relative;\n    display: inline-block;\n    margin: 10px 0;\n}\n\n\/* Dropdown Content (Hidden by Default) *\/\n.dropdown-content {\n    display: none;\n    position: absolute;\n    background-color: #f9f9f9;\n    min-width: 240px;\n    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n    z-index: 1;\n    gap: 20px;\n    padding: 0 10px;\n}\n\n\/* Links inside the dropdown *\/\n.dropdown-content span {\n    color: black;\n    padding: 16px 0;\n    text-decoration: none;\n    display: flex;\n    align-items: center;\n    cursor: pointer;\n}\n\n.dropdown-content .flex-links{\n        padding: 12px 0\n}\n\n\/* Icon styling *\/\n.icon {\n    margin-right: 10px;\n    \/* You can use SVGs or Font Icons like FontAwesome, or background-image with sprites *\/\n}\n\n\/* Change color of dropdown links on hover *\/\n.dropdown-content span:hover {background-color: #ddd;}\n\n\/* Show the dropdown menu on hover *\/\n.dropdown:hover .dropdown-content {\n    \/* display: block; *\/\n    display: flex;\n}\n\n\/* Show the dropdown menu on focus *\/\n.dropdown:focus-within .dropdown-content {\n    display: block;\n}\n\n\/* Other styles for icons can be added here, using the specific class names *\/\n.dry-cleaning-icon {\n    \/* Add background-image or other styling for the dry cleaning icon *\/\n}\n\n.pagination, #loader {\n    display: none; \/* Hidden by default *\/\n}\n\n.autocomplete-results {\n    display: none;\n    position: absolute;\n    background: white;\n    border: 1px solid #ddd;\n    border-top: none;\n    z-index: 2;\n    width: 100%;\n    box-sizing: border-box;\n}\n\n.autocomplete-suggestion {\n    padding: 10px;\n    border-bottom: 1px solid #ddd;\n    cursor: pointer;\n}\n\n.autocomplete-suggestion:last-child {\n    border-bottom: none;\n}\n\n.autocomplete-suggestion:hover {\n    background-color: #f8f8f8;\n}\n\n\n\/* Similarly add specific icon styles for other menu items *\/\n<\/style>\n<\/head>\n<body>\n<div class=\"search-top\">\n    <div class=\"search-bar\">\n        <form id=\"searchForm\" action=\"\/yelp-store-locator\" method=\"get\">\n            <div class=\"search-field desc\">\n                <input type=\"text\" id=\"searchDescription\" name=\"searchDescription\" placeholder=\"Search description\">\n                <div id=\"autocomplete-results\" class=\"autocomplete-results\"><\/div>\n            <\/div>\n            \n            <div class=\"search-field location\">\n                <input type=\"text\" id=\"locationQuery\" name=\"location\" placeholder=\"Enter search location\" value=\"Washington County, OR\" required>\n            <\/div>\n            <div class=\"search-button\">\n                <button type=\"submit\">Search<\/button>\n            <\/div>\n        <\/form>\n\n        <div class=\"dropdown\">\n            <span class=\"dropbtn\">More \u25bc<\/span>\n            <div class=\"dropdown-content\">\n                <div class=\"flex-links\">\n                    <span>\n                        <i class=\"icon dry-cleaning-icon\"><\/i> Restaurants\n                    <\/span>\n                    <span>\n                        <i class=\"icon hair-salons-icon\"><\/i> Coffee Shops\n                    <\/span>\n                    <span>\n                        <i class=\"icon phone-repair-icon\"><\/i> Grocery Stores\n                    <\/span>\n                    <span>\n                        <i class=\"icon phone-repair-icon\"><\/i> Nightlife\n                    <\/span>\n                <\/div>\n                <div class=\"flex-links\">\n                    <span>\n                        <i class=\"icon phone-repair-icon\"><\/i> Medical\n                    <\/span>\n                    <span>\n                        <i class=\"icon phone-repair-icon\"><\/i> Activities\n                    <\/span>\n                    <span>\n                        <i class=\"icon phone-repair-icon\"><\/i> Schools\n                    <\/span>\n                    <span>\n                        <i class=\"icon phone-repair-icon\"><\/i> Hair Salon\n                    <\/span>\n                <\/div>\n                <!-- Add other menu items here -->\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div class=\"form-wrapper\">\n    <div class=\"form-container\">\n        <div id=\"searchResults\"><\/div>\n        <div class=\"pagination\"><\/div>\n    <\/div>\n    <!-- Map Container -->\n    <div id=\"map\"><\/div>\n<\/div>\n\n<!-- Loader HTML -->\n<!-- <div id=\"loader\">Loading...<\/div> -->\n<div id=\"loader\">\n    <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-orig-src=\"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-content\/plugins\/yelp-store-locator\/assets\/images\/loader.png\" alt=\"Loading...\" \/>\n<\/div>\n\n\n<script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"><\/script>\n<script>\n    $(document).ready(function () {\n        var yelpAutocompleteUrl = \"https:\/\/api.yelp.com\/v3\/autocomplete\";\n\n        $('#searchDescription').on('input', function() {\n            var searchText = $(this).val();\n        \n            \/\/ Make sure the search text is not empty\n            if (searchText.length > 0) {\n                $.ajax({\n                    url: '\/wp-content\/plugins\/yelp-store-locator\/proxy\/yelp-autocomplete-proxy.php',\n                    method: 'GET',\n                    data: {\n                        text: searchText \/\/ text entered by the user\n                    },\n                    success: function(data) {\n                        \/\/ Clear previous suggestions\n                        $('#autocomplete-results').empty();\n                        \n                        \/\/ Process the response and append suggestions\n                        if(data.terms && data.terms.length > 0) {\n                            data.terms.forEach(function(term) {\n                                $('#autocomplete-results').append('<div class=\"autocomplete-suggestion\">' + term.text + '<\/div>');\n                            });\n                            $('#autocomplete-results').show();\n                        }\n                    },\n                    error: function(jqXHR, textStatus, errorThrown) {\n                        console.error(\"Error with Autocomplete API:\", textStatus, errorThrown);\n                    }\n                });\n            } else {\n                \/\/ If the search text is empty, clear and hide suggestions\n                $('#autocomplete-results').empty().hide();\n            }\n        });\n\n        \/\/ Listener for clicking on an autocomplete suggestion\n        $('#autocomplete-results').on('click', '.autocomplete-suggestion', function() {\n            \/\/ Set the input to the clicked suggestion and hide suggestions\n            $('#searchDescription').val($(this).text());\n            $('#autocomplete-results').empty().hide();\n        });\n    \n        \/\/ Initially hide pagination and loader\n        $('.pagination').hide();\n        $('#loader').hide();\n\n        var map; \/\/ Declare map variable globally\n        var markers = []; \/\/ Array to store markers\n        var currentPage = 1;\n        var resultsPerPage = 5;\n        var totalResults = 0;\n\n        \/\/ Event handler for category selection\n        $('.dropdown-content span').on('click', function() {\n            \/\/ Get the text of the clicked category\n            var categoryText = $(this).text().trim();\n\n            \/\/ Set the value of the searchDescription input\n            $('#searchDescription').val(categoryText);\n\n            \/\/ Close the dropdown if needed\n            $('.dropdown-content').hide();\n\n            \/\/ Optionally, you could submit the form automatically after selection\n            \/\/ $('#searchForm').submit();\n        });\n\n        \/\/ Toggle dropdown content on click\n        $('.dropbtn').on('click', function() {\n            \/\/ Use slideToggle for a simple animation\n            $('.dropdown-content').slideToggle();\n        });\n\n        \/\/ Close the dropdown if clicked outside\n        $(document).on('click', function(e) {\n            if (!$(e.target).closest('.dropdown').length) {\n                $('.dropdown-content').hide();\n            }\n        });\n\n        \/\/ Populate search description initially\n        $('#searchDescription').val($('#category').find('option:selected').text());\n\n        \/\/ Update search description when category changes\n        $('#category').change(function() {\n            $('#searchDescription').val($(this).find('option:selected').text());\n        });\n\n        \/\/ Check if the location is provided and trigger search\n        if ($('#locationQuery').val() !== '') {\n            setTimeout(function() {\n                $('#searchForm').submit();\n            }, 500);\n        }\n\n        $('#searchForm').submit(function (event) {\n            event.preventDefault();\n            $('#loader').show(); \/\/ Show loader here when the search starts\n            $('.pagination').hide(); \/\/ Hide pagination during loading\n\n            var locationQuery = $('#locationQuery').val();\n            \/\/ Use the value from the search description input\n            var searchDescription = $('#searchDescription').val();\n            var apiUrl = 'https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-content\/plugins\/yelp-store-locator\/proxy\/proxy.php?location=' + encodeURIComponent(locationQuery) + '&term=' + encodeURIComponent(searchDescription);\n\n            \/\/ Hide search results and map\n            $('#searchResults').hide();\n            $('#map').hide();\n            \/\/ Show loader before making the API request\n            $('#loader').show();\n\n            fetch(apiUrl)\n            .then(response => {\n                if (!response.ok) {\n                    throw new Error('Network response was not ok');\n                }\n                return response.json(); \/\/ Parse JSON response\n            })\n            .then(data => {\n                if (data && data.businesses && data.businesses.length > 0) {\n                    $('.pagination').show();\n                } else {\n                    $('.pagination').hide();\n                }\n                $('#loader').hide(); \/\/ Hide loader after data is processed\n                \/\/ ...Display results...\n                totalResults = data.businesses.length;\n\n                \/\/ Clear previous search results\n                $('#searchResults').empty();\n\n                \/\/ Initialize map\n                map = new google.maps.Map(document.getElementById('map'), {\n                    center: { lat: 0, lng: 0 }, \/\/ Default center\n                    zoom: 12 \/\/ Default zoom level\n                });\n\n                \/\/ Clear previous markers\n                markers.forEach(marker => marker.setMap(null));\n                markers = [];\n\n                \/\/ Create a LatLngBounds object to encompass all markers\n                var bounds = new google.maps.LatLngBounds();\n\n                \/\/ Calculate pagination values\n                var startIndex = (currentPage - 1) * resultsPerPage;\n                var endIndex = startIndex + resultsPerPage;\n                endIndex = endIndex > totalResults ? totalResults : endIndex;\n\n                \/\/ Iterate over each business in the response data for the current page\n                for (var i = startIndex; i < endIndex; i++) {\n                    var business = data.businesses[i];\n\n                    \/\/ Create card element to display business information\n                    var cardHtml = '<div class=\"card\">';\n                    cardHtml += '<img class=\"lazyload\" decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-orig-src=\"' + business.image_url + '\" alt=\"' + business.name + '\">';\n                    cardHtml += '<div class=\"card-content\">';\n                    cardHtml += '<h3><a href=\"' + business.url + '\">' + business.name + '<\/a><\/h3>';\n                    cardHtml += '<p><strong>Rating:<\/strong> ' + business.rating + '<\/p>';\n                    cardHtml += '<p><strong>Review Count:<\/strong> ' + business.review_count + '<\/p>';\n                    if (business.categories.length > 0) {\n                        cardHtml += '<p><strong>Category:<\/strong> ' + business.categories[0].title + '<\/p>';\n                    }\n                    cardHtml += '<p><strong>Address:<\/strong> ' + business.location.address1 + ', ' + business.location.city + ', ' + business.location.state + ' ' + business.location.zip_code + '<\/p>';\n                    cardHtml += '<p><strong>Phone:<\/strong> ' + business.display_phone + '<\/p>';\n                    cardHtml += '<\/div><\/div>';\n\n                    \/\/ Append the card HTML to the searchResults div\n                    $('#searchResults').append(cardHtml);\n\n                    \/\/ Display coordinates if available\n                    if (business.coordinates) {\n                        \/\/ Add marker to the map for each business\n                        var marker = new google.maps.Marker({\n                            position: { lat: business.coordinates.latitude, lng: business.coordinates.longitude },\n                            map: map,\n                            title: business.name\n                        });\n\n                        markers.push(marker);\n\n                        \/\/ Extend the bounds to include the marker's position\n                        bounds.extend(marker.getPosition());\n                    }\n                }\n\n                \/\/ Adjust map bounds to fit all markers\n                map.fitBounds(bounds);\n\n                \/\/ Hide loader after request is completed\n                $('#loader').hide();\n                \/\/ Show search results and map\n                $('#searchResults').show();\n                $('#map').show();\n\n                \/\/ Generate pagination controls\n                generatePaginationControls();\n            })\n            .catch(error => {\n                console.error('There was a problem with the fetch operation:', error);\n\n                $('#loader').hide(); \/\/ Ensure to hide loader on error as well\n                $('.pagination').hide(); \/\/ Hide pagination if there's an error\n                \/\/ Show search results and map\n                $('#searchResults').show();\n                $('#map').show();\n            });\n        });\n\n        \/\/ Function to generate pagination controls\n        function generatePaginationControls() {\n            var totalPages = Math.ceil(totalResults \/ resultsPerPage);\n            $('.pagination').empty();\n\n            for (var i = 1; i <= totalPages; i++) {\n                var button = $('<button>').text(i);\n                if (i === currentPage) {\n                    button.addClass('active');\n                }\n                button.click(function() {\n                    currentPage = parseInt($(this).text());\n                    $('#searchForm').submit();\n                });\n                $('.pagination').append(button);\n            }\n        }\n    });\n<\/script>\n\n<!-- Include Google Maps JavaScript API with your API key -->\n<script async defer src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyDdc1Kke8as6XyfJRAv1veZfIqxp-ioDMo&callback=initMap\"><\/script>\n\n<\/body>\n<\/html>\n<\/div><\/div><\/div><\/div><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":3285,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"portfolio_category":[45],"portfolio_skills":[],"portfolio_tags":[],"class_list":["post-3192","avada_portfolio","type-avada_portfolio","status-publish","format-standard","has-post-thumbnail","hentry","portfolio_category-pa-counties"],"_links":{"self":[{"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/avada_portfolio\/3192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/avada_portfolio"}],"about":[{"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/types\/avada_portfolio"}],"author":[{"embeddable":true,"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/comments?post=3192"}],"version-history":[{"count":4,"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/avada_portfolio\/3192\/revisions"}],"predecessor-version":[{"id":3246,"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/avada_portfolio\/3192\/revisions\/3246"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/media\/3285"}],"wp:attachment":[{"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/media?parent=3192"}],"wp:term":[{"taxonomy":"portfolio_category","embeddable":true,"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/portfolio_category?post=3192"},{"taxonomy":"portfolio_skills","embeddable":true,"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/portfolio_skills?post=3192"},{"taxonomy":"portfolio_tags","embeddable":true,"href":"https:\/\/sunraycityguide.com\/PortlandOR-Windermere\/wp-json\/wp\/v2\/portfolio_tags?post=3192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}