0 comments on “SLP Style System”

SLP Style System

The Style selector interface in the SLP SaaS platform as of October 2026.

About The System

The SLP Style system provides a mechanism for delivering CSS styling combined with pre-define Store Locator Plus® settings to users of the Store Locator Plus® application.

The User Experience

The process begins with a user selecting the Style menu entry in the application which renders the “Style Manager” interface.
This interface is primarily a React panel component running inside a WordPress framework.

The panel renders a stack of “Style Cards” on the left side of the panel.

The style cards stack.

A preview paper on the right side shows what the user’s deployment of the Store Locator Plus® JavaScript embed will look like as a map view based on the currently selected style.

The store-locator-plus plugin issues an API call to fetch the data from the Style Gallery Server to render the Style Card stack.

fetch("https://storelocatorplus.com/wp-json/wp/v2/slp_style_gallery/?orderby=modified&order=desc&per_page=100&_fields=id,slug,title,modified,featured_media,content,yoast_head_json.og_image", {
    "cache": "default",
    "credentials": "omit",
    "headers": {
        "Accept": "application/json, text/plain, */*",
        "Accept-Language": "en-US,en;q=0.9",
        "Priority": "u=3, i",
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6.2 Safari/605.1.15"
    },
    "method": "GET",
    "mode": "cors",
    "redirect": "follow",
    "referrer": "https://local.storelocatorplus.com/",
    "referrerPolicy": "strict-origin-when-cross-origin"
})

Activating A Style

When the user clicks the Activate button on the style card, the store-locator-plus plugin goes about updating the internal settings of the Store Locator Plus® application for the user.

It will read the data about the style that was sent from the Style Server and update each of the settings that has been referenced in that data. This works as if the user manually went to the settings page in the Store Locator Plus® application, changed, then saved the settings to match what was sent by the server.

The CSS is saved in the active_style_css setting of Store Locator Plus®.
This is deployed to the SLP presentation on the customer site via \SLP_UI::assign_user_stylesheet in the store-locator-plus plugin.

Serving Up The Style Cards

As of October 16th, 2026

The style cards data is pulled from the main Store Locator Plus® website which hosts the Style Server.

The Style Server presents an API endpoint that the Store Locator Plus® (store-locator-plus) plugin uses to fetch the latest list of styles.

The Style Server is provided via the Style Gallery plugin (labelled Store Locator Plus® Premier Service on an outdated version (git commit a0c9e15e261507f2df2af6b274a074f783fd9330 that is deployed on production). The repo is style-gallery-service.

When the fetch is received a standard WordPress REST API returns the “Locator Style” post type results. You can see an example in the Reference Data section below.

The Style Gallery Post Type

The primary mechanism for storing the CSS and settings data is via a WordPress custom post type.
The post type is registered with the slug ‘slp_style_gallery’ in WordPress.

Editing a style on the SLP Style Server. It is a custom WordPress post type.

Style Card Content

The main content of the post type is used to generate the HTML output that shows up on the card. This is the text description, images, and other elements that appear on the Style Card as part of the main description area. The featured image of the post is the image that appears in the Style Card as a decorative element only.

Style Settings and CSS

The functional data is entirely stored in the custom fields attached to the slp_style_gallery posts.

The name of the fields match the settings slugs in the Store Locator Plus options in the main plugin and all the add ons such as slp-power, slp-experience, slp-premier, and myslp-dashboard. Any setting that is possible via the customer dashboard on the Store Locator Plus plugin can be set in these meta fields. Some examples include:

  • address_placeholder = Enter a zip code or adddress.
  • label_phone = Phone
  • layout = <div id=”sl_div”>[slp_search][slp_map][slp_results]</div>

There are dozens, likely over 100, different settings that can be managed this way.

The primary style driver uses the custom meta field name ‘css’.
In this field a minified version of the CSS is stored.
This is applied and sent to deployed customer maps as inline CSS managed by the store-locator-plus plugin.

Building Styles

As of October 16th, 2026 the building of custom Locator Styles to add to the gallery is mostly a manual process.

The style-gallery-service repository is mostly used as a version history store of the manual work and settings to ensure we have a historical copy of the custom locator styles. The code part of the style-gallery-service is, at the moment, mostly unchanged and not deployed to the production Style Server. It can be in the future but for now it is relegated to the 2-year-old commit ID noted above.

Style Assets

The styles are now being tracked in subdirectories in the style-gallery-service plugin.
This is used primarily to use the PhpStorm IDE to help compile the Sass (SCSS) files into minified CSS that is then manually added to a Locator Style post on the main Store Locator Plus site hosting the styles.

The assets directory paths:

  • wp-content/plugins/style-gallery-service/assets
    • saas – where referenced shared SCSS items live
    • styles – subdirectores representing each names style live here
      • settings.json – a JSON representation of the settings for custom fields other than the CSS field
      • stylesheet.scss – the pre-compiled main Sass file from which the minified CSS is derived
        • stylesheet.min.css – the minified CSS that ends up in the ‘css’ Custom Field
The holding place for building Locator Style assets.

The Process For Creating A Locator Style

Start by creating a new directory in the style-gallery-service assets/styles directory, such as “Directory”.

Create the settings.json to keep track of what settings we want to change from the default.

An example settings.json:

{
  "CustomFields": {
    "address_placeholder": "Enter address or zip code.",
    "bubblelayout": "<div id=\"slp_info_bubble_[slp_location id]\" class=\"slp_info_bubble [slp_location featured]\">\n    <span id=\"slp_bubble_name\"><strong>[slp_location name]</strong></span>\n    <span id=\"slp_bubble_address\">[slp_location address]</span>\n    <span id=\"slp_bubble_address2\">[slp_location address2]</span>\n    <span class=\"slp_bubble_address_line\"><span id=\"slp_bubble_city\">[slp_location city suffix comma]</span> <span id=\"slp_bubble_state\">[slp_location state]</span> <span id=\"slp_bubble_zip\">[slp_location zip]</span><span id=\"slp_bubble_country\">[slp_location country]</span></span>\n    <span class=\"slp_bubble_online_info\">\n        <span id=\"slp_bubble_website\">[slp_location web_link]</span>\n        <span id=\"slp_bubble_email\">[slp_location email wrap mailto][slp_option label_email ifset email][html closing_anchor ifset email]</span>\n        <span id=\"slp_bubble_directions\">[slp_option label_directions wrap directions]</span>\n    </span>\n    <span class=\"slp_bubble_contact_info\">\n        <span id=\"slp_bubble_phone\"><span class=\"location_detail_label\">[slp_option label_phone ifset phone]</span>[slp_location phone]</span>\n        <span id=\"slp_bubble_fax\"><span class=\"location_detail_label\">[slp_option label_fax ifset fax]</span>[slp_location fax]</span>\n    </span>\n    <span id=\"slp_bubble_description\">[slp_location description raw]</span>\n    <span id=\"slp_bubble_hours\">\n        <span class=\"location_detail_label\">[slp_option label_hours ifset hours]</span>\n        <span class=\"location_detail_hours\">[slp_location hours]</span>\n    </span>\n    <span id=\"slp_bubble_img\">[slp_location image wrap img]</span>\n    <span id=\"slp_tags\">[slp_location tags]</span>\n</div>",
    "country_selector": "dropdown_discretefilter",
    "dropdown_style": "none",
    "google_map_style": "[\r\n    {\r\n        \"featureType\": \"poi\",\r\n        \"elementType\": \"all\",\r\n        \"stylers\": [\r\n            {\r\n                \"visibility\": \"off\"\r\n            }\r\n        ]\r\n    }\r\n]",
    "label_for_find_button": "Update",
    "label_for_name": "OR",
    "label_radius": "Within",
    "label_search": "&nbsp;",
    "layout": "<div id=\"sl_div\">[slp_search][slp_map][slp_results]</div>",
    "maplayout": "[slp_mapcontent][slp_maptagline]",
    "name_placeholder": "Dealer name",
    "results_header": "",
    "results_header_1": "Name",
    "results_header_2": "Country",
    "results_header_3": "Phone",
    "results_header_4": "Website",
    "results_no_wrapper": "1",
    "resultslayout": "<tr id=\"slp_results_wrapper_[slp_location id]\" class=\"results_entry scroll_to_map [slp_location featured]\">\n    <td class=\"result_location\">\n        <span class=\"location_name\">[slp_location name]</span>\n        <span class=\"slp_result_address slp_result_street\">[slp_location address]</span>\n        <span class=\"slp_result_address slp_result_citystatezip\">[slp_location city_state_zip]</span>\n    </td>\n    <td class=\"slp_result_address slp_result_country\">[slp_location country]</td>\n    <td class=\"slp_result_address slp_result_phone\">[slp_location phone]</td>\n    <td class=\"slp_result_contact slp_result_website\">[slp_location web_link]</td>\n</tr>",
    "search_by_name": "on",
    "searchlayout": "<div id=\"address_search\" class=\"slp search_box layout row wrap\">\r\n    <div class=\"flex xs12\">[slp_search_element dropdown=\"category\"]</div>\r\n\r\n    <div class=\"flex xs12 search_address\">[slp_search_element input_with_label=\"address\"]</div>\r\n    <div class=\"flex xs12\">[slp_search_element dropdown_with_label=\"city\"]</div>\r\n    <div class=\"flex xs12\">[slp_search_element dropdown_with_label=\"state\"]</div>\r\n    <div class=\"flex xs12\">[slp_search_element selector_with_label=\"tag\"]</div>\r\n\r\n    <div class=\"flex xs12 search_name\">[slp_search_element input_with_label=\"name\"]</div>\r\n\r\n    <div class=\"flex xs12 search_actions\">\r\n        <div class=\"search_submit\">[slp_search_element button=\"submit\"]</div>\r\n        <div class=\"text-right search_reset\"><input class=\"slp_ui_button\" type=\"button\" value=\"Reset Search\" onclick=\"this.form.submit();\"></div>\r\n    </div>\r\n</div>",
    "show_cats_on_search": "button_bar",
    "state_selector": "dropdown_discretefilter"
  }
}

Create the stylesheet.scss.
When this is edited the PhpStorm editor will use a File Watcher service to automatically compile the SCSS and create the css and min.css version of the file.

A typical stylesheet.scss starts with the SCSS code that follows. The #style_name {} and #style_version {} are conventions we use to provide inspection insight into the style sheet to help track down potential compilation or version mismatch information, it is not critical but helpful. The initial import is not required but does help provide a level of consistency across the SLP locator styles.

@import "../../saas/slp/locator_style_components";


.store_locator_plus {
  #style_name {
    content: "Default";
  }
  #style_version {
    content: "2610.15.01";
  }
}

Once the assets are created, login to WordPress on the main SLP site where the style server is running.
Create a new “Locator Style” Post.
Name it , in this example “Directory”.
Attach a featured image.
Write a nice but brief description for the Style Card content.
Open the Custom Fields expansion.
Add a custom field starting with one having the name “css”.
Paste the entire minified CSS from the compiles SCSS into the “css” field as the value.
Add any other SLP settings fields from the settings.json, make sure the names match SLP settings option keys and enter the values.

Reference Data

slp_style_gallery GET call

An fetch result from an slp_style_gallery API call as of October 2026:

[{
    "id": 1194,
    "modified": "2026-08-03T14:48:19",
    "slug": "bennett",
    "title": {
        "rendered": "Bennett"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\"><strong>Search: <\/strong>Designed to search by category, city, state, tags or the dealer name versus the standard address or zip centric search.<br>Presents the category options as clickable buttons.  City and State selectors are via a drop down selection.   Tag search and dealer name is a text input.<br>Displays a reset search button to back to the original search with no filters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Results: Presented as a 4-column design with name, country, phone, and website as the primary output.<br>Gray highlight on hover over location.<br>Light yellow highlight for featured locations.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">This theme has been designed to work best with <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\" target=\"_blank\" rel=\"noopener\">Enterprise<\/a> <\/strong>subscriptions as it uses cluster markers, table layouts, and scroll map into view features.   Category buttons, column result layouts, and other elements require <a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Professional<\/strong><\/a> or <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\" target=\"_blank\" rel=\"noopener\"><strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\" target=\"_blank\" rel=\"noopener\">Enterprise<\/a><\/strong><\/a><\/strong> subscriptions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Will Overwrite These Settings:<\/strong>&nbsp;Address Label ,&nbsp;Address Placeholder, &nbsp;Category Selector, Name Label, &nbsp;Name Placeholder, Find Button Label, Radius Label, Search Label, Search Layout, Search Form Style, Map Style, Bubble Layout, Results Layout, Results Header, Results Header 1\/2\/3\/4 Labels<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00a0<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-82.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"246\" height=\"300\" src=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-82-246x300.png?resize=246%2C300&#038;ssl=1\" alt=\"\" class=\"wp-image-36618\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-82.png?resize=246%2C300&amp;ssl=1 246w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-82.png?resize=840%2C1024&amp;ssl=1 840w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-82.png?resize=768%2C937&amp;ssl=1 768w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-82.png?resize=1259%2C1536&amp;ssl=1 1259w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-82.png?resize=1679%2C2048&amp;ssl=1 1679w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-82.png?w=1902&amp;ssl=1 1902w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-82.png?w=1440 1440w\" sizes=\"auto, (max-width: 246px) 100vw, 246px\" \/><\/a><\/figure>\n<\/div>",
        "protected": false
    },
    "featured_media": 32855,
    "yoast_head_json": {
        "og_image": [{
            "width": 471,
            "height": 284,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/sunset-7391049_640-e1733594283135.jpg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 1591,
    "modified": "2026-08-02T14:06:59",
    "slug": "bobbitt",
    "title": {
        "rendered": "Bobbitt"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\">A yellow color scheme with a simplified search interface.<br>Does NOT show an address search.<br>Focus is on searching by name (if enabled), tags, categories, city, and state.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Results layout shows only the name, address and directions.<br><br>Location details are in the map info bubble.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This theme has been designed to work best with <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\" target=\"_blank\" rel=\"noopener\"> Enterprise<\/a> <\/strong>subscriptions as it uses category search, tag search, city search, and state search features. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Will Overwrite These Settings:<\/strong>\u00a0Bubble Layout, Google Map Style, Layout, Search Layout<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-81-300x250.png?resize=300%2C250&#038;ssl=1\" alt=\"\" class=\"wp-image-36610\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-81.png?resize=300%2C250&amp;ssl=1 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-81.png?resize=1024%2C853&amp;ssl=1 1024w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-81.png?resize=768%2C640&amp;ssl=1 768w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-81.png?resize=1536%2C1280&amp;ssl=1 1536w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-81.png?w=2026&amp;ssl=1 2026w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-81.png?w=1440 1440w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n<\/div>",
        "protected": false
    },
    "featured_media": 33006,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 480,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/yarn-949176_640.jpg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 67,
    "modified": "2026-08-02T12:34:35",
    "slug": "basic",
    "title": {
        "rendered": "Default"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\">The default layout and CSS that everyone starts out with.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the basic layout for <a href=\"https:\/\/www.storelocatorplus.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Store Locator Plus\u00ae<\/a>.&nbsp; It allows default browser and website themes to dictate the element styling. It has settings that take advantage of Enterprise and Professional level features.<\/p>\n\n\n\n<figure style=\"font-style:normal;font-weight:100\" class=\"wp-block-table has-small-font-size\"><table><thead><tr><th class=\"has-text-align-right\" data-align=\"right\">Subscription<\/th><th>Settings Changed<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Advanced<\/a><\/td><td>CSS settings, General locator layout<br>Search layout, Search category dropdown style<br>Results layout<br>Map layout, Map info bubble layout<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Professional<\/a><\/td><td><em>plus&#8230;<\/em><br>Location categories<br>Search form style, Search by name, Category selection<br>Results header, Prevent result listing wrap, Paginate results, Show country hours and phone, Category icons on results<br>Map styling, hide home marker, map width, map height<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Enterprise<\/a><\/td><td><em>plus&#8230;<\/em><br>Search box placeholder text<br>Map cluster markers, Google map style, map loading indicator<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"270\" src=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-79-300x270.png?resize=300%2C270&#038;ssl=1\" alt=\"\" class=\"wp-image-36596\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-79.png?resize=300%2C270&amp;ssl=1 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-79.png?resize=1024%2C922&amp;ssl=1 1024w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-79.png?resize=768%2C692&amp;ssl=1 768w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-79.png?resize=1536%2C1383&amp;ssl=1 1536w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-79.png?w=2030&amp;ssl=1 2030w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-79.png?w=1440 1440w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n<\/div>",
        "protected": false
    },
    "featured_media": 33007,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 302,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/sport-6923973_640-e1734626881193.jpg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 33646,
    "modified": "2025-02-27T10:24:20",
    "slug": "default-2024",
    "title": {
        "rendered": "Default 2024"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\">A modified CSS style based on the default style that was in place for all new customers up until January 2025 combined with some refinements added to our newest default styling. This style does not change any of the settings in Store Locator Plus\u00ae other than the inline CSS. The CSS is extensive but specific to the Store Locator Plus\u00ae map, search, and results display.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We recommend starting with the Default style which resets multiple settings to their installation defaults, then activating this style if you want to rest to the basic settings combined with the extensive CSS styling provided here.<\/p>\n",
        "protected": false
    },
    "featured_media": 33648,
    "yoast_head_json": {
        "og_image": [{
            "width": 1280,
            "height": 853,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/pocket-watch-3156771_1280.jpg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 211,
    "modified": "2025-02-21T19:00:02",
    "slug": "map-style-blue-agua-2",
    "title": {
        "rendered": "Map Style : Minimal"
    },
    "content": {
        "rendered": "<div class=\"wp-block-image\">\n<figure class=\"alignleft\"><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/map-style-blue-agua\/\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Map-Style-Blue-Agua-2017-01-20_17-07-08-150x150.jpg?resize=150%2C150\" alt=\"\" class=\"wp-image-205\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Blue-Agua-2017-01-20_17-07-08.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Blue-Agua-2017-01-20_17-07-08.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Blue-Agua-2017-01-20_17-07-08.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>The default Store Locator Plus\u00ae  and above layout with additional Minimal Google Elements Styling<\/strong> for users with\u00a0<strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\">MySLP Professional<\/a><\/strong> and <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\">Enterprise<\/a><\/strong> accounts.\u00a0 Turns off settings\u00a0 like Google&#8217;s auto imposed icons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&nbsp;<\/h3>\n",
        "protected": false
    },
    "featured_media": 20678,
    "yoast_head_json": {
        "og_image": [{
            "width": 1880,
            "height": 1175,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/pexels-photo-262367.jpeg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 4747,
    "modified": "2025-02-21T18:59:00",
    "slug": "feeding-america-2",
    "title": {
        "rendered": "Oregon"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\"><strong>Works Best With:<\/strong>\u00a0 <strong><a href=\"http:\/\/3.211.25.112\/\" target=\"_blank\" rel=\"noopener noreferrer\">MySLP Enterprise<\/a><\/strong><br>enables: Show category legend below the map, state directory styling<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Will Work With:<\/strong><a href=\"http:\/\/wordpress.storelocatorplus.com\/product\/experience\/\"> <\/a><a href=\"http:\/\/3.211.25.112\/\">MySLP Professional<\/a><strong><br><\/strong>enables: Search Box Title, Results Box Title<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Not<\/strong> suggested for Advance level plan<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Search above map. Results below.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Color Palette:<\/strong> <a href=\"https:\/\/duckduckgo.com\/?q=color+79bc43&amp;t=ffab&amp;ia=answer\" target=\"_blank\" rel=\"noopener noreferrer\">Apple<\/a>, <a href=\"https:\/\/duckduckgo.com\/?q=color+f2f2f2&amp;t=ffab&amp;ia=answer\" target=\"_blank\" rel=\"noopener noreferrer\">Gray95<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Overwrites These Settings:<\/strong> Locator Layout, Search Layout, Results Layout, Map Layout, Bubble Layout, (will show tags and more details in the Map bubble) Search Box Title, Results Box Title, all radius options, most labels, most map interface settings.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n",
        "protected": false
    },
    "featured_media": 32801,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 480,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/beach-139004_640.jpg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 183,
    "modified": "2025-02-21T18:58:03",
    "slug": "map-style-cactus-default",
    "title": {
        "rendered": "Map Style : Cactus"
    },
    "content": {
        "rendered": "<div class=\"wp-block-image\">\n<figure class=\"alignleft\"><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/map-style-dark-default-2\/\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Map-Style-Arizona-2017-01-20_14-51-06-150x150.jpg?resize=150%2C150\" alt=\"\" class=\"wp-image-188\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Arizona-2017-01-20_14-51-06.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Arizona-2017-01-20_14-51-06.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Arizona-2017-01-20_14-51-06.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>The default Store Locator Plus\u00ae  layout with additional Cactus Palette Map Styling<\/strong> for users with <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\">MySLP Professional<\/a><\/strong> and <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\">Enterprise<\/a><\/strong> accounts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&nbsp;<\/h3>\n",
        "protected": false
    },
    "featured_media": 32822,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 187,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/cactus-7914007_640-e1733332344132.jpg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 177,
    "modified": "2025-02-21T18:56:26",
    "slug": "basic-2",
    "title": {
        "rendered": "Default With Fonts"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\">\u00a0The default layout with additional font management.\u00a0 This is the basic layout for the locator.\u00a0 It allows default browser and website themes to dictate the element styling.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Basic styling for basis <strong><a href=\"https:\/\/my.storelocatorplus.com\/\">Store Locator Plus\u00ae<\/a><\/strong> sites.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&nbsp;<\/h3>\n",
        "protected": false
    },
    "featured_media": 33012,
    "yoast_head_json": {
        "og_image": [{
            "width": 562,
            "height": 375,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/letters-7238659_640-e1734627435628.jpg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 31051,
    "modified": "2025-02-21T18:55:05",
    "slug": "feeding-america-2-2",
    "title": {
        "rendered": "San Diego"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\">A mobile friendly style that places the search box on top and a list of results below it with a button to show a map in place of the result list.  On desktop the search box and results are on the left of the map.<\/p>\n\n\n\n<figure style=\"font-style:normal;font-weight:100\" class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Advanced<\/a><\/td><td>CSS settings, General locator layout<br>Search layout, Search category dropdown style<br>Results layout<br>Map layout, Map info bubble layout<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Professional<\/a><\/td><td><em>plus&#8230;<\/em><br>Search box title<br>Results title<br>Map info bubble tag data<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Enterprise<\/a><\/td><td><em>plus&#8230;<\/em><br>Category legend display, State directory styling<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Settings managed by this style based on SaaS subscription level.<\/figcaption><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"180\" height=\"36\" src=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-42.png?resize=180%2C36&#038;ssl=1\" alt=\"\" class=\"wp-image-33048\" style=\"width:180px;height:auto\"\/><figcaption class=\"wp-element-caption\">Color Scheme<\/figcaption><\/figure>\n<\/div>",
        "protected": false
    },
    "featured_media": 32798,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 480,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/san-diego-3727_640.jpg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 203,
    "modified": "2025-02-21T18:51:57",
    "slug": "map-style-blue-agua",
    "title": {
        "rendered": "Map Style : Blue Agua"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\" id=\"block-e1060670-fda8-4788-bf0f-925682fb44f8\">This is the basic layout for <a href=\"https:\/\/www.storelocatorplus.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Store Locator Plus\u00ae<\/a> with changes to the underlying Maps styling.   This style drops all points of interest from the map such as other businesses but keeps transit locations on.  Streets are slightly lightened to put emphasis on the locations you add to the map.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Subscription<\/th><th>Settings Changed<\/th><\/tr><\/thead><tbody><tr><td><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Advanced<\/a><\/td><td>CSS settings, General layout, Search layout, Results layout, Map layout, Map info bubble layout<\/td><\/tr><tr><td><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Professional<\/a><\/td><td><em>plus&#8230;<\/em><br>Google Map Style<\/td><\/tr><tr><td><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Enterprise<\/a><\/td><td><em>plus&#8230;<\/em><br>Map cluster markers<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"289\" height=\"300\" src=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-53-289x300.png?resize=289%2C300&#038;ssl=1\" alt=\"\" class=\"wp-image-33584\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-53.png?resize=289%2C300&amp;ssl=1 289w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-53.png?resize=988%2C1024&amp;ssl=1 988w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-53.png?resize=768%2C796&amp;ssl=1 768w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-53.png?resize=1482%2C1536&amp;ssl=1 1482w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/image-53.png?w=1524&amp;ssl=1 1524w\" sizes=\"auto, (max-width: 289px) 100vw, 289px\" \/><\/figure>\n",
        "protected": false
    },
    "featured_media": 32945,
    "yoast_head_json": {
        "og_image": [{
            "width": 562,
            "height": 375,
            "url": "http:\/\/storelocatorplus.com\/wp-content\/uploads\/water-8228076_640-e1733860384126.jpg",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 147,
    "modified": "2024-12-20T16:15:55",
    "slug": "two-left",
    "title": {
        "rendered": "Two Left"
    },
    "content": {
        "rendered": "<p><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/two-left\/\" rel=\"attachment wp-att-120\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-120 size-thumbnail\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Left-For-Red-2017-01-12_11-16-17-150x150.jpg?resize=150%2C150\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Red-2017-01-12_11-16-17.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Red-2017-01-12_11-16-17.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Red-2017-01-12_11-16-17.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-151\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Star-Outline-32x32.png?resize=32%2C32\" alt=\"\" width=\"32\" height=\"32\" \/>Places the search and results to the left of the map with red\u00a0box title bars.<\/p>\n<p>Supports\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/power\/\">Power<\/a><\/strong>\u00a0category icons and\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/power\/\">Experience<\/a><\/strong>\u00a0featured locations and box titles<\/p>\n<p>Tested on the WP\u00a0<a href=\"https:\/\/wordpress.org\/themes\/twentytwelve\/\" target=\"_blank\" rel=\"noopener\">Twenty Twelve<\/a>\u00a0theme, basic HTML pages, and SquareSpace embeds.<\/p>\n<h4>Requires a\u00a0<a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/premier-subscription\/\">WPSLP\u00a0<\/a><strong>\u00a0Premier Subscription or<\/strong>\u00a0<strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\">MySLP Enterprise<\/a><\/strong>\u00a0\u00a0account.<\/h4>\n<p>&nbsp;<\/p>\n",
        "protected": false
    },
    "featured_media": 33074,
    "yoast_head_json": {
        "og_image": [{
            "width": 633,
            "height": 329,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/cat-2433490_640-e1734729338259.jpg?fit=633%2C329&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 161,
    "modified": "2024-12-20T16:09:31",
    "slug": "rock-tape",
    "title": {
        "rendered": "Rock Tape"
    },
    "content": {
        "rendered": "<p><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/rock-tape\/\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-thumbnail wp-image-162 alignleft\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Rock-Tape-2017-01-18_07-25-28-150x150.jpg?resize=150%2C150\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Rock-Tape-2017-01-18_07-25-28.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Rock-Tape-2017-01-18_07-25-28.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Rock-Tape-2017-01-18_07-25-28.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a>A layout designed for a custom <a href=\"https:\/\/www.elegantthemes.com\/gallery\/divi\/\" target=\"_blank\" rel=\"noopener\">WordPress Divi<\/a> theme.<\/p>\n<p>Handles the <a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/power\/\"><strong>Power<\/strong> add on<\/a> categories and special layout controls in the <a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/experience\/\"><strong>Experience<\/strong> add on<\/a>.\u00a0\u00a0 Both are included in MySLP <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\" target=\"_blank\" rel=\"noopener\">Professional<\/a><\/strong> and <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\" target=\"_blank\" rel=\"noopener\">Enterprise<\/a><\/strong> levels of service.<\/p>\n<p>Sponsored by <a href=\"http:\/\/www.rocktape.com\/\" target=\"_blank\" rel=\"noopener\">Rock Tape<\/a>.<\/p>\n<p>&nbsp;<\/p>\n",
        "protected": false
    },
    "featured_media": 2605,
    "yoast_head_json": {
        "og_image": [{
            "width": 1920,
            "height": 300,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2019\/02\/europe-pin-banner-1264062_1920.png?fit=1920%2C300&ssl=1",
            "type": "image\/png"
        }]
    }
}, {
    "id": 1242,
    "modified": "2024-12-19T19:37:53",
    "slug": "alphaville",
    "title": {
        "rendered": "Alphaville"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Alphaville_(film)\" target=\"_blank\" rel=\"noopener\">Alphaville<\/a> has been designed to work within a customized Divi theme with a black-and-white theme.<\/p>\n\n\n\n<figure style=\"font-style:normal;font-weight:100\" class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Advanced<\/a><\/td><td>CSS settings, General locator layout, Map info bubble layout, Search box layout, Results layout<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Professional<\/a><\/td><td>Map styling<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Enterprise<\/a><\/td><td>Same as professional<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Settings managed by this style based on SaaS subscription level.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n",
        "protected": false
    },
    "featured_media": 32803,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 360,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/3d-model-2911428_640.jpg?fit=640%2C360&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 1534,
    "modified": "2024-12-19T18:03:11",
    "slug": "aiswarm-full",
    "title": {
        "rendered": "AISwarm Full"
    },
    "content": {
        "rendered": "\n<p class=\"wp-block-paragraph\">A CSS styling update primarily. Does not change a lot of settings outside of the CSS, making it one of the least destructive style changes you can do if you&#8217;ve already adjusted many locator settings. The CSS will hide various locator elements that will change based on where the map or SEO pages have been invoked.<\/p>\n\n\n\n<figure style=\"font-style:normal;font-weight:100\" class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Advanced<\/a><\/td><td>CSS settings, General locator layout<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Professional<\/a><\/td><td>Same as Advanced.<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Enterprise<\/a><\/td><td>Same as Advanced.<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Settings managed by this style based on SaaS subscription level.<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n",
        "protected": false
    },
    "featured_media": 32853,
    "yoast_head_json": {
        "og_image": [{
            "width": 486,
            "height": 324,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/tree-8561146_640-e1733593978778.jpg?fit=486%2C324&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 190,
    "modified": "2024-12-19T12:17:40",
    "slug": "map-style-light-as-air",
    "title": {
        "rendered": "Map Style : Light As Air"
    },
    "content": {
        "rendered": "<p><strong><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/map-style-arizona-default-2\/\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-192\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Map-Style-Light-As-Air-2017-01-20_14-55-36-150x150.jpg?resize=150%2C150\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Light-As-Air-2017-01-20_14-55-36.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Light-As-Air-2017-01-20_14-55-36.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Light-As-Air-2017-01-20_14-55-36.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a>The default Store Locator Plus 4.7.3 layout with additional Light As Air Palette Map Styling<\/strong> for users with the <strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/experience\/\">Experience<\/a><\/strong> add on or <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\">MySLP Professional<\/a><\/strong> and <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\">Enterprise<\/a><\/strong> accounts.<\/p>\n<p>Tested on the WP\u00a0<a href=\"https:\/\/wordpress.org\/themes\/twentytwelve\/\" target=\"_blank\" rel=\"noopener\">Twenty Eleven<\/a>\u00a0through <a href=\"https:\/\/wordpress.org\/themes\/twentyseventeen\/\">Twenty Seventeen<\/a> themes, basic HTML pages, and SquareSpace embeds.<\/p>\n<p>&nbsp;<\/p>\n<h3><\/h3>\n",
        "protected": false
    },
    "featured_media": 33027,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 332,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/orbs-4967554_640-e1734628656374.jpg?fit=640%2C332&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 181,
    "modified": "2024-12-19T12:12:19",
    "slug": "map-style-dark-default",
    "title": {
        "rendered": "Map Style : Dark Default"
    },
    "content": {
        "rendered": "<p><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/map-style-dark-default\/\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-209\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Map-Style-Dark-2017-01-20_13-56-26-1-150x150.jpg?resize=150%2C150\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Dark-2017-01-20_13-56-26-1.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Dark-2017-01-20_13-56-26-1.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Dark-2017-01-20_13-56-26-1.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><strong>The default Store Locator Plus 4.7.3 layout with additional Dark Map Styling<\/strong> for users with the <strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/experience\/\">Experience<\/a><\/strong> add on or <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\">MySLP Professional<\/a><\/strong> and <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\">Enterprise<\/a><\/strong> accounts.<\/p>\n<p>Tested on the WP\u00a0<a href=\"https:\/\/wordpress.org\/themes\/twentytwelve\/\" target=\"_blank\" rel=\"noopener\">Twenty Eleven<\/a>\u00a0through <a href=\"https:\/\/wordpress.org\/themes\/twentyseventeen\/\">Twenty Seventeen<\/a> themes, basic HTML pages, and SquareSpace embeds.<\/p>\n<p>&nbsp;<\/p>\n<h3><\/h3>\n",
        "protected": false
    },
    "featured_media": 33022,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 427,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/rocks-1061540_640.jpg?fit=640%2C427&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 74,
    "modified": "2024-12-19T12:10:03",
    "slug": "left-for-red",
    "title": {
        "rendered": "Left For Red"
    },
    "content": {
        "rendered": "<p><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/left-for-red\/\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-120\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Left-For-Red-2017-01-12_11-16-17-150x150.jpg?resize=150%2C150\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Red-2017-01-12_11-16-17.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Red-2017-01-12_11-16-17.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Red-2017-01-12_11-16-17.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>Places the search above and results to the left of the map with red\u00a0box title bars.<\/p>\n<p>Supports\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/power\/\">Power<\/a><\/strong>\u00a0category icons and\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/power\/\">Experience<\/a><\/strong>\u00a0featured locations and box titles, features available as\u00a0\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/\" target=\"_blank\" rel=\"noopener\">WPSLP<\/a>\u00a0add ons\u00a0<\/strong>and with\u00a0<strong><a href=\"https:\/\/my.storelocatorplus.com\/\">MySLP<\/a><\/strong>\u00a0\u00a0<strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\">Professional<\/a><\/strong>\u00a0accounts sites.<\/p>\n<p>Tested on the WP\u00a0<a href=\"https:\/\/wordpress.org\/themes\/twentytwelve\/\" target=\"_blank\" rel=\"noopener\">Twenty Twelve<\/a>\u00a0theme, basic HTML pages, and SquareSpace embeds.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n",
        "protected": false
    },
    "featured_media": 33020,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 373,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/roof-truss-4194408_640-e1734628198852.jpg?fit=640%2C373&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 114,
    "modified": "2024-12-19T12:08:06",
    "slug": "left-for-green",
    "title": {
        "rendered": "Left For Green"
    },
    "content": {
        "rendered": "<p><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/left-for-green\/\" rel=\"attachment wp-att-124\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-124\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Left-For-Green-2017-01-12_11-18-22-150x150.jpg?resize=150%2C150\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Green-2017-01-12_11-18-22.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Green-2017-01-12_11-18-22.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Green-2017-01-12_11-18-22.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>Places the search above and results to the left of the map with green\u00a0box title bars.<\/p>\n<p>Supports\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/power\/\">Power<\/a><\/strong>\u00a0category icons and\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/power\/\">Experience<\/a><\/strong>\u00a0featured locations and box titles, features available as\u00a0\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/\" target=\"_blank\" rel=\"noopener\">WPSLP<\/a>\u00a0add ons\u00a0<\/strong>and with\u00a0<strong><a href=\"https:\/\/my.storelocatorplus.com\/\">MySLP<\/a><\/strong>\u00a0\u00a0<strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\">Professional<\/a><\/strong>\u00a0accounts sites.<\/p>\n<p>Tested on the WP\u00a0<a href=\"https:\/\/wordpress.org\/themes\/twentytwelve\/\" target=\"_blank\" rel=\"noopener\">Twenty Twelve<\/a>\u00a0theme, basic HTML pages, and SquareSpace embeds.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n",
        "protected": false
    },
    "featured_media": 33017,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 279,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/leaf-2210973_640-e1734628075972.jpg?fit=640%2C279&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 112,
    "modified": "2024-12-19T12:05:58",
    "slug": "left-for-blue",
    "title": {
        "rendered": "Left For Blue"
    },
    "content": {
        "rendered": "<p><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/left-for-blue\/\" rel=\"attachment wp-att-122\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-122\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Left-For-Blue-2017-01-12_11-17-24-150x150.jpg?resize=150%2C150\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Blue-2017-01-12_11-17-24.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Blue-2017-01-12_11-17-24.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Blue-2017-01-12_11-17-24.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a>Places the search above and results to the left of the map with blue box title bars.<\/p>\n<p><strong>Overwrites These Settings:<\/strong> Locator Layout, Search Layout, Results Layout, Bubble Layout<\/p>\n<p>Supports\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/power\/\">Power<\/a><\/strong>\u00a0category icons and\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/power\/\">Experience<\/a><\/strong>\u00a0featured locations and box titles, features available as\u00a0\u00a0<strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">WPSLP<\/a>\u00a0add ons\u00a0<\/strong>and with\u00a0<strong><a href=\"https:\/\/my.storelocatorplus.com\/\">MySLP<\/a><\/strong>\u00a0 <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\">Professional<\/a><\/strong> accounts sites.<\/p>\n<p>Tested on the WP\u00a0<a href=\"https:\/\/wordpress.org\/themes\/twentytwelve\/\" target=\"_blank\" rel=\"noopener noreferrer\">Twenty Twelve<\/a>\u00a0theme, basic HTML pages, and SquareSpace embeds.<\/p>\n",
        "protected": false
    },
    "featured_media": 33015,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 327,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/art-2578353_640-e1734627942844.jpg?fit=640%2C327&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 617,
    "modified": "2024-12-19T12:03:12",
    "slug": "experience-gray-navy",
    "title": {
        "rendered": "Experience Gray Navy"
    },
    "content": {
        "rendered": "<p><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/basic\/\" target=\"_blank\" rel=\"attachment wp-att-136 noopener noreferrer\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-136 size-thumbnail\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Default-2017-01-12_16-58-58-150x150.jpg?resize=150%2C150\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Default-2017-01-12_16-58-58.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Default-2017-01-12_16-58-58.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Default-2017-01-12_16-58-58.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><strong>Experience add-on layout similar to default with font tweaks<\/strong>. \u00a0Includes featured location highlighting.<\/p>\n<p>Palette: Gray and Navy<\/p>\n<p>Basic styling for basic <strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress Store Locator Plus<\/a> <\/strong>and SaaS <strong><a href=\"https:\/\/my.storelocatorplus.com\/\">My Store Locator Plus<\/a><\/strong> sites.<\/p>\n<p>Tested on the WP\u00a0<a href=\"https:\/\/wordpress.org\/themes\/twentytwelve\/\" target=\"_blank\" rel=\"noopener noreferrer\">Twenty Eleven<\/a>\u00a0through <a href=\"https:\/\/wordpress.org\/themes\/twentyseventeen\/\">Twenty Seventeen<\/a> themes, basic HTML pages, and SquareSpace embeds.<\/p>\n<p>&nbsp;<\/p>\n<h3><\/h3>\n",
        "protected": false
    },
    "featured_media": 33013,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 314,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/rainbow-514200_640.jpg?fit=640%2C314&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 316,
    "modified": "2024-12-19T11:52:00",
    "slug": "basic-2-2",
    "title": {
        "rendered": "Default Legend Below"
    },
    "content": {
        "rendered": "<div class=\"wp-block-image\">\r\n<figure class=\"alignleft\"><a href=\"https:\/\/storelocatorplus.com\/slp_style_gallery\/basic\/\" target=\"_blank\" rel=\"attachment noopener wp-att-136\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" class=\"wp-image-136\" src=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Default-2017-01-12_16-58-58.jpg?resize=150%2C150\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Default-2017-01-12_16-58-58.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Default-2017-01-12_16-58-58.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Default-2017-01-12_16-58-58.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>The default layout with location category legend shown below results.\u00a0 <\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Add the category legend on the locator map user interface. Includes additional font management. It allows default browser and website themes to dictate the element styling.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Works Best With: <a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Enterprise<\/a><br \/><\/strong>Enterprise adds: Placeholders, Loading Indicator, Cluster markers<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Works With:<\/strong> <a href=\"https:\/\/storelocatorplus.com\/signup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Professional<\/a>.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-cyan-bluish-gray-color has-text-color wp-block-paragraph\"><strong>Not Recommended For:<\/strong> Advanced Level Plan<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><em>WordPress will work best with\u00a0<a href=\"https:\/\/wordpress.storelocatorplus.com\/home\/add-ons\/premier\/\" target=\"_blank\" rel=\"noreferrer noopener\">Premier<\/a>. Improves with\u00a0<a href=\"https:\/\/wordpress.storelocatorplus.com\/home\/add-ons\/power\/\" target=\"_blank\" rel=\"noreferrer noopener\">Power<\/a>\u00a0and\u00a0<a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/experience\/\" target=\"_blank\" rel=\"noreferrer noopener\">Experience<\/a>\u00a0add ons.<\/em><\/p>\r\n\r\n\r\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Overwrites These Settings:<\/strong> <em><strong>Layouts<\/strong><\/em>: Locator Layout, Search Layout, Results Layout, Map Layout, Bubble Layout; <em><strong>Search<\/strong><\/em>: Search Form Style, Show Search By Name;\u00a0 <em><strong>Map<\/strong><\/em>: Google Map Style, Hide Home Marker, Map Width, Map Width Units, Map Height, Map Height Units, Loading Indicator;<em><strong>Results<\/strong><\/em>: Results Header, Do Not Wrap Results In Div, Enable Pagination, Show Country, Show Hours, Phone Label; <strong><em>View<\/em><\/strong>: Enable Show Legend Text, <em><strong>Categories<\/strong><\/em>: Category Selector, Category &#8211; Show Icons.<\/p>\r\n",
        "protected": false
    },
    "featured_media": 33009,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 377,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/typewriter-1170657_640-e1734627098477.jpg?fit=640%2C377&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 1240,
    "modified": "2024-12-10T15:39:23",
    "slug": "metropolis",
    "title": {
        "rendered": "Metropolis"
    },
    "content": {
        "rendered": "<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Metropolis_(1927_film)\" target=\"_blank\" rel=\"noopener\">Metropolis<\/a>\u00a0styling attempts to overcome the vast differences in class. \u00a0 Takes over more of the CSS styling than usual.<\/p>\n<p>This style is updated with additional rules on a regular basis whenever someone reports a misbehaving layout. \u00a0 Select another style, then re-select this style to reload the latest rules.<\/p>\n<p>Style Guide: right pad 2em, vertical margin 1em, result line height: 1.5em<\/p>\n<ul>\n<li><strong>2017-Nov-23 :<\/strong> right pad on span.slp_result_email\/fax\/phone\/website, single line on span.slp_result_street\/street2\/citystatezip\/country\/hours, vertical margin below country and above hours, drops Foundation float:right on div[class*=&#8221;column&#8221;]<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n",
        "protected": false
    },
    "featured_media": 32961,
    "yoast_head_json": {
        "og_image": [{
            "width": 604,
            "height": 403,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/tokyo-8650941_640-e1733863077840.jpg?fit=604%2C403&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 659,
    "modified": "2024-12-07T13:18:11",
    "slug": "ice-cream-oreo-frappe",
    "title": {
        "rendered": "Ice Cream : Oreo Frappe"
    },
    "content": {
        "rendered": "<p><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/basic\/\" target=\"_blank\" rel=\"attachment wp-att-136 noopener noreferrer\"><br \/>\n<\/a><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-671\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/07\/ice_cream_oreo_frappe-150x150.png?resize=150%2C150\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/07\/ice_cream_oreo_frappe.png?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/07\/ice_cream_oreo_frappe.png?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/07\/ice_cream_oreo_frappe.png?resize=768%2C768&amp;ssl=1 768w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/07\/ice_cream_oreo_frappe.png?resize=180%2C180&amp;ssl=1 180w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/07\/ice_cream_oreo_frappe.png?resize=480%2C480&amp;ssl=1 480w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/07\/ice_cream_oreo_frappe.png?resize=255%2C255&amp;ssl=1 255w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/07\/ice_cream_oreo_frappe.png?w=945&amp;ssl=1 945w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><b>A basic style with an &#8220;Oreo Frappe&#8221; color palette.\u00a0<\/b> This is the style we are now using on our Weebly South Carolina Ice Cream example site. \u00a0 Supports <a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/premier-subscription\/\">Premier<\/a> Search Form Styling as well as\u00a0 <a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/experience\/\">Experience<\/a> featured locations highlighting and search form placeholders.<\/p>\n",
        "protected": false
    },
    "featured_media": 32866,
    "yoast_head_json": {
        "og_image": [{
            "width": 382,
            "height": 280,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/beverage-4908765_640-e1733595472651.jpg?fit=382%2C280&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 221,
    "modified": "2024-12-07T13:13:23",
    "slug": "left-for-good",
    "title": {
        "rendered": "Left For Good"
    },
    "content": {
        "rendered": "<div class=\"wp-block-image\">\r\n<figure class=\"alignleft size-large\"><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/left-for-blue\/\" rel=\"attachment wp-att-122\"><img data-recalc-dims=\"1\" height=\"150\" width=\"150\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Left-For-Blue-2017-01-12_11-17-24-150x150.jpg?resize=150%2C150&#038;ssl=1\" alt=\"\" \/><\/a><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Places the search above and results to the left of the map with blue box search title bar. Improved font and spacing management.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Supports category icons on results with no legend, \u00a0featured locations and box titles.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Overwrites These Settings:<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Bubble Layout, Internal CSS, Google Map Style, General Layout, Results Layout, Search Layout<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Works With: <\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Good: <a href=\"http:\/\/3.211.25.112\/\">Advanced SaaS Plans<\/a> <br \/>Better: <a href=\"http:\/\/3.211.25.112\/\">Professional SaaS<\/a><br \/>Best: <a href=\"http:\/\/3.211.25.112\/\" target=\"_blank\" rel=\"noreferrer noopener\">Enterprise SaaS<\/a><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Also works with <a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/store-locator-plus\/\">Store Locator Plus\u00ae for WordPress<\/a><\/p>\r\n",
        "protected": false
    },
    "featured_media": 32863,
    "yoast_head_json": {
        "og_image": [{
            "width": 546,
            "height": 295,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/arrows-2745977_640-e1733595189747.jpg?fit=546%2C295&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 225,
    "modified": "2024-12-07T13:06:51",
    "slug": "here-music-dark-side",
    "title": {
        "rendered": "Here Music Dark Side"
    },
    "content": {
        "rendered": "<p><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/here-music-dark-side\/\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-238 size-thumbnail\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Here-Music-2017-01-27_12-54-38-150x150.png?resize=150%2C150\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Here-Music-2017-01-27_12-54-38.png?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Here-Music-2017-01-27_12-54-38.png?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Here-Music-2017-01-27_12-54-38.png?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><strong>A custom style that takes over much of the font and input management<\/strong>.\u00a0 Deployed for a dark colored theme used on <a href=\"http:\/\/HereMusic.Live\/directory\/\">Here Music Live.<\/a> Simplified bubble layout and category outputs.<\/p>\n<p>Sets map styling for <a href=\"http:\/\/wordpress.storelocatorplus.com\/product\/experience\/\">Experience<\/a> and <a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\">Professional<\/a>\/<a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\">Enterprise<\/a><\/p>\n<p>Tested on the HMLive Theme for <a href=\"https:\/\/wordpress.storelocatorplus.com\/\">WordPress<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3><\/h3>\n",
        "protected": false
    },
    "featured_media": 32860,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 427,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/guitar-8011240_640.jpg?fit=640%2C427&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 4599,
    "modified": "2024-12-07T12:48:21",
    "slug": "feeding-america",
    "title": {
        "rendered": "Feeding America"
    },
    "content": {
        "rendered": "<p>Search above map. Results below. Feature locations highlighted. Email not shown in results or bubble.<\/p>\n<p><strong>Overwrites These Settings:<\/strong> Locator Layout, Search Layout, Results Layout, Map Layout, Bubble Layout, Search Box Subtitle, all radius options, most labels, most map interface settings.<\/p>\n<p><strong>Will Work With:<\/strong><a href=\"http:\/\/wordpress.storelocatorplus.com\/product\/experience\/\"> WordPress Experience<\/a> or <a href=\"http:\/\/3.211.25.112\/\">MySLP Professional<\/a><strong><br \/>\n<\/strong>enables: Search box title.<\/p>\n<p><strong>Works Best With:<\/strong>\u00a0 <a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/premier-subscription\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>WordPress Premier<\/strong><\/a> or <strong><a href=\"http:\/\/3.211.25.112\/\" target=\"_blank\" rel=\"noopener noreferrer\">MySLP Enterprise<\/a><\/strong><br \/>\nenables: Show category legend below the map, state directory styling<\/p>\n",
        "protected": false
    },
    "featured_media": 32850,
    "yoast_head_json": {
        "og_image": [{
            "width": 625,
            "height": 346,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/hay-bales-7387995_640-e1733593668569.jpg?fit=625%2C346&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 1577,
    "modified": "2024-12-07T12:41:03",
    "slug": "two-shades-of-grey",
    "title": {
        "rendered": "Two Shades Of Grey"
    },
    "content": {
        "rendered": "<h3><a href=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2018\/03\/Two-Shades-of-Grey-2018-03-15_22-45-06.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1586 size-medium\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2018\/03\/Two-Shades-of-Grey-2018-03-15_22-45-06-300x185.png?resize=300%2C185\" alt=\"\" width=\"300\" height=\"185\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2018\/03\/Two-Shades-of-Grey-2018-03-15_22-45-06.png?resize=300%2C185&amp;ssl=1 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2018\/03\/Two-Shades-of-Grey-2018-03-15_22-45-06.png?resize=768%2C473&amp;ssl=1 768w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2018\/03\/Two-Shades-of-Grey-2018-03-15_22-45-06.png?resize=1024%2C631&amp;ssl=1 1024w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2018\/03\/Two-Shades-of-Grey-2018-03-15_22-45-06.png?w=1119&amp;ssl=1 1119w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h3>\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Enables:<\/strong>\u00a0Address placeholder, Search Address nearest, bubble layout<strong>\u00a0<\/strong><\/p>\r\n\r\n<p>A grey color scheme with a simple search form and results layout on the left of the map.\u00a0 \u00a0Based on\u00a0<a href=\"https:\/\/foundation.zurb.com\/sites\/docs\/xy-grid.html\" target=\"_blank\" rel=\"noopener\">Foundation for Sites XY Grid<\/a> layout controls. \u00a0\u00a0<\/p>\r\n<p><strong>Disables<\/strong> Google Map Icons<\/p>\r\n<h3>Settings<\/h3>\r\n<p>Selecting this style will change the following settings:<\/p>\r\n<ul>\r\n<li><em>\u00a0<a href=\"https:\/\/docs.storelocatorplus.com\/blog\/tag\/bubblelayout\" target=\"_blank\" rel=\"noopener\">Bubble Layout<\/a><\/em><\/li>\r\n<li><em>\u00a0<a href=\"https:\/\/docs.storelocatorplus.com\/blog\/tag\/google-map-style\" target=\"_blank\" rel=\"noopener\">Map Style<\/a><\/em> <span style=\"color: #808080;\">&#8211; remove Google Map icons<\/span><\/li>\r\n<li><em>\u00a0<a href=\"https:\/\/docs.storelocatorplus.com\/blog\/tag\/resultslayout\" target=\"_blank\" rel=\"noopener\">Results Layout<\/a><\/em><\/li>\r\n<li><em><a href=\"https:\/\/docs.storelocatorplus.com\/blog\/tag\/searchlayout\" target=\"_blank\" rel=\"noopener\">Search Layout<\/a><\/em> <span style=\"color: #808080;\">&#8211; Display the search form title bar<\/span><\/li>\r\n<li><em>\u00a0Address Label<\/em> <span style=\"color: #808080;\">&#8211; blank<\/span><\/li>\r\n<li><em>\u00a0Address Placeholder<\/em> <span style=\"color: #808080;\">&#8211; &#8220;Address to search near&#8230;&#8221;<\/span><\/li>\r\n<\/ul>\r\n<hr \/>\r\n<h5>Works best with a\u00a0<a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/premier-subscription\/\">WPSLP\u00a0<\/a><strong>\u00a0Premier or<\/strong>\u00a0<strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\">MySLP Enterprise<\/a><\/strong>\u00a0\u00a0membership<\/h5>",
        "protected": false
    },
    "featured_media": 32848,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 288,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/ocean-7428108_640-e1733593241243.jpg?fit=640%2C288&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 201,
    "modified": "2024-12-04T12:19:40",
    "slug": "map-style-grey-skies",
    "title": {
        "rendered": "Map Style : Grey Skies"
    },
    "content": {
        "rendered": "<p><strong><a href=\"http:\/\/3.211.25.112\/slp_style_gallery\/map-style-grey-skies\/\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-207\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/01\/Map-Style-Grey-Skies-2017-01-20_17-09-36-150x150.jpg?resize=150%2C150\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Grey-Skies-2017-01-20_17-09-36.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Grey-Skies-2017-01-20_17-09-36.jpg?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/01\/Map-Style-Grey-Skies-2017-01-20_17-09-36.jpg?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a>The default Store Locator Plus 4.7.3 layout with additional Grey Skies Styling<\/strong> for users with the <strong><a href=\"https:\/\/wordpress.storelocatorplus.com\/product\/experience\/\">Experience<\/a><\/strong> add on or <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=blue\">MySLP Professional<\/a><\/strong> and <strong><a href=\"https:\/\/my.storelocatorplus.com\/signup\/?signupplan=orange\">Enterprise<\/a><\/strong> accounts.<\/p>\n<p>Tested on the WP\u00a0<a href=\"https:\/\/wordpress.org\/themes\/twentytwelve\/\" target=\"_blank\" rel=\"noopener\">Twenty Eleven<\/a>\u00a0through <a href=\"https:\/\/wordpress.org\/themes\/twentyseventeen\/\">Twenty Seventeen<\/a> themes, basic HTML pages, and SquareSpace embeds.<\/p>\n<p>&nbsp;<\/p>\n<h3><\/h3>\n",
        "protected": false
    },
    "featured_media": 32826,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 260,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/sunset-8569636_640-e1733332775251.jpg?fit=640%2C260&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}, {
    "id": 1044,
    "modified": "2024-12-04T12:08:00",
    "slug": "brewery",
    "title": {
        "rendered": "Brewery"
    },
    "content": {
        "rendered": "<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-thumbnail wp-image-1048 alignleft\" src=\"https:\/\/i0.wp.com\/3.211.25.112\/wp-content\/uploads\/2017\/09\/brewery-150x150.png?resize=150%2C150\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/09\/brewery.png?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/09\/brewery.png?zoom=2&amp;resize=150%2C150 300w, https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/2017\/09\/brewery.png?zoom=3&amp;resize=150%2C150 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/>A simple standard locator layout for <a href=\"https:\/\/my.storelocatorplus.com\/\" target=\"_blank\" rel=\"noopener\">MySLP<\/a> and <a href=\"https:\/\/wordpress.storelocatorplus.com\/\" target=\"_blank\" rel=\"noopener\">WordPress SLP<\/a> sites.<\/p>\n<p>Designed to work with the WordPress\u00a0<a href=\"https:\/\/rescuethemes.com\/wordpress-themes\/brewery\/\" target=\"_blank\" rel=\"noopener\">Brewery Theme by Rescue Themes<\/a>\u00a0as well as many premium Weebly and Squarespace themes for MySLP users.<\/p>\n<p>&nbsp;<\/p>\n",
        "protected": false
    },
    "featured_media": 32819,
    "yoast_head_json": {
        "og_image": [{
            "width": 640,
            "height": 427,
            "url": "https:\/\/i0.wp.com\/storelocatorplus.com\/wp-content\/uploads\/beer-tasting-flight-4599048_640.jpg?fit=640%2C427&ssl=1",
            "type": "image\/jpeg"
        }]
    }
}]

0 comments on “SaaS User / Blog / Site Loading”

SaaS User / Blog / Site Loading

An exploration into the methods that set up User (WP_User), Blog, and Site meta.


Blog ID

\MySLP::getUserBlogId => (int) Blog ID

Returns the blog ID for the user WordPress considered already logged in.

Uses wp_get_current_user() to fetch the current WP_User.
Then uses get_user_meta( <id> , ‘primary_blog’, true) to fetch the Blog ID from the ‘primary_blog’ user meta.
If empty uses WP_User->get_site_id() => get_current_blog_id() => global $blog_id.

Blog ID
Primary Source: ‘primary_blog’ user meta
Fallback: global $blog_id

\MySLP_Dashboard_Controller::get_blog_id_by_user(<User ID>) => (int) Blog ID || WP_Error

Returns the blog ID for the user ID provided or WP_Error if no blogs can be found for this user.

Uses get_active_blog_for_user(<User ID>)
Returns the user’s primary blog (object) with get_user_meta( $user_id, ‘primary_blog’, true ) if the user has a primary blog.
If they do NOT have a primary blog, returns the blog for the first site they are connected to that they do not own (NOT in MySLP). Has the side effect of making that alternate blog their primary blog.
===> If the user is not attached to ANY blog, it makes them a subscriber on the main site and returns that.
This is very indeterminate and can return null, false, an object (blog), or WP_Site object.


User

\MySLP_User::get_primary_user(<Blog ID>) => WP_User || null

Return the primary user for a site based on the blog ID.
Calls get_users() to fetch a list of users filtered where blog_id = <Blog ID>, order by ID, Ascending, returns 1 value. If the main superadmin site must have the role ‘administrator’.

Set MySLP_User->primary_user to the first WP_User on the list
Sets MySLP_User->blog_id = <Blog ID>

Returns WP_User if the user is associated with the given blog.

wp_get_current_user() => WP_User

Calls _wp_get_current_user()
Which returns the global $current_user if set and type is WP_User


myslp_current_blog_settings()

Sets $user via wp_get_current_user().
$user->ID should be the <User ID> of the current logged in user.

Calls \MySLP_User::load(<User ID>) <== <User ID> from wp_get_current_user()
Then calls MySLP_Dashboard_Controller::get_blog_id_by_user(<User ID>) ==> <Blog ID> for that user
Then calls \MySLP_User::load_for_blog(<Blog ID>)
Which calls \MySLP_User::__get(‘wp_user)
Invoking \MySLP_User::get_primary_user(Blog ID>)

0 comments on “ECS EC2 Instances and Auto Scaling”

ECS EC2 Instances and Auto Scaling

To update an EC2 instance image for the SaaS servers:

  • Go to Cloud Formation for the cluster to be updated (find it under ECS Configuration | CloudFormation stack).
  • Create a Change Set:
    • standard, use existing template.
    • provide a description “updating instance AMI”
    • for LatestECSOptimizedAMI enter /aws/service/ecs/optimized-ami/amazon-linux-2023/arm64/recommended/image_id
    • Keep everything else unchanged
    • On the last page to review the change set it should show the new AMI ID
      Use this , versus guessing from the AMI picker under the Launch Template editor
    • Create the change set, validate it, and deploy it.
    • This should create a new launch template version (it will not deploy or set to default)

To deploy the new instances:

  • Go to EC2 Launch Template
  • Review the newest version on the list, make sure it has the new AMI ID
  • Set the new version of the template to the default version
  • Go to EC2 Auto Scaling Groups
  • Find Instance Refresh and execute that

This should roll the instances to the new template with the new AMI in place.

KEEP TRACK OF THE PRIOR DEFAULT LAUNCH TEMPLATE ID.
You may need to set the launch template back to the prior valid version of the launch template ID and refresh instances to roll back to the older template if something goes wrong.

When this was done in August 2026, the Auto Scaling Group had some invalid subnets attached. This kept launching EC2 instances that would not auto-attach to the target group and load balancer. This took the production SaaS offline for 5-10 minutes until the services were rolled back. LUCKILY some of the replacement instances randomly picked the right subnet and it worked. It turned out not to be an AMI issue, so the roll back to the prior default only helped by pure change – but it highlights the importance of being able to quickly reset the state of the instances.

It also highlighted the fact that the ASG can deem an instance health if it booted and is running, but the ALB and associated Target Group may still deem the instance “unhealthy” and not allow anything to connect to it making the fault-tolerant scaling group a bit of a false sense of security.

EC2 Auto Scaling Groups

Manages the number of EC2 hosts available.
Here you can run an instance refresh to use the defined launch template and default version of the template to replace running EC2 hosts with new hosts.
If configured properly these should automatically attach to the target groups which then are automatically picked up by the ECS SaaS service.
* The Scaling Group determines which subnets the launched EC2 instances attach to. For the production server this must be the PRIVATE subnets (slp-saas-private-1d), the public cluster subnets will not work.

EC2 Launch Templates

define the general characteristics of the host instance.
This includes the OS image (AMI).
Latest versions are setup to use Amazon Linux 2023.
* see note on CloudFormation below for picking the AMI

Manually launching a new instance via EC2 Launch Templates should auto-connect to the EC2 Target Group and then the ECS Infrastructure stack of Container Instances if the launch template is configured correctly (and connecting to the proper subnet).

EC2 Target Groups

(ecs-slp-saas-production) will automatically connect to EC2 instances via the associated EC2 application load balancer (slp-saas-production). The ALB is connected to the target group by the HTTPS:443 listener.
Should not need to be changed.

EC2 Application Load Balancer

Routes traffic and balances it between multiple EC2 hosts as needed.
Should not need to be changed.

Cloud Formation

Creates a template for building connected AWS resources into an IT stack.
You can use Cloud Formation to create a change set and have it automatically search and find the latest compatible AMI.
for LatestECSOptimizedAMI enter /aws/service/ecs/optimized-ami/amazon-linux-2023/arm64/recommended/image_id

0 comments on “Update The Default Locator Style”

Update The Default Locator Style

Goal: Refine the existing Default Locator Style.

Overview

The Default Locator Style lives in the project relative directory: wp-content/plugins/style-gallery-service/assets/styles/Default

Update the attached stylesheet.scss as needed to make the visual changes requested.

Only update settings.json settings if absolutely necessary to change Store Locator Plus® settings related to the layout (layout, resultslayout, searchlayout, maplayout, bubblelayout).

With the wpslp Docker container running on a local development environment the HTML with the rendered [slplus] shortcode output can be referenced at http://localhost/sample-page/

Fix The Results Layout CSS

The current CSS is not properly separating the Website and Directions links when rendered in the resultslayout shortcode.
Add modern CSS rules to stack the Website and Directions links with a gap between them.
This should work similar to the Material UI Stack component with <Stack direction=”row” space={2}>.

A screenshot of the current results layout on a default WordPress plugin install is shown below:

v260724.01 Default results layout

Modernize The Search Layout CSS

Update the CSS that impacts the search layout elements to present a modern interface.

All input elements should have a consistent height such as the address input, the radius selector, and the find button.

The find button…

  • should have more padding
  • text needs to remain centered
  • inherit the WordPress theme default colors (if available) remember users can place this on sites with different themes
  • Should right align with the right edge of the address input box
v2607.24.01 Default search layout

In the image below the Search By Name feature is enabled, the Address Input label has been set to “Address” and the Address Input Placeholder has been set to “Enter a zip code or address.”. This also has the Category Selector set to Cascading Drop Down.

The category drop down selections should be bound by the same right and left margins as the rest of the SLP rendered area in the #sl_div DIV tag and should not push beyond the right side edge of the map as is shown below.

v2607.24.01 Default search layout with the category selector, store name input activated, address label set to Address, and an address input placeholder set.

HTML Example

The following is an example of the rendered slplus shortcode on a WordPress site employing the Twenty Twenty-Four theme using the Default locator style.

<div id="sl_div"><form id="searchForm" class="slp_search_form" action="" onsubmit="cslmap.searchLocations(); return false;"><div class="slp_search_container"><div id="address_search" class="slp search_box">        <input class="label_text length_10" type="hidden" id="nameSearch" name="nameSearch" size="50" value="">    <div id="addy_in_address" class="search_item"><input class="label_empty" type="text" id="addressInput" name="addressInput" size="50" value=""></div>    <input type="hidden" id="addressInputCity" name="addressInputCity" value="">    <input type="hidden" id="addressInputState" name="addressInputState" value="">    <input type="hidden" id="addressInputCountry" name="addressInputCountry" value="">                    <div class="search_item">        <div id="addy_in_radius"><label for="radiusSelect" class="text length_6">Within</label><select id="radiusSelect"><option value="10">10 miles</option><option value="25">25 miles</option><option value="50">50 miles</option><option value="100">100 miles</option><option value="200" selected="selected">200 miles</option><option value="500">500 miles</option></select></div>        <div id="radius_in_submit"><input type="submit" class="slp_ui_button" value="Find" id="addressSubmit"></div>    </div>        </div><input type="hidden" name="ignore_radius" id="ignore_radius" value="0"></div></form><div id="map" class="slp_map" style="position: relative; overflow: hidden;"><div style="height: 100%; width: 100%; position: absolute; top: 0px; left: 0px; background-color: rgb(229, 227, 223);"><div><button draggable="false" aria-label="Keyboard shortcuts" title="Keyboard shortcuts" type="button" style="background: none; display: block; border: medium; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: absolute; cursor: pointer; -webkit-user-select: none; z-index: 1000002; outline-offset: 3px; right: 0px; bottom: 0px; transform: translateX(100%);"></button></div><div tabindex="0" aria-label="Map" aria-roledescription="map" role="region" aria-describedby="70C71316-2CD2-452D-82B5-8A7F1AFD4D42" style="position: absolute; height: 100%; width: 100%; padding: 0px; border-width: 0px; margin: 0px; left: 0px; top: 0px;"><div id="70C71316-2CD2-452D-82B5-8A7F1AFD4D42" style="display: none;"><div class="LGLeeN-keyboard-shortcuts-view"><table><tbody><tr><td><kbd aria-label="Left arrow">←</kbd></td><td aria-label="Move left.">Move left</td></tr><tr><td><kbd aria-label="Right arrow">→</kbd></td><td aria-label="Move right.">Move right</td></tr><tr><td><kbd aria-label="Up arrow">↑</kbd></td><td aria-label="Move up.">Move up</td></tr><tr><td><kbd aria-label="Down arrow">↓</kbd></td><td aria-label="Move down.">Move down</td></tr><tr><td><kbd>+</kbd></td><td aria-label="Zoom in.">Zoom in</td></tr><tr><td><kbd>-</kbd></td><td aria-label="Zoom out.">Zoom out</td></tr><tr><td><kbd>Home</kbd></td><td aria-label="Jump left by 75%.">Jump left by 75%</td></tr><tr><td><kbd>End</kbd></td><td aria-label="Jump right by 75%.">Jump right by 75%</td></tr><tr><td><kbd>Page Up</kbd></td><td aria-label="Jump up by 75%.">Jump up by 75%</td></tr><tr><td><kbd>Page Down</kbd></td><td aria-label="Jump down by 75%.">Jump down by 75%</td></tr></tbody></table></div></div></div><div class="gm-style" style="position: absolute; z-index: 0; left: 0px; top: 0px; height: 100%; width: 100%; padding: 0px; border-width: 0px; margin: 0px;"><div style="position: absolute; z-index: 0; left: 0px; top: 0px; height: 100%; width: 100%; padding: 0px; border-width: 0px; margin: 0px; cursor: url(&quot;https://maps.gstatic.com/mapfiles/openhand_8_8.cur&quot;), default; touch-action: pan-x pan-y;"><div style="z-index: 1; position: absolute; left: 50%; top: 50%; width: 100%; will-change: transform; transform: translate(0px, 0px);"><div style="position: absolute; left: 0px; top: 0px; z-index: 100; width: 100%;"><div style="position: absolute; left: 0px; top: 0px; z-index: 0;"><div style="position: absolute; z-index: 988; transform: matrix(1, 0, 0, 1, -79, -68);"><div style="position: absolute; left: -256px; top: 0px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: -512px; top: 0px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: -512px; top: -256px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: -256px; top: -256px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: 0px; top: -256px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: 0px; top: 0px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: 0px; top: 256px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: -256px; top: 256px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: -512px; top: 256px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: 256px; top: -256px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: 256px; top: 0px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div><div style="position: absolute; left: 256px; top: 256px; width: 256px; height: 256px;"><div style="width: 256px; height: 256px;"></div></div></div></div></div><div style="position: absolute; left: 0px; top: 0px; z-index: 101; width: 100%;"></div><div style="position: absolute; left: 0px; top: 0px; z-index: 102; width: 100%;"></div><div style="position: absolute; left: 0px; top: 0px; z-index: 103; width: 100%;"><div style="position: absolute; left: 0px; top: 0px; z-index: -1;"><div style="position: absolute; z-index: 988; transform: matrix(1, 0, 0, 1, -79, -68);"><div style="width: 256px; height: 256px; overflow: hidden; position: absolute; left: 0px; top: 0px;"></div><div style="width: 256px; height: 256px; overflow: hidden; position: absolute; left: -256px; top: 0px;"></div><div style="width: 256px; height: 256px; overflow: hidden; position: absolute; left: -256px; top: -256px;"></div><div style="width: 256px; height: 256px; overflow: hidden; position: absolute; left: 0px; top: -256px;"></div><div style="width: 256px; height: 256px; overflow: hidden; position: absolute; left: 256px; top: -256px;"></div><div style="width: 256px; height: 256px; overflow: hidden; position: absolute; left: 256px; top: 0px;"></div><div style="width: 256px; height: 256px; overflow: hidden; position: absolute; left: 256px; top: 256px;"></div><div style="width: 256px; height: 256px; overflow: hidden; position: absolute; left: 0px; top: 256px;"></div><div style="width: 256px; height: 256px; overflow: hidden; position: absolute; left: -256px; top: 256px;"></div></div></div></div><div style="position: absolute; left: 0px; top: 0px; z-index: 0;"><div style="position: absolute; z-index: 988; transform: matrix(1, 0, 0, 1, -79, -68);"><div style="position: absolute; left: 256px; top: 256px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1140!3i1653!4i256!2m3!1e0!2sm!3i788554264!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=55895" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: 0px; top: 0px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1139!3i1652!4i256!2m3!1e0!2sm!3i788554264!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=85651" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: 0px; top: -256px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1139!3i1651!4i256!2m3!1e0!2sm!3i788554264!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=85203" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: 0px; top: 256px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1139!3i1653!4i256!2m3!1e0!2sm!3i788554264!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=86099" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: -256px; top: 256px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1138!3i1653!4i256!2m3!1e0!2sm!3i788554264!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=15704" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: -512px; top: 256px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1137!3i1653!4i256!2m3!1e0!2sm!3i788554264!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=76380" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: 256px; top: -256px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1140!3i1651!4i256!2m3!1e0!2sm!3i788554264!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=54999" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: 256px; top: 0px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1140!3i1652!4i256!2m3!1e0!2sm!3i788554264!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=55447" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: -256px; top: 0px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1138!3i1652!4i256!2m3!1e0!2sm!3i788554360!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=64482" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: -256px; top: -256px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1138!3i1651!4i256!2m3!1e0!2sm!3i788554360!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=64034" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: -512px; top: -256px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1137!3i1651!4i256!2m3!1e0!2sm!3i788554360!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=124710" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div><div style="position: absolute; left: -512px; top: 0px; width: 256px; height: 256px; transition: opacity 200ms linear;"><img draggable="false" alt="" role="presentation" src="https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i12!2i1137!3i1652!4i256!2m3!1e0!2sm!3i788554360!3m13!2sen!3sUS!5e18!12m5!1e68!2m2!1sset!2sRoadmap!4e2!12m3!1e37!2m1!1ssmartmaps!4e0!5m2!1e3!5f2!23i46991212!23i47054750&amp;key=AIzaSyD56nFj-MfcfDv57q3iQ0_vtmMOyWcZHHY&amp;token=125158" style="width: 256px; height: 256px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px; max-width: none;"></div></div></div></div><div style="z-index: 3; position: absolute; height: 100%; width: 100%; padding: 0px; border-width: 0px; margin: 0px; left: 0px; top: 0px; touch-action: pan-x pan-y;"><div style="z-index: 4; position: absolute; left: 50%; top: 50%; width: 100%; will-change: transform; transform: translate(0px, 0px);"><div style="position: absolute; left: 0px; top: 0px; z-index: 104; width: 100%;"></div><div style="position: absolute; left: 0px; top: 0px; z-index: 105; width: 100%;"></div><div style="position: absolute; left: 0px; top: 0px; z-index: 106; width: 100%;"><slot></slot><span id="408CEBF9-D483-4810-BF74-036DA102A992" aria-live="polite" style="position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0px; overflow: hidden; clip-path: inset(100%); white-space: nowrap; border: 0px;"></span><span id="maps-aria-25856356-9AFA-4F73-8064-99838B3C5D5A" style="display: none;">To activate drag with keyboard, press Alt + Enter. Once in keyboard drag state, use the arrow keys to move the marker. To complete the drag, press the Enter key. To cancel, press Escape.</span><div><gmp-advanced-marker aria-label="Le Farfalle" title="Le Farfalle" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" tabindex="0" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-201px, 147px); z-index: 147; will-change: transform; position: absolute; left: 0px;" position="32.7807728,-79.9344433" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Le Farfalle" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="AZUR" title="AZUR" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-201px, 148px); z-index: 148; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7802326,-79.934364" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="AZUR" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="167 Raw Oyster Bar" title="167 Raw Oyster Bar" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-198px, 151px); z-index: 151; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7794733,-79.9332978" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="167 Raw Oyster Bar" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Bay Street Biergarten" title="Bay Street Biergarten" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-192px, 108px); z-index: 108; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7920249,-79.9314688" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Bay Street Biergarten" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="The Ordinary" title="The Ordinary" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-218px, 107px); z-index: 107; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7922383,-79.940407" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="The Ordinary" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Vern's" title="Vern's" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-234px, 106px); z-index: 106; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7923451,-79.9456817" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Vern's" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Charleston Harbor Fish House" title="Charleston Harbor Fish House" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-120px, 123px); z-index: 123; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7875756,-79.9067241" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Charleston Harbor Fish House" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="The Archer" title="The Archer" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-231px, 71px); z-index: 71; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8024512,-79.9448398" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="The Archer" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Vicious Biscuit MT P" title="Vicious Biscuit MT P" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-59px, 94px); z-index: 94; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7958457,-79.885748" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Vicious Biscuit MT P" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Graze" title="Graze" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-67px, 67px); z-index: 67; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8036194,-79.8883514" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Graze" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Coleman Public House" title="Coleman Public House" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-54px, 95px); z-index: 95; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.795646,-79.8840862" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Coleman Public House" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Vickery's Bar &amp; Grill" title="Vickery's Bar &amp; Grill" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-51px, 107px); z-index: 107; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.792123,-79.8829594" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Vickery's Bar &amp; Grill" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Water's Edge" title="Water's Edge" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-48px, 105px); z-index: 105; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7927498,-79.8818621" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Water's Edge" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Tavern N Table" title="Tavern N Table" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-45px, 106px); z-index: 106; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7923824,-79.8809977" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Tavern N Table" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Nico" title="Nico" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-41px, 110px); z-index: 110; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7913618,-79.8796997" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Nico" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Shem Creek Crab House" title="Shem Creek Crab House" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-37px, 104px); z-index: 104; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7929802,-79.8782472" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Shem Creek Crab House" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Post House" title="Post House" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-33px, 125px); z-index: 125; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7870805,-79.8768768" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Post House" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Page's Okra Grill" title="Page's Okra Grill" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-34px, 112px); z-index: 112; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7907617,-79.8772127" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Page's Okra Grill" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Langdon's Restaurant &amp; Wine Bar" title="Langdon's Restaurant &amp; Wine Bar" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-34px, 46px); z-index: 46; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8098161,-79.8770554" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Langdon's Restaurant &amp; Wine Bar" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Red Drum" title="Red Drum" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(-1px, 104px); z-index: 104; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.7929632,-79.865819" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Red Drum" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Nautica Bowls" title="Nautica Bowls" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(21px, -57px); z-index: -57; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8394062,-79.8582839" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Nautica Bowls" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Wendy's" title="Wendy's" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(19px, -60px); z-index: -60; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8403093,-79.8589141" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Wendy's" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Verde" title="Verde" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(22px, -57px); z-index: -57; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8395041,-79.8578856" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Verde" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Waffle House" title="Waffle House" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(18px, -62px); z-index: -62; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8410679,-79.8593983" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Waffle House" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Moe's Southwest Grill" title="Moe's Southwest Grill" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(22px, -59px); z-index: -59; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8400488,-79.8577849" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Moe's Southwest Grill" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Dog and Duck" title="Dog and Duck" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(23px, -61px); z-index: -61; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8407263,-79.8574178" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Dog and Duck" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Starbucks Coffee Company" title="Starbucks Coffee Company" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(27px, -61px); z-index: -61; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.840512,-79.8563047" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Starbucks Coffee Company" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Fuji Sushi Bar &amp; Grill" title="Fuji Sushi Bar &amp; Grill" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(29px, -60px); z-index: -60; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8403567,-79.8555168" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Fuji Sushi Bar &amp; Grill" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Amalfi's Italian Restaurant" title="Amalfi's Italian Restaurant" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(32px, -56px); z-index: -56; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8393079,-79.854356" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Amalfi's Italian Restaurant" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Chik-Fil-A" title="Chik-Fil-A" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(28px, -66px); z-index: -66; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8420234,-79.8559943" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Chik-Fil-A" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="McAlister's Deli" title="McAlister's Deli" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(30px, -64px); z-index: -64; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.841572,-79.855324" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="McAlister's Deli" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Rio Chico Mexican Restaurant" title="Rio Chico Mexican Restaurant" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(34px, -64px); z-index: -64; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8414179,-79.8538569" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Rio Chico Mexican Restaurant" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="The Wine Bar" title="The Wine Bar" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(34px, -65px); z-index: -65; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.841671,-79.85379" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="The Wine Bar" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Hutto Seafood Kitchen" title="Hutto Seafood Kitchen" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(31px, -69px); z-index: -69; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8430127,-79.8549817" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Hutto Seafood Kitchen" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="All American Sports Bar" title="All American Sports Bar" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(33px, -69px); z-index: -69; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8430944,-79.8540784" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="All American Sports Bar" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Bamboo Garden Restaurant" title="Bamboo Garden Restaurant" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(33px, -71px); z-index: -71; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8434294,-79.8540498" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Bamboo Garden Restaurant" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="SeeWee Restaurant" title="SeeWee Restaurant" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(89px, -21px); z-index: -21; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.829123,-79.8349483" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="SeeWee Restaurant" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Burtons Bar and Grill" title="Burtons Bar and Grill" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(101px, -26px); z-index: -26; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8306966,-79.8308407" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Burtons Bar and Grill" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Ye Olde Fashion" title="Ye Olde Fashion" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(104px, -29px); z-index: -29; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8315348,-79.8299087" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Ye Olde Fashion" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Basil Thai" title="Basil Thai" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(139px, 6px); z-index: 6; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8213063,-79.8176758" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Basil Thai" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Crave Kitchen &amp; Cocktails" title="Crave Kitchen &amp; Cocktails" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(140px, 3px); z-index: 3; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.822333,-79.8173879" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Crave Kitchen &amp; Cocktails" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="SOL Mt. Pleasant" title="SOL Mt. Pleasant" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(127px, -47px); z-index: -47; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8365643,-79.8217315" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="SOL Mt. Pleasant" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Sena Cafe" title="Sena Cafe" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(143px, -53px); z-index: -53; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8384893,-79.8164855" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Sena Cafe" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Abbracci" title="Abbracci" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(211px, -135px); z-index: -135; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.862059,-79.793122" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Abbracci" style="max-width: none;"></div></gmp-advanced-marker><gmp-advanced-marker aria-label="Mellow Mushroom" title="Mellow Mushroom" role="button" slot="VyEnES-internal-visible-gmp-advanced-markers" style="touch-action: pan-x pan-y; pointer-events: auto; cursor: pointer; transform: translate(-50%, -100%) translate(234px, -151px); z-index: -151; will-change: transform; position: absolute; left: 0px;" tabindex="-1" position="32.8665989,-79.7851024" class="yNHHyP-marker-view"><div><img src="http://localhost/wp-content/plugins/store-locator-plus/images/icons/bulb_azure.png" alt="Mellow Mushroom" style="max-width: none;"></div></gmp-advanced-marker></div></div><div style="position: absolute; left: 0px; top: 0px; z-index: 107; width: 100%;"></div></div></div><div class="gm-style-moc" style="z-index: 4; position: absolute; height: 100%; width: 100%; padding: 0px; border-width: 0px; margin: 0px; left: 0px; top: 0px; transition-property: opacity, display; transition-behavior: allow-discrete; opacity: 0; display: none;"><p class="gm-style-mot"></p></div></div><iframe aria-hidden="true" frameborder="0" tabindex="-1" style="z-index: -1; position: absolute; width: 100%; height: 100%; top: 0px; left: 0px; border: medium; opacity: 0;"></iframe><div style="pointer-events: none; width: 100%; height: 100%; box-sizing: border-box; position: absolute; z-index: 1000002; opacity: 0; border: 2px solid rgb(26, 115, 232);"></div><div></div><div></div><div></div><div></div><div><button draggable="false" aria-label="Toggle fullscreen view" title="Toggle fullscreen view" type="button" aria-pressed="false" class="gm-control-active gm-fullscreen-control" style="background: rgb(255, 255, 255); border: 0px; margin: 10px; padding: 0px; text-transform: none; appearance: none; position: absolute; cursor: pointer; -webkit-user-select: none; border-radius: 2px; height: 40px; width: 40px; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; overflow: hidden; top: 0px; right: 0px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2018%2018%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22M0%200v6h2V2h4V0zm16%200h-4v2h4v4h2V0zm0%2016h-4v2h6v-6h-2zM2%2012H0v6h6v-2H2z%22/%3E%3C/svg%3E" alt="" style="height: 18px; width: 18px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2018%2018%22%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22M0%200v6h2V2h4V0zm16%200h-4v2h4v4h2V0zm0%2016h-4v2h6v-6h-2zM2%2012H0v6h6v-2H2z%22/%3E%3C/svg%3E" alt="" style="height: 18px; width: 18px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2018%2018%22%3E%3Cpath%20fill%3D%22%23111%22%20d%3D%22M0%200v6h2V2h4V0zm16%200h-4v2h4v4h2V0zm0%2016h-4v2h6v-6h-2zM2%2012H0v6h6v-2H2z%22/%3E%3C/svg%3E" alt="" style="height: 18px; width: 18px;"></button></div><div></div><div></div><div></div><div></div><div><div class="gmnoprint gm-bundled-control gm-bundled-control-on-bottom" draggable="false" data-control-width="40" data-control-height="225" style="margin: 10px; -webkit-user-select: none; position: absolute; bottom: 239px; right: 40px;"><div class="gmnoprint" data-control-width="40" data-control-height="40" style="display: none; position: absolute;"><div style="background-color: rgb(255, 255, 255); box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; border-radius: 2px; width: 40px; height: 40px;"><button draggable="false" aria-label="Rotate map clockwise" title="Rotate map clockwise" type="button" class="gm-control-active" style="background: none; display: none; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: relative; cursor: pointer; -webkit-user-select: none; left: 0px; top: 0px; overflow: hidden; width: 40px; height: 40px;"><img alt="" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h24v24H0z%22/%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m12.06%209.06%204-4-4-4-1.41%201.41%201.59%201.59h-.18c-2.3%200-4.6.88-6.35%202.64-3.52%203.51-3.52%209.21%200%2012.72%201.5%201.5%203.4%202.36%205.36%202.58v-2.02c-1.44-.21-2.84-.86-3.95-1.97-2.73-2.73-2.73-7.17%200-9.9%201.37-1.37%203.16-2.05%204.95-2.05h.17l-1.59%201.59zm8.94%203c-.19-1.74-.88-3.32-1.91-4.61l-1.43%201.43c.69.92%201.15%202%201.32%203.18zm-7.94%207.92V22c1.74-.19%203.32-.88%204.61-1.91l-1.43-1.43c-.91.68-2%201.15-3.18%201.32m4.6-2.74%201.43%201.43c1.04-1.29%201.72-2.88%201.91-4.61h-2.02c-.17%201.18-.64%202.27-1.32%203.18%22/%3E%3C/svg%3E" style="width: 20px; height: 20px;"><img alt="" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h24v24H0z%22/%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22m12.06%209.06%204-4-4-4-1.41%201.41%201.59%201.59h-.18c-2.3%200-4.6.88-6.35%202.64-3.52%203.51-3.52%209.21%200%2012.72%201.5%201.5%203.4%202.36%205.36%202.58v-2.02c-1.44-.21-2.84-.86-3.95-1.97-2.73-2.73-2.73-7.17%200-9.9%201.37-1.37%203.16-2.05%204.95-2.05h.17l-1.59%201.59zm8.94%203c-.19-1.74-.88-3.32-1.91-4.61l-1.43%201.43c.69.92%201.15%202%201.32%203.18zm-7.94%207.92V22c1.74-.19%203.32-.88%204.61-1.91l-1.43-1.43c-.91.68-2%201.15-3.18%201.32m4.6-2.74%201.43%201.43c1.04-1.29%201.72-2.88%201.91-4.61h-2.02c-.17%201.18-.64%202.27-1.32%203.18%22/%3E%3C/svg%3E" style="width: 20px; height: 20px;"><img alt="" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h24v24H0z%22/%3E%3Cpath%20fill%3D%22%23111%22%20d%3D%22m12.06%209.06%204-4-4-4-1.41%201.41%201.59%201.59h-.18c-2.3%200-4.6.88-6.35%202.64-3.52%203.51-3.52%209.21%200%2012.72%201.5%201.5%203.4%202.36%205.36%202.58v-2.02c-1.44-.21-2.84-.86-3.95-1.97-2.73-2.73-2.73-7.17%200-9.9%201.37-1.37%203.16-2.05%204.95-2.05h.17l-1.59%201.59zm8.94%203c-.19-1.74-.88-3.32-1.91-4.61l-1.43%201.43c.69.92%201.15%202%201.32%203.18zm-7.94%207.92V22c1.74-.19%203.32-.88%204.61-1.91l-1.43-1.43c-.91.68-2%201.15-3.18%201.32m4.6-2.74%201.43%201.43c1.04-1.29%201.72-2.88%201.91-4.61h-2.02c-.17%201.18-.64%202.27-1.32%203.18%22/%3E%3C/svg%3E" style="width: 20px; height: 20px;"></button><div style="position: relative; overflow: hidden; width: 30px; height: 1px; margin: 0px 5px; background-color: rgb(230, 230, 230); display: none;"></div><button draggable="false" aria-label="Rotate map counterclockwise" title="Rotate map counterclockwise" type="button" class="gm-control-active" style="background: none; display: none; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: relative; cursor: pointer; -webkit-user-select: none; left: 0px; top: 0px; overflow: hidden; width: 40px; height: 40px; transform: scaleX(-1);"><img alt="" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h24v24H0z%22/%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m12.06%209.06%204-4-4-4-1.41%201.41%201.59%201.59h-.18c-2.3%200-4.6.88-6.35%202.64-3.52%203.51-3.52%209.21%200%2012.72%201.5%201.5%203.4%202.36%205.36%202.58v-2.02c-1.44-.21-2.84-.86-3.95-1.97-2.73-2.73-2.73-7.17%200-9.9%201.37-1.37%203.16-2.05%204.95-2.05h.17l-1.59%201.59zm8.94%203c-.19-1.74-.88-3.32-1.91-4.61l-1.43%201.43c.69.92%201.15%202%201.32%203.18zm-7.94%207.92V22c1.74-.19%203.32-.88%204.61-1.91l-1.43-1.43c-.91.68-2%201.15-3.18%201.32m4.6-2.74%201.43%201.43c1.04-1.29%201.72-2.88%201.91-4.61h-2.02c-.17%201.18-.64%202.27-1.32%203.18%22/%3E%3C/svg%3E" style="width: 20px; height: 20px;"><img alt="" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h24v24H0z%22/%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22m12.06%209.06%204-4-4-4-1.41%201.41%201.59%201.59h-.18c-2.3%200-4.6.88-6.35%202.64-3.52%203.51-3.52%209.21%200%2012.72%201.5%201.5%203.4%202.36%205.36%202.58v-2.02c-1.44-.21-2.84-.86-3.95-1.97-2.73-2.73-2.73-7.17%200-9.9%201.37-1.37%203.16-2.05%204.95-2.05h.17l-1.59%201.59zm8.94%203c-.19-1.74-.88-3.32-1.91-4.61l-1.43%201.43c.69.92%201.15%202%201.32%203.18zm-7.94%207.92V22c1.74-.19%203.32-.88%204.61-1.91l-1.43-1.43c-.91.68-2%201.15-3.18%201.32m4.6-2.74%201.43%201.43c1.04-1.29%201.72-2.88%201.91-4.61h-2.02c-.17%201.18-.64%202.27-1.32%203.18%22/%3E%3C/svg%3E" style="width: 20px; height: 20px;"><img alt="" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h24v24H0z%22/%3E%3Cpath%20fill%3D%22%23111%22%20d%3D%22m12.06%209.06%204-4-4-4-1.41%201.41%201.59%201.59h-.18c-2.3%200-4.6.88-6.35%202.64-3.52%203.51-3.52%209.21%200%2012.72%201.5%201.5%203.4%202.36%205.36%202.58v-2.02c-1.44-.21-2.84-.86-3.95-1.97-2.73-2.73-2.73-7.17%200-9.9%201.37-1.37%203.16-2.05%204.95-2.05h.17l-1.59%201.59zm8.94%203c-.19-1.74-.88-3.32-1.91-4.61l-1.43%201.43c.69.92%201.15%202%201.32%203.18zm-7.94%207.92V22c1.74-.19%203.32-.88%204.61-1.91l-1.43-1.43c-.91.68-2%201.15-3.18%201.32m4.6-2.74%201.43%201.43c1.04-1.29%201.72-2.88%201.91-4.61h-2.02c-.17%201.18-.64%202.27-1.32%203.18%22/%3E%3C/svg%3E" style="width: 20px; height: 20px;"></button><div style="position: relative; overflow: hidden; width: 30px; height: 1px; margin: 0px 5px; background-color: rgb(230, 230, 230); display: none;"></div><button draggable="false" aria-label="Tilt map" title="Tilt map" type="button" class="gm-tilt gm-control-active" style="background: none; display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: relative; cursor: pointer; -webkit-user-select: none; top: 0px; left: 0px; overflow: hidden; width: 40px; height: 40px;"><img alt="" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2018%2016%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22M0%2016h8V9H0zm10%200h8V9h-8zM0%207h8V0H0zm10-7v7h8V0z%22/%3E%3C/svg%3E" style="width: 18px;"><img alt="" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2018%2016%22%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22M0%2016h8V9H0zm10%200h8V9h-8zM0%207h8V0H0zm10-7v7h8V0z%22/%3E%3C/svg%3E" style="width: 18px;"><img alt="" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2018%2016%22%3E%3Cpath%20fill%3D%22%23111%22%20d%3D%22M0%2016h8V9H0zm10%200h8V9h-8zM0%207h8V0H0zm10-7v7h8V0z%22/%3E%3C/svg%3E" style="width: 18px;"></button></div></div><gmp-internal-camera-control data-control-width="40" data-control-height="40" draggable="false" class="gmnoprint" style="position: absolute; cursor: pointer; -webkit-user-select: none; left: 0px; top: 0px;"><button draggable="false" aria-label="Map camera controls" title="Map camera controls" type="button" class="gm-control-active" aria-expanded="false" aria-controls="A9E47EA0-A67B-492C-B7AA-C024575B0326" style="background: 6px center / 28px auto no-repeat rgb(255, 255, 255); display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: relative; cursor: pointer; -webkit-user-select: none; width: 40px; height: 40px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m12%2019.175%202.125-2.125%201.425%201.4L12%2022l-3.55-3.55%201.425-1.4zM4.825%2012l2.125%202.125-1.4%201.425L2%2012l3.55-3.55%201.4%201.425zm14.35%200L17.05%209.875l1.4-1.425L22%2012l-3.55%203.55-1.4-1.425zM12%204.825%209.875%206.95%208.45%205.55%2012%202l3.55%203.55-1.425%201.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m12%2019.175%202.125-2.125%201.425%201.4L12%2022l-3.55-3.55%201.425-1.4zM4.825%2012l2.125%202.125-1.4%201.425L2%2012l3.55-3.55%201.4%201.425zm14.35%200L17.05%209.875l1.4-1.425L22%2012l-3.55%203.55-1.4-1.425zM12%204.825%209.875%206.95%208.45%205.55%2012%202l3.55%203.55-1.425%201.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%231a73e8%22%20d%3D%22m12%2019.175%202.125-2.125%201.425%201.4L12%2022l-3.55-3.55%201.425-1.4zM4.825%2012l2.125%202.125-1.4%201.425L2%2012l3.55-3.55%201.4%201.425zm14.35%200L17.05%209.875l1.4-1.425L22%2012l-3.55%203.55-1.4-1.425zM12%204.825%209.875%206.95%208.45%205.55%2012%202l3.55%203.55-1.425%201.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23d1d1d1%22%20d%3D%22m12%2019.175%202.125-2.125%201.425%201.4L12%2022l-3.55-3.55%201.425-1.4zM4.825%2012l2.125%202.125-1.4%201.425L2%2012l3.55-3.55%201.4%201.425zm14.35%200L17.05%209.875l1.4-1.425L22%2012l-3.55%203.55-1.4-1.425zM12%204.825%209.875%206.95%208.45%205.55%2012%202l3.55%203.55-1.425%201.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"></button><menu id="A9E47EA0-A67B-492C-B7AA-C024575B0326" style="list-style: none; padding: 0px; display: none; position: absolute; z-index: 999999; margin: 10px; width: 140px; height: 140px; right: 100%; top: -60px;"><li><button draggable="false" aria-label="Move up" title="Move up" type="button" class="gm-control-active" style="background: 6px center / 28px auto no-repeat rgb(255, 255, 255); display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: absolute; cursor: pointer; -webkit-user-select: none; width: 40px; height: 40px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; top: 0px; left: 50%; transform: translateX(-50%);"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m12%2010.8-4.6%204.6L6%2014l6-6%206%206-1.4%201.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22m12%2010.8-4.6%204.6L6%2014l6-6%206%206-1.4%201.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m12%2010.8-4.6%204.6L6%2014l6-6%206%206-1.4%201.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23d1d1d1%22%20d%3D%22m12%2010.8-4.6%204.6L6%2014l6-6%206%206-1.4%201.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"></button></li><li><button draggable="false" aria-label="Move left" title="Move left" type="button" class="gm-control-active" style="background: 6px center / 28px auto no-repeat rgb(255, 255, 255); display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: absolute; cursor: pointer; -webkit-user-select: none; width: 40px; height: 40px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; bottom: 50%; left: 0px; transform: translateY(50%);"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m14%2018-6-6%206-6%201.4%201.4-4.6%204.6%204.6%204.6z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22m14%2018-6-6%206-6%201.4%201.4-4.6%204.6%204.6%204.6z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m14%2018-6-6%206-6%201.4%201.4-4.6%204.6%204.6%204.6z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23d1d1d1%22%20d%3D%22m14%2018-6-6%206-6%201.4%201.4-4.6%204.6%204.6%204.6z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"></button></li><li><button draggable="false" aria-label="Move right" title="Move right" type="button" class="gm-control-active" style="background: 6px center / 28px auto no-repeat rgb(255, 255, 255); display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: absolute; cursor: pointer; -webkit-user-select: none; width: 40px; height: 40px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; bottom: 50%; right: 0px; transform: translateY(50%);"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22M12.6%2012%208%207.4%209.4%206l6%206-6%206L8%2016.6z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22M12.6%2012%208%207.4%209.4%206l6%206-6%206L8%2016.6z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22M12.6%2012%208%207.4%209.4%206l6%206-6%206L8%2016.6z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23d1d1d1%22%20d%3D%22M12.6%2012%208%207.4%209.4%206l6%206-6%206L8%2016.6z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"></button></li><li><button draggable="false" aria-label="Move down" title="Move down" type="button" class="gm-control-active" style="background: 6px center / 28px auto no-repeat rgb(255, 255, 255); display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: absolute; cursor: pointer; -webkit-user-select: none; width: 40px; height: 40px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; bottom: 0px; left: 50%; transform: translateX(-50%);"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m12%2015.4-6-6L7.4%208l4.6%204.6L16.6%208%2018%209.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22m12%2015.4-6-6L7.4%208l4.6%204.6L16.6%208%2018%209.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m12%2015.4-6-6L7.4%208l4.6%204.6L16.6%208%2018%209.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m12%2015.4-6-6L7.4%208l4.6%204.6L16.6%208%2018%209.4z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"></button></li><li><button draggable="false" aria-label="Zoom in" title="Zoom in" type="button" class="gm-control-active" style="background: 6px center / 28px auto no-repeat rgb(255, 255, 255); display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: absolute; cursor: pointer; -webkit-user-select: none; overflow: hidden; width: 40px; height: 40px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; top: 0px; right: 0px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23666%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M440-440H200v-80h240v-240h80v240h240v80H520v240h-80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23333%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M440-440H200v-80h240v-240h80v240h240v80H520v240h-80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23111%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M440-440H200v-80h240v-240h80v240h240v80H520v240h-80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23d1d1d1%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M440-440H200v-80h240v-240h80v240h240v80H520v240h-80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"></button></li><li><button draggable="false" aria-label="Zoom out" title="Zoom out" type="button" class="gm-control-active" style="background: 6px center / 28px auto no-repeat rgb(255, 255, 255); display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: absolute; cursor: pointer; -webkit-user-select: none; overflow: hidden; width: 40px; height: 40px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; bottom: 0px; right: 0px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23666%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M200-440v-80h560v80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23333%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M200-440v-80h560v80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23111%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M200-440v-80h560v80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23d1d1d1%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M200-440v-80h560v80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"></button></li></menu></gmp-internal-camera-control><button draggable="false" aria-label="Drag Pegman onto the map to open Street View" title="Drag Pegman onto the map to open Street View" type="button" class="gm-svpc" dir="ltr" data-control-width="40" data-control-height="40" style="background: rgb(255, 255, 255); border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: absolute; cursor: pointer; -webkit-user-select: none; --pegman-scaleX: 1; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; border-radius: 2px; width: 40px; height: 40px; left: 0px; top: 72px;"><div style="position: absolute; left: 50%; top: 50%; transform: scaleX(var(--pegman-scaleX));"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2023%2038%22%3E%3Cpath%20d%3D%22M16.6%2038.1h-5.5l-.2-2.9-.2%202.9H5.2L5%2025.3l-.8%202a1.53%201.53%200%2001-1.9.9l-1.2-.4a1.58%201.58%200%2001-1-1.9v-.1c.3-.9%203.1-11.2%203.1-11.2a2.66%202.66%200%20012.3-2l.6-.5a6.93%206.93%200%20014.7-12%206.8%206.8%200%20014.9%202%207%207%200%20012%204.9%206.65%206.65%200%2001-2.2%205l.7.5a2.78%202.78%200%20012.4%202s2.9%2011.2%202.9%2011.3a1.53%201.53%200%2001-.9%201.9l-1.3.4a1.63%201.63%200%2001-1.9-.9l-.7-1.8zm-3.6-2h1.7l.2-15.8%201.9-.3%202.4%206.3.3-.1c-.2-.8-.8-3.2-2.8-10.9a.63.63%200%2000-.6-.5h-.6l-1.1-.9h-1.9l-.3-2a4.83%204.83%200%20003.5-4.7A4.78%204.78%200%200011%202.3h-.2a4.9%204.9%200%2000-1.4%209.6l-.3%202H7.2l-1%20.9h-.6a.74.74%200%2000-.6.5c-2%207.5-2.7%2010-3%2010.9l.3.1L4.8%2020l1.9.3.2%2015.8h1.6l.6-8.4a1.52%201.52%200%20011.5-1.4%201.5%201.5%200%20011.5%201.4zm6.6-9.7%22%20style%3D%22isolation%3Aisolate%22%20fill%3D%22%23333%22%20opacity%3D%22.7%22/%3E%3Cpath%20d%3D%22m5.9%2013.6%201.1-.9h7.8l1.2.9%22%20fill%3D%22%23ce592c%22/%3E%3Cellipse%20cx%3D%2210.9%22%20cy%3D%2213.1%22%20rx%3D%222.7%22%20ry%3D%22.3%22%20style%3D%22isolation%3Aisolate%22%20fill%3D%22%23ce592c%22%20opacity%3D%22.5%22/%3E%3Cpath%20d%3D%22m20.6%2026.1-2.9-11.3a1.71%201.71%200%2000-1.6-1.2H5.7a1.69%201.69%200%2000-1.5%201.3L1.1%2026.2a.61.61%200%2000.3.7l1.1.4a.61.61%200%2000.7-.3l2.7-6.7.2%2016.8h3.6l.6-9.3a.47.47%200%2001.44-.5h.06c.4%200%20.4.2.5.5l.6%209.3h3.6l.2-16.8%202.5%206.6a.52.52%200%2000.66.31l1.2-.40000000000001a.57.57%200%2000.5-.7Z%22%20fill%3D%22%23fdbf2d%22/%3E%3Cpath%20d%3D%22m7%2013.6%203.9%206.7%203.9-6.7%22%20style%3D%22isolation%3Aisolate%22%20fill%3D%22%23cf572e%22%20opacity%3D%22.6%22/%3E%3Ccircle%20cx%3D%2210.9%22%20cy%3D%227%22%20r%3D%225.9%22%20fill%3D%22%23fdbf2d%22/%3E%3C/svg%3E" alt="Street View Pegman Control" style="height: 30px; width: 30px; position: absolute; transform: translate(-50%, -50%); pointer-events: none;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2038%22%3E%3Cpath%20d%3D%22m22%2026.6-2.9-11.3a2.78%202.78%200%2000-2.4-2l-.7-.5a6.82%206.82%200%20002.2-5%206.9%206.9%200%2000-13.8%200%207%207%200%20002.2%205.1l-.6.5a2.55%202.55%200%2000-2.3%202s-3%2011.1-3%2011.2v.1a1.58%201.58%200%20001%201.9l1.2.4a1.63%201.63%200%20001.9-.9l.8-2%20.2%2012.8h11.3l.2-12.6.7%201.8a1.54%201.54%200%20001.5%201%201.09%201.09%200%2000.5-.1l1.3-.4a1.85%201.85%200%2000.7-2Zm-1.2.9-1.2.4a.61.61%200%2001-.7-.3L16.4%2021l-.2%2016.8H6.8L6.6%2021l-2.7%206.7a.52.52%200%2001-.66.31l-1.1-.4a.52.52%200%2001-.31-.66l3.1-11.3a1.69%201.69%200%20011.5-1.3h.2l1-.9h2.3a5.9%205.9%200%20113.2%200h2.3l1.1.9h.2a1.71%201.71%200%20011.6%201.2l2.9%2011.3a.84.84%200%2001-.4.7Z%22%20fill%3D%22%23333%22%20fill-opacity%3D%22.2%22/%3E%26quot%3B%3C/svg%3E" alt="Pegman is on top of the Map" style="height: 30px; width: 30px; position: absolute; transform: translate(-50%, -50%); pointer-events: none; display: none;"><img alt="Street View Pegman Control" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2040%2050%22%3E%3Cpath%20d%3D%22m34-30.4-2.9-11.3a2.78%202.78%200%2000-2.4-2l-.7-.5a6.82%206.82%200%20002.2-5%206.9%206.9%200%2000-13.8%200%207%207%200%20002.2%205.1l-.6.5a2.55%202.55%200%2000-2.3%202s-3%2011.1-3%2011.2v.1a1.58%201.58%200%20001%201.9l1.2.4a1.63%201.63%200%20001.9-.9l.8-2%20.2%2012.8h11.3l.2-12.6.7%201.8a1.54%201.54%200%20001.5%201%201.09%201.09%200%2000.5-.1l1.3-.4a1.85%201.85%200%2000.7-2Zm-1.2.9-1.2.4a.61.61%200%2001-.7-.3L28.4-36l-.2%2016.8h-9.4L18.6-36l-2.7%206.7a.52.52%200%2001-.66.31l-1.1-.4a.52.52%200%2001-.31-.66l3.1-11.3a1.69%201.69%200%20011.5-1.3h.2l1-.9h2.3a5.9%205.9%200%20113.2%200h2.3l1.1.9h.2a1.71%201.71%200%20011.6%201.2l2.9%2011.3a.84.84%200%2001-.4.7ZM34%2029.6l-2.9-11.3a2.78%202.78%200%2000-2.4-2l-.7-.5a6.82%206.82%200%20002.2-5%206.9%206.9%200%2000-13.8%200%207%207%200%20002.2%205.1l-.6.5a2.55%202.55%200%2000-2.3%202s-3%2011.1-3%2011.2v.1a1.58%201.58%200%20001%201.9l1.2.4a1.63%201.63%200%20001.9-.9l.8-2%20.2%2012.8h11.3l.2-12.6.7%201.8a1.54%201.54%200%20001.5%201%201.09%201.09%200%2000.5-.1l1.3-.4a1.85%201.85%200%2000.7-2Zm-1.2.9-1.2.4a.61.61%200%2001-.7-.3L28.4%2024l-.2%2016.8h-9.4L18.6%2024l-2.7%206.7a.52.52%200%2001-.66.31l-1.1-.4a.52.52%200%2001-.31-.66l3.1-11.3a1.69%201.69%200%20011.5-1.3h.2l1-.9h2.3a5.9%205.9%200%20113.2%200h2.3l1.1.9h.2a1.71%201.71%200%20011.6%201.2l2.9%2011.3a.84.84%200%2001-.4.7Z%22%20fill%3D%22%23333%22%20fill-opacity%3D%22.2%22/%3E%3Cpath%20d%3D%22M15.4%2038.8h-4a1.64%201.64%200%2001-1.4-1.1l-3.1-8a.9.9%200%2001-.5.1l-1.4.1a1.62%201.62%200%2001-1.6-1.4L2.3%2015.4l1.6-1.3a6.87%206.87%200%2001-3-4.6A7.14%207.14%200%20012%204%207.6%207.6%200%20016.7.9%207.14%207.14%200%200112.2%202a7.28%207.28%200%20012.3%209.6l2.1-.1.1%201c0%20.2.1.5.1.8a2.41%202.41%200%20011%201s1.9%203.2%202.8%204.9c.7%201.2%202.1%204.2%202.8%205.9a2.1%202.1%200%2001-.8%202.6l-.6.4a1.63%201.63%200%2001-1.5.2l-.6-.3a8.93%208.93%200%2000.5%201.3%207.91%207.91%200%20001.8%202.6l.6.3v4.6l-4.5-.1a7.32%207.32%200%2001-2.5-1.5zm-10-19.2%203.5%209.8%202.9%207.5h1.6V35l-1.9-9.4%203.1%205.4a8.24%208.24%200%20003.8%203.8h2.1v-1.4a14%2014%200%2001-2.2-3.1%2044.55%2044.55%200%2001-2.2-8L14.8%2016l3.2%205.6c.6%201.1%202.1%203.6%202.8%204.9l.6-.4c-.8-1.6-2.1-4.6-2.8-5.8-.9-1.7-2.8-4.9-2.8-4.9a.54.54%200%2000-.4-.3l-.7-.1-.1-.7a4.33%204.33%200%2000-.1-.5l-5.3.3%202.2-1.9a4.3%204.3%200%2000.9-1%205.17%205.17%200%2000.8-4%205.67%205.67%200%2000-2.2-3.4%205.09%205.09%200%2000-4-.8%205.67%205.67%200%2000-3.4%202.2%205.17%205.17%200%2000-.8%204%205.67%205.67%200%20002.2%203.4%203.13%203.13%200%20001%20.5l1.6.6-3.2%202.6%201%2011.5h.4z%22%20fill%3D%22%23333%22/%3E%3Cpath%20d%3D%22m3.35%2015.9%201.1%2012.5a.39.39%200%2000.36.42h.14l1.4-.1a.66.66%200%2000.5-.4l-.2-3.8-3.3-8.6Z%22%20fill%3D%22%23fdbf2d%22/%3E%3Cpath%20d%3D%22m5.2%2028.8%201.1-.1a.66.66%200%2000.5-.4l-.2-3.8-1.2-3.1Z%22%20fill%3D%22%23ce592b%22%20fill-opacity%3D%22.25%22/%3E%3Cpath%20d%3D%22m21.4%2035.70000000000001-3.8-1.2-2.7-7.8L12%2015.5l3.4-2.9c.2%202.4%202.2%2014.1%203.7%2017.1%200%200%201.3%202.6%202.3%203.1zM13%2027.6l-2-.3%202.5%2010.1.9.4v-2.9%22%20fill%3D%22%23e5892b%22/%3E%3Cpath%20d%3D%22M17.8%2025.4c-.4-1.5-.7-3.1-1.1-4.8-.1-.4-.1-.7-.2-1.1l-1.1-2-1.7-1.6s.9%205%202.4%207.1a19.12%2019.12%200%20001.7%202.4Z%22%20style%3D%22isolation%3Aisolate%22%20fill%3D%22%23cf572e%22%20opacity%3D%22.6%22/%3E%3Cpath%20d%3D%22M14.4%2037.8h-3a.43.43%200%2001-.4-.4l-3-7.8-1.7-4.8-3-9%208.9-.4s2.9%2011.3%204.3%2014.4c1.9%204.1%203.1%204.7%205%205.8h-3.2s-4.1-1.2-5.9-7.7a.59.59%200%2000-.6-.4.62.62%200%2000-.3.7s.5%202.4.9%203.6a34.87%2034.87%200%20002%206%22%20fill%3D%22%23fdbf2d%22/%3E%3Cpath%20d%3D%22m15.4%2012.7-3.3%202.9-8.9.4%203.3-2.7%22%20fill%3D%22%23ce592b%22/%3E%3Cpath%20d%3D%22m9.1%2021.1%201.4-6.2-5.9.5%22%20style%3D%22isolation%3Aisolate%22%20fill%3D%22%23cf572e%22%20opacity%3D%22.6%22/%3E%3Cpath%20d%3D%22M12%2013.5a4.75%204.75%200%2001-2.6%201.1c-1.5.3-2.9.2-2.9%200s1.1-.6%202.7-1%22%20fill%3D%22%23bb3d19%22/%3E%3Ccircle%20cx%3D%227.92%22%20cy%3D%228.19%22%20r%3D%226.3%22%20fill%3D%22%23fdbf2d%22/%3E%3Cpath%20d%3D%22M4.7%2013.6a6.21%206.21%200%20008.4-1.9v-.1a8.89%208.89%200%2001-8.4%202%22%20fill%3D%22%23ce592b%22%20fill-opacity%3D%22.25%22/%3E%3Cpath%20d%3D%22m21.2%2027.2.6-.4a1.09%201.09%200%2000.4-1.3c-.7-1.5-2.1-4.6-2.8-5.8-.9-1.7-2.8-4.9-2.8-4.9a1.6%201.6%200%2000-2.17-.65l-.23.15a1.68%201.68%200%2000-.4%202.1s2.3%203.9%203.1%205.3c.6%201%202.1%203.7%202.9%205.1a.94.94%200%20001.24.49z%22%20fill%3D%22%23fdbf2d%22/%3E%3Cpath%20d%3D%22M19.4%2019.8c-.9-1.7-2.8-4.9-2.8-4.9a1.6%201.6%200%2000-2.17-.65l-.23.15-.3.3c1.1%201.5%202.9%203.8%203.9%205.4%201.1%201.8%202.9%205%203.8%206.7l.1-.1a1.09%201.09%200%2000.4-1.3%2057.67%2057.67%200%2000-2.7-5.6Z%22%20fill%3D%22%23ce592b%22%20fill-opacity%3D%22.25%22/%3E%3C/svg%3E" style="display: none; height: 40px; width: 40px; position: absolute; transform: translate(-60%, -45%); pointer-events: none;"></div></button><div class="gmnoprint" data-control-width="40" data-control-height="81" style="position: absolute; left: 0px; top: 144px;"><div draggable="false" style="-webkit-user-select: none; box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px; border-radius: 2px; cursor: pointer; background-color: rgb(255, 255, 255); width: 40px; height: 81px;"><button draggable="false" aria-label="Zoom in" title="Zoom in" type="button" class="gm-control-active" style="background: rgb(255, 255, 255); display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: relative; cursor: pointer; -webkit-user-select: none; overflow: hidden; width: 40px; height: 40px; top: 0px; left: 0px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23666%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M440-440H200v-80h240v-240h80v240h240v80H520v240h-80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23333%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M440-440H200v-80h240v-240h80v240h240v80H520v240h-80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23111%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M440-440H200v-80h240v-240h80v240h240v80H520v240h-80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23d1d1d1%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M440-440H200v-80h240v-240h80v240h240v80H520v240h-80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"></button><div style="position: relative; overflow: hidden; width: 30px; height: 1px; margin: 0px 5px; background-color: rgb(230, 230, 230); top: 0px;"></div><button draggable="false" aria-label="Zoom out" title="Zoom out" type="button" class="gm-control-active" style="background: rgb(255, 255, 255); display: block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: relative; cursor: pointer; -webkit-user-select: none; overflow: hidden; width: 40px; height: 40px; top: 0px; left: 0px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23666%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M200-440v-80h560v80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23333%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M200-440v-80h560v80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23111%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M200-440v-80h560v80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22%23d1d1d1%22%20viewBox%3D%220%20-960%20960%20960%22%3E%3Cpath%20d%3D%22M200-440v-80h560v80z%22/%3E%3C/svg%3E" alt="" style="height: 28px; width: 28px;"></button></div></div></div></div><div><div style="margin: 0px 5px; z-index: 1000000; position: absolute; left: 0px; bottom: 0px;"><a target="_blank" rel="noopener" title="Open this area in Google Maps (opens a new window)" aria-label="Open this area in Google Maps (opens a new window)" href="https://maps.google.com/maps?ll=32.823047,-79.865392&amp;z=12&amp;t=m&amp;hl=en&amp;gl=US&amp;mapclient=apiv3" style="display: inline;"><div style="width: 66px; height: 26px;"><img alt="Google" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2069%2029%22%3E%3Cg%20fill%3D%22%23fff%22%20stroke%3D%22%23fff%22%20stroke-width%3D%221.5%22%20opacity%3D%22.6%22%3E%3Cpath%20d%3D%22m17.4706%207.33616.5412-.54112-.5519-.53011c-1.3636-1.30974-3.2017-2.31971-5.7591-2.31971-4.6137%200-8.50262%203.75517-8.50262%208.39578%200%204.6407%203.88892%208.3958%208.50262%208.3958%202.4704%200%204.3765-.8188%205.8732-2.3679%201.5695-1.5729%202.0216-3.7363%202.0216-5.4119%200-.5232-.044-1.0254-.1295-1.4529l-.1206-.6029h-8.3947v3.5942h4.8301c-.1724.5966-.4321%201.0286-.7491%201.3461-.6288.6214-1.5823%201.3094-3.331%201.3094-2.65245%200-4.73598-2.1312-4.73598-4.8099%200-2.67861%202.08353-4.80981%204.73598-4.80981%201.4362%200%202.4752.5607%203.257%201.29229l.5298.49574.513-.51303z%22/%3E%3Cpath%20d%3D%22M24.8656%2020.7286c3.089%200%205.6036-2.4192%205.6036-5.6692%200-3.2681-2.5162-5.66929-5.6036-5.66929-3.0873%200-5.6035%202.40119-5.6035%205.66929%200%203.25%202.5145%205.6692%205.6035%205.6692Zm0-7.9004c1.014%200%201.9766.837%201.9766%202.2312%200%201.3805-.9653%202.2311-1.9766%202.2311-1.0099%200-1.9765-.8574-1.9765-2.2311%200-1.3874.9639-2.2312%201.9765-2.2312Z%22/%3E%3Cpath%20d%3D%22M35.7511%2017.2905h-.0042c-1.0099%200-1.9766-.8574-1.9766-2.2311%200-1.3874.964-2.2312%201.9766-2.2312%201.0139%200%201.9765.837%201.9765%202.2312%200%201.3845-.968%202.2368-1.9723%202.2311Zm-.0124%203.4381c3.089%200%205.6035-2.4192%205.6035-5.6692%200-3.2681-2.5162-5.66929-5.6035-5.66929-3.0874%200-5.6036%202.40119-5.6036%205.66929%200%203.2508%202.5236%205.6692%205.6036%205.6692Z%22/%3E%3Cpath%20d%3D%22M51.953%2010.4357v-.74997h-3.5531v.12253c-.55-.26178-1.2022-.42639-1.9191-.42639-2.8837%200-5.464%202.51793-5.464%205.69393%200%202.1269%201.164%203.9479%202.8033%204.9137l-.0658.0273-1.8806.7802-.6929.2874.2876.6928c.6228%201.5004%202.2776%203.3697%205.0535%203.3697%201.4105%200%202.787-.4145%203.814-1.4093%201.0332-1.0009%201.6171-2.4965%201.6171-4.4653zm-7.2194%209.9844-.0002-.0005c.5552.2005%201.1446.309%201.7474.309.6808%200%201.3058-.1467%201.841-.3891-.0876.3891-.2417.671-.4252.8682-.2812.3022-.7202.5011-1.3747.5011-.91190000000001%200-1.5201-.6476-1.7883-1.2887Zm1.9361-7.5919c.9722%200%201.878.8483%201.878%202.2558%200%201.3796-.8956%202.2147-1.878%202.2147-1.0428%200-1.993-.8738-1.993-2.2147%200-1.3754.9595-2.2558%201.993-2.2558Zm9.069-7.60737v-.75h-3.6599V20.4412h3.6599z%22/%3E%3Cpath%20d%3D%22m63.9128%2016.0614-.6183-.4122-.4179.6145c-.4562.6709-1.0102%201.0432-1.8025%201.0432-.4306%200-.7595-.0981-1.0197-.2622-.07-.0441-.1383-.0951-.2046-.1536l5.6999-2.3625.6825-.283L65.9596%2013.5589l-.219-.5514c-.4528-1.2075-1.8899-3.60918-4.9128-3.60918-2.9833%200-5.3244%202.36358-5.3244%205.66928%200%203.1475%202.3222%205.6693%205.5625%205.6693%202.6043%200%204.1111-1.5991%204.7283-2.5156l.421-.625L65.5882%2017.1783zm-2.5667-3.2103-1.9353.8015c.3795-.5743%201.0107-.8572%201.4909-.8572.1653%200%20.3136.0207.4444.0557Z%22/%3E%3C/g%3E%3Cpath%20fill%3D%22%234285f4%22%20d%3D%22M11.7008%2019.9868c-4.21304%200-7.75262-3.4328-7.75262-7.6458%200-4.21297%203.53958-7.64578%207.75262-7.64578%202.3323%200%203.9912.91159%205.2395%202.11061l-1.47%201.47003c-.8952-.83767-2.1106-1.49467-3.7695-1.49467-3.07972%200-5.48598%202.48016-5.48598%205.55981%200%203.0797%202.40626%205.5599%205.48598%205.5599%201.9956%200%203.1289-.8048%203.8598-1.5275.5995-.5996.9855-1.4537%201.1333-2.628h-4.9931v-2.0942h7.0298c.0739.3695.115.8212.115%201.3058%200%201.5685-.427%203.5067-1.8067%204.8864-1.3469%201.3961-3.0551%202.1434-5.3381%202.1434%22/%3E%3Cpath%20fill%3D%22%23e94235%22%20d%3D%22M29.7192%2015.0594c0%202.8333-2.1763%204.9192-4.8536%204.9192-2.6772%200-4.8535-2.0859-4.8535-4.9192%200-2.8498%202.1763-4.9193%204.8535-4.9193%202.6773%200%204.8536%202.0695%204.8536%204.9193m-2.127%200c0-1.7739-1.2648-2.9812-2.7266-2.9812s-2.7265%201.2155-2.7265%202.9812c0%201.7492%201.2647%202.9811%202.7265%202.9811s2.7266-1.2237%202.7266-2.9811%22/%3E%3Cpath%20fill%3D%22%23fabb05%22%20d%3D%22M40.5922%2015.0594c0%202.8333-2.1763%204.9192-4.8535%204.9192-2.6691%200-4.8536-2.0859-4.8536-4.9192%200-2.8498%202.1763-4.9193%204.8536-4.9193%202.6772%200%204.8535%202.0695%204.8535%204.9193m-2.1188%200c0-1.7739-1.2647-2.9812-2.7265-2.9812s-2.7266%201.2155-2.7266%202.9812c0%201.7492%201.2648%202.9811%202.7266%202.9811%201.4618.0082%202.7265-1.2237%202.7265-2.9811%22/%3E%3Cpath%20fill%3D%22%234285f4%22%20d%3D%22M51.203%2010.4357v8.8366c0%203.6382-2.1435%205.1246-4.6811%205.1246-2.3899%200-3.8188-1.6014-4.3609-2.9072l1.8807-.7802c.3367.8048%201.158%201.7493%202.4802%201.7493%201.626%200%202.628-1.0101%202.628-2.8908v-.7063h-.074c-.4845.5995-1.4207%201.1169-2.5951%201.1169-2.4637%200-4.714-2.1434-4.714-4.9028%200-2.7758%202.2585-4.9439%204.714-4.9439%201.1744%200%202.1106.5256%202.5951%201.1004h.074v-.7966zm-1.9053%204.6483c0-1.7328-1.158-3.0058-2.628-3.0058-1.4947%200-2.743%201.2647-2.743%203.0058%200%201.7164%201.2483%202.9647%202.743%202.9647%201.47%200%202.628-1.2483%202.628-2.9647%22/%3E%3Cpath%20fill%3D%22%2334a853%22%20d%3D%22M54.9887%205.22083V19.6912h-2.1599V5.22083z%22/%3E%3Cpath%20fill%3D%22%23e94235%22%20d%3D%22m63.4968%2016.6854%201.6754%201.1169c-.5421.8049-1.8478%202.1846-4.1063%202.1846-2.8004%200-4.8125-2.1599-4.8125-4.9193%200-2.9237%202.0367-4.9193%204.5744-4.9193%202.554%200%203.8023%202.0285%204.213%203.129l.2217.5584-6.5782%202.7266c.501.9855%201.2894%201.4946%202.3898%201.4946%201.1005%200%201.8643-.5502%202.4227-1.3715m-5.1656-1.7739%204.4019-1.8231c-.2464-.616-.9691-1.043-1.8314-1.043-1.1005%200-2.628.9691-2.5705%202.8661%22/%3E%3C/svg%3E" draggable="false" style="position: absolute; left: 0px; top: 0px; width: 66px; height: 26px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px;"></div></a></div></div><div></div><div><div style="display: inline-flex; position: absolute; right: 0px; bottom: 0px;"><div class="gmnoprint" style="z-index: 1000001;"><div draggable="false" class="gm-style-cc" style="-webkit-user-select: none; position: relative; height: 14px; line-height: 14px;"><div style="opacity: 0.7; width: 100%; height: 100%; position: absolute;"><div style="width: 1px;"></div><div style="background-color: rgb(245, 245, 245); width: auto; height: 100%; margin-left: 1px;"></div></div><div style="position: relative; padding-right: 6px; padding-left: 6px; box-sizing: border-box; font-family: Roboto, Arial, sans-serif; font-size: 10px; color: rgb(0, 0, 0); white-space: nowrap; direction: ltr; text-align: right; vertical-align: middle; display: inline-block;"><button draggable="false" aria-label="Keyboard shortcuts" title="Keyboard shortcuts" type="button" style="background: none; display: inline-block; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: relative; cursor: pointer; -webkit-user-select: none; color: rgb(0, 0, 0); font-family: inherit; line-height: inherit;">Keyboard shortcuts</button></div></div></div><div class="gmnoprint" style="z-index: 1000001;"><div draggable="false" class="gm-style-cc" style="-webkit-user-select: none; position: relative; height: 14px; line-height: 14px;"><div style="opacity: 0.7; width: 100%; height: 100%; position: absolute;"><div style="width: 1px;"></div><div style="background-color: rgb(245, 245, 245); width: auto; height: 100%; margin-left: 1px;"></div></div><div style="position: relative; padding-right: 6px; padding-left: 6px; box-sizing: border-box; font-family: Roboto, Arial, sans-serif; font-size: 10px; color: rgb(0, 0, 0); white-space: nowrap; direction: ltr; text-align: right; vertical-align: middle; display: inline-block;"><button draggable="false" aria-label="Map Data" title="Map Data" type="button" style="background: none; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: relative; cursor: pointer; -webkit-user-select: none; color: rgb(0, 0, 0); font-family: inherit; line-height: inherit; display: none;">Map Data</button><span style="">Map data ©2026 Google</span></div></div></div><div class="gmnoscreen"><div style="font-family: Roboto, Arial, sans-serif; font-size: 11px; color: rgb(0, 0, 0); direction: ltr; text-align: right; background-color: rgb(245, 245, 245);">Map data ©2026 Google</div></div><button draggable="false" aria-label="Map Scale: 2 km per 62 pixels" title="Map Scale: 2 km per 62 pixels" type="button" class="gm-style-cc" aria-describedby="19A0EF2D-1921-43FB-87C8-507ACA5CCAB3" style="background: none; display: none; border: 0px; margin: 0px; padding: 0px; text-transform: none; appearance: none; position: relative; cursor: pointer; -webkit-user-select: none; height: 14px; line-height: 14px;"><div style="opacity: 0.7; width: 100%; height: 100%; position: absolute;"><div style="width: 1px;"></div><div style="background-color: rgb(245, 245, 245); width: auto; height: 100%; margin-left: 1px;"></div></div><div style="position: relative; padding-right: 6px; padding-left: 6px; box-sizing: border-box; font-family: Roboto, Arial, sans-serif; font-size: 10px; color: rgb(0, 0, 0); white-space: nowrap; direction: ltr; text-align: right; vertical-align: middle; display: inline-block;"><span style="color: rgb(0, 0, 0);">2 km&nbsp;</span><div style="position: relative; display: inline-block; height: 8px; bottom: -1px; width: 66px;"><div style="width: 100%; height: 4px; position: absolute; left: 0px; top: 0px;"></div><div style="width: 4px; height: 8px; left: 0px; top: 0px;"></div><div style="width: 4px; height: 8px; position: absolute; right: 0px; bottom: 0px;"></div><div style="position: absolute; background-color: rgb(0, 0, 0); height: 2px; left: 1px; bottom: 1px; right: 1px;"></div><div style="position: absolute; width: 2px; height: 6px; left: 1px; top: 1px; background-color: rgb(0, 0, 0);"></div><div style="width: 2px; height: 6px; position: absolute; background-color: rgb(0, 0, 0); bottom: 1px; right: 1px;"></div></div></div><span id="19A0EF2D-1921-43FB-87C8-507ACA5CCAB3" style="display: none;">Click to toggle between metric and imperial units</span></button><div class="gmnoprint gm-style-cc" draggable="false" style="z-index: 1000001; -webkit-user-select: none; position: relative; height: 14px; line-height: 14px;"><div style="opacity: 0.7; width: 100%; height: 100%; position: absolute;"><div style="width: 1px;"></div><div style="background-color: rgb(245, 245, 245); width: auto; height: 100%; margin-left: 1px;"></div></div><div style="position: relative; padding-right: 6px; padding-left: 6px; box-sizing: border-box; font-family: Roboto, Arial, sans-serif; font-size: 10px; color: rgb(0, 0, 0); white-space: nowrap; direction: ltr; text-align: right; vertical-align: middle; display: inline-block;"><a aria-label="Terms (opens in new tab)" href="https://www.google.com/intl/en_US/help/terms_maps.html" target="_blank" rel="noopener" style="text-decoration: none; cursor: pointer; color: rgb(0, 0, 0);">Terms</a></div></div><div draggable="false" class="gm-style-cc" style="-webkit-user-select: none; position: relative; height: 14px; line-height: 14px;"><div style="opacity: 0.7; width: 100%; height: 100%; position: absolute;"><div style="width: 1px;"></div><div style="background-color: rgb(245, 245, 245); width: auto; height: 100%; margin-left: 1px;"></div></div><div style="position: relative; padding-right: 6px; padding-left: 6px; box-sizing: border-box; font-family: Roboto, Arial, sans-serif; font-size: 10px; color: rgb(0, 0, 0); white-space: nowrap; direction: ltr; text-align: right; vertical-align: middle; display: inline-block;"><a target="_blank" rel="noopener" title="Report errors in the road map or imagery to Google" dir="ltr" href="https://www.google.com/maps/@32.8230468,-79.8653921,12z/data=!10m1!1e1!12b1?source=apiv3&amp;rapsrc=apiv3" style="font-family: Roboto, Arial, sans-serif; font-size: 10px; text-decoration: none; position: relative; color: rgb(0, 0, 0);">Report a map error</a></div></div></div></div></div></div></div><div id="slp_tagline" class="store_locator_plus tagline">search provided by <a href="https://wordpress.storelocatorplus.com/" target="_blank">Store Locator Plus®</a></div><div id="map_sidebar" class="slp_results_container"><div class="results_wrapper" id="slp_results_wrapper_10451"><div id="slp_results_10451" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10451">
        
        <span class="location_name">Le Farfalle  </span>
        <span class="location_distance">0.2 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10451">
        
        <span class="slp_result_address slp_result_street">15 Beaufain St</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Charleston, SC 29401</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10451">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/le-farfalle/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=15%20Beaufain%20St%2C%20Charleston%2C%20SC%2C%2029401%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10440"><div id="slp_results_10440" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10440">
        
        <span class="location_name">AZUR  </span>
        <span class="location_distance">0.3 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10440">
        
        <span class="slp_result_address slp_result_street">159 Market St</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Charleston, SC 29401</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10440">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/azur/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=159%20Market%20St%2C%20Charleston%2C%20SC%2C%2029401%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10437"><div id="slp_results_10437" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10437">
        
        <span class="location_name">167 Raw Oyster Bar  </span>
        <span class="location_distance">0.3 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10437">
        
        <span class="slp_result_address slp_result_street">193 King St</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Charleston, SC 29401</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10437">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/167-raw-oyster-bar/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=193%20King%20St%2C%20Charleston%2C%20SC%2C%2029401%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10442"><div id="slp_results_10442" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10442">
        
        <span class="location_name">Bay Street Biergarten  </span>
        <span class="location_distance">0.6 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10442">
        
        <span class="slp_result_address slp_result_street">549 E Bay St</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Charleston, SC 29403</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10442">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/bay-street-biergarten/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=549%20E%20Bay%20St%2C%20Charleston%2C%20SC%2C%2029403%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10466"><div id="slp_results_10466" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10466">
        
        <span class="location_name">The Ordinary  </span>
        <span class="location_distance">0.8 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10466">
        
        <span class="slp_result_address slp_result_street">544 King St</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Charleston, SC 29403</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10466">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/the-ordinary/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=544%20King%20St%2C%20Charleston%2C%20SC%2C%2029403%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10469"><div id="slp_results_10469" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10469">
        
        <span class="location_name">Vern's  </span>
        <span class="location_distance">1.0 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10469">
        
        <span class="slp_result_address slp_result_street">41 Bogard St A</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Charleston, SC 29403</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10469">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/verns/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=41%20Bogard%20St%20A%2C%20Charleston%2C%20SC%2C%2029403%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10444"><div id="slp_results_10444" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10444">
        
        <span class="location_name">Charleston Harbor Fish House  </span>
        <span class="location_distance">1.5 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10444">
        
        <span class="slp_result_address slp_result_street">32 Patriots Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10444">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/charleston-harbor-fish-house/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=32%20Patriots%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10465"><div id="slp_results_10465" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10465">
        
        <span class="location_name">The Archer  </span>
        <span class="location_distance">1.5 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10465">
        
        <span class="slp_result_address slp_result_street">601 Meeting St Ste. 140</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Charleston, SC 29403</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10465">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/the-archer/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=601%20Meeting%20St%20Ste.%20140%2C%20Charleston%2C%20SC%2C%2029403%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10470"><div id="slp_results_10470" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10470">
        
        <span class="location_name">Vicious Biscuit MT P  </span>
        <span class="location_distance">2.8 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10470">
        
        <span class="slp_result_address slp_result_street">409 W Coleman Blvd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10470">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/vicious-biscuit-mt-p/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=409%20W%20Coleman%20Blvd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock">7 AM - 230 PM</span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10449"><div id="slp_results_10449" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10449">
        
        <span class="location_name">Graze  </span>
        <span class="location_distance">2.9 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10449">
        
        <span class="slp_result_address slp_result_street">863 Houston Northcutt Blvs</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10449">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/graze/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=863%20Houston%20Northcutt%20Blvs%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10445"><div id="slp_results_10445" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10445">
        
        <span class="location_name">Coleman Public House  </span>
        <span class="location_distance">2.9 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10445">
        
        <span class="slp_result_address slp_result_street">427 W Coleman Blvd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10445">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/coleman-public-house/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=427%20W%20Coleman%20Blvd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10471"><div id="slp_results_10471" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10471">
        
        <span class="location_name">Vickery's Bar &amp; Grill  </span>
        <span class="location_distance">2.9 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10471">
        
        <span class="slp_result_address slp_result_street">1313 Shrimp Boat Ln</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10471">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/vickerys-bar-grill/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=1313%20Shrimp%20Boat%20Ln%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10473"><div id="slp_results_10473" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10473">
        
        <span class="location_name">Water's Edge  </span>
        <span class="location_distance">3.0 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10473">
        
        <span class="slp_result_address slp_result_street">1407 Shrimp Boat Lane</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10473">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/waters-edge/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=1407%20Shrimp%20Boat%20Lane%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10464"><div id="slp_results_10464" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10464">
        
        <span class="location_name">Tavern N Table  </span>
        <span class="location_distance">3.0 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10464">
        
        <span class="slp_result_address slp_result_street">100 Church St</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10464">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/tavern-n-table/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=100%20Church%20St%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10454"><div id="slp_results_10454" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10454">
        
        <span class="location_name">Nico  </span>
        <span class="location_distance">3.1 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10454">
        
        <span class="slp_result_address slp_result_street">201 Coleman Blvd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10454">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/nico/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=201%20Coleman%20Blvd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10461"><div id="slp_results_10461" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10461">
        
        <span class="location_name">Shem Creek Crab House  </span>
        <span class="location_distance">3.2 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10461">
        
        <span class="slp_result_address slp_result_street">508 Mill St</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10461">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/shem-creek-crab-house/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=508%20Mill%20St%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10456"><div id="slp_results_10456" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10456">
        
        <span class="location_name">Post House  </span>
        <span class="location_distance">3.2 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10456">
        
        <span class="slp_result_address slp_result_street">101 Pitt St</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10456">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/post-house/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=101%20Pitt%20St%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10455"><div id="slp_results_10455" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10455">
        
        <span class="location_name">Page's Okra Grill  </span>
        <span class="location_distance">3.2 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10455">
        
        <span class="slp_result_address slp_result_street">302 Coleman Blvd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10455">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/pages-okra-grill/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=302%20Coleman%20Blvd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10450"><div id="slp_results_10450" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10450">
        
        <span class="location_name">Langdon's Restaurant &amp; Wine Bar  </span>
        <span class="location_distance">3.7 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10450">
        
        <span class="slp_result_address slp_result_street">778 Shelmore Blvd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10450">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/langdons-restaurant-wine-bar/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=778%20Shelmore%20Blvd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10457"><div id="slp_results_10457" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10457">
        
        <span class="location_name">Red Drum  </span>
        <span class="location_distance">3.9 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10457">
        
        <span class="slp_result_address slp_result_street">803 Coleman Blvd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10457">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/red-drum/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=803%20Coleman%20Blvd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10453"><div id="slp_results_10453" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10453">
        
        <span class="location_name">Nautica Bowls  </span>
        <span class="location_distance">5.8 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10453">
        
        <span class="slp_result_address slp_result_street">608-F Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10453">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/nautica-bowls/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=608-F%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10474"><div id="slp_results_10474" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10474">
        
        <span class="location_name">Wendy's  </span>
        <span class="location_distance">5.8 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10474">
        
        <span class="slp_result_address slp_result_street">596 Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10474">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/wendys/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=596%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10468"><div id="slp_results_10468" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10468">
        
        <span class="location_name">Verde  </span>
        <span class="location_distance">5.8 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10468">
        
        <span class="slp_result_address slp_result_street">616-A Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10468">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/verde/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=616-A%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10472"><div id="slp_results_10472" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10472">
        
        <span class="location_name">Waffle House  </span>
        <span class="location_distance">5.8 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10472">
        
        <span class="slp_result_address slp_result_street">609 Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10472">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/waffle-house/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=609%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10482"><div id="slp_results_10482" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10482">
        
        <span class="location_name">Moe's Southwest Grill  </span>
        <span class="location_distance">5.8 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10482">
        
        <span class="slp_result_address slp_result_street">612 Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country" style="display: none;"></span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10482">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/moes-southwest-grill/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=612%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10447"><div id="slp_results_10447" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10447">
        
        <span class="location_name">Dog and Duck  </span>
        <span class="location_distance">5.9 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10447">
        
        <span class="slp_result_address slp_result_street">624 Long Point Rd</span>
        <span class="slp_result_address slp_result_street2">Suite A</span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10447">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/dog-and-duck/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=624%20Long%20Point%20Rd%2C%20Suite%20A%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10463"><div id="slp_results_10463" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10463">
        
        <span class="location_name">Starbucks Coffee Company  </span>
        <span class="location_distance">5.9 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10463">
        
        <span class="slp_result_address slp_result_street">636-A Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10463">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/starbucks-coffee-company/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=636-A%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10448"><div id="slp_results_10448" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10448">
        
        <span class="location_name">Fuji Sushi Bar &amp; Grill  </span>
        <span class="location_distance">5.9 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10448">
        
        <span class="slp_result_address slp_result_street">644 Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10448">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/fuji-sushi-bar-grill-2/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=644%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10439"><div id="slp_results_10439" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10439">
        
        <span class="location_name">Amalfi's Italian Restaurant  </span>
        <span class="location_distance">5.9 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10439">
        
        <span class="slp_result_address slp_result_street">664 E Long Point Road</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone">Phone 843-793-4265</span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10439">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/amalfis-italian-restaurant-2/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=664%20E%20Long%20Point%20Road%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock">Mon - Sat : 11A - 10P
Sun: 11A - 930P</span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10479"><div id="slp_results_10479" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10479">
        
        <span class="location_name">Chik-Fil-A  </span>
        <span class="location_distance">6.0 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10479">
        
        <span class="slp_result_address slp_result_street">653 Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country" style="display: none;"></span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10479">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/chik-fil-a/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=653%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10481"><div id="slp_results_10481" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10481">
        
        <span class="location_name">McAlister's Deli  </span>
        <span class="location_distance">6.0 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10481">
        
        <span class="slp_result_address slp_result_street">644-A Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country" style="display: none;"></span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10481">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/mcalisters-deli-2/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=644-A%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10458"><div id="slp_results_10458" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10458">
        
        <span class="location_name">Rio Chico Mexican Restaurant  </span>
        <span class="location_distance">6.1 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10458">
        
        <span class="slp_result_address slp_result_street">660 Long Point Rd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10458">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/rio-chico-mexican-restaurant/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=660%20Long%20Point%20Rd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10467"><div id="slp_results_10467" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10467">
        
        <span class="location_name">The Wine Bar  </span>
        <span class="location_distance">6.1 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10467">
        
        <span class="slp_result_address slp_result_street">664 Long Point Rd</span>
        <span class="slp_result_address slp_result_street2">Unit G</span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10467">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/the-wine-bar-2/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=664%20Long%20Point%20Rd%2C%20Unit%20G%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10480"><div id="slp_results_10480" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10480">
        
        <span class="location_name">Hutto Seafood Kitchen  </span>
        <span class="location_distance">6.1 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10480">
        
        <span class="slp_result_address slp_result_street">536 Belle Station Blvd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country" style="display: none;"></span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10480">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/hutto-seafood-kitchen/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=536%20Belle%20Station%20Blvd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10477"><div id="slp_results_10477" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10477">
        
        <span class="location_name">All American Sports Bar  </span>
        <span class="location_distance">6.1 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10477">
        
        <span class="slp_result_address slp_result_street">545 Belle Station Blvd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country" style="display: none;"></span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10477">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/all-american-sports-bar/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=545%20Belle%20Station%20Blvd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10478"><div id="slp_results_10478" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10478">
        
        <span class="location_name">Bamboo Garden Restaurant  </span>
        <span class="location_distance">6.1 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10478">
        
        <span class="slp_result_address slp_result_street">553 Belle Station Blvd</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country" style="display: none;"></span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone">Phone (843) 849-8477</span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10478">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/bamboo-garden-restaurant/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=553%20Belle%20Station%20Blvd%2C%20Mount%20Pleasant%2C%20SC%2C%2029464" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10459"><div id="slp_results_10459" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10459">
        
        <span class="location_name">SeeWee Restaurant  </span>
        <span class="location_distance">6.5 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10459">
        
        <span class="slp_result_address slp_result_street">1808 N highway 17</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Awendaw, SC 29429</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10459">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/seewee-restaurant/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=1808%20N%20highway%2017%2C%20Awendaw%2C%20SC%2C%2029429%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10443"><div id="slp_results_10443" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10443">
        
        <span class="location_name">Burtons Bar and Grill  </span>
        <span class="location_distance">6.7 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10443">
        
        <span class="slp_result_address slp_result_street">1875 N Highway 17</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10443">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/burtons-bar-and-grill/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=1875%20N%20Highway%2017%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10475"><div id="slp_results_10475" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10475">
        
        <span class="location_name">Ye Olde Fashion  </span>
        <span class="location_distance">6.8 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10475">
        
        <span class="slp_result_address slp_result_street">Hwy 17 N</span>
        <span class="slp_result_address slp_result_street2">Johnnie Dodds</span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10475">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/ye-olde-fashion-2/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=Hwy%2017%20N%2C%20Johnnie%20Dodds%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10441"><div id="slp_results_10441" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10441">
        
        <span class="location_name">Basil Thai  </span>
        <span class="location_distance">7.1 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10441">
        
        <span class="slp_result_address slp_result_street">1465 Long Grove Dr</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10441">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/basil-thai/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=1465%20Long%20Grove%20Dr%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10446"><div id="slp_results_10446" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10446">
        
        <span class="location_name">Crave Kitchen &amp; Cocktails  </span>
        <span class="location_distance">7.2 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10446">
        
        <span class="slp_result_address slp_result_street">1968 Riviera Dr</span>
        <span class="slp_result_address slp_result_street2">Unit O</span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10446">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/crave-kitchen-cocktails/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=1968%20Riviera%20Dr%2C%20Unit%20O%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10462"><div id="slp_results_10462" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10462">
        
        <span class="location_name">SOL Mt. Pleasant  </span>
        <span class="location_distance">7.4 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10462">
        
        <span class="slp_result_address slp_result_street">1101 Stockade Ln</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10462">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/sol-mt-pleasant/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=1101%20Stockade%20Ln%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10460"><div id="slp_results_10460" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10460">
        
        <span class="location_name">Sena Cafe  </span>
        <span class="location_distance">7.7 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10460">
        
        <span class="slp_result_address slp_result_street">2170 Snyder Cir #117</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29464</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10460">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/sena-cafe-2/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=2170%20Snyder%20Cir%20%23117%2C%20Mount%20Pleasant%2C%20SC%2C%2029464%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10438"><div id="slp_results_10438" class="results_entry location_primary 0">
    <div class="results_row_left_column" id="slp_left_cell_10438">
        
        <span class="location_name">Abbracci  </span>
        <span class="location_distance">9.7 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10438">
        
        <span class="slp_result_address slp_result_street">1146 Muhlenbbergia Dr</span>
        <span class="slp_result_address slp_result_street2">Ste 103</span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29466</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10438">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/abbracci-3/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=1146%20Muhlenbbergia%20Dr%2C%20Ste%20103%2C%20Mount%20Pleasant%2C%20SC%2C%2029466%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock" style="display: none;"></span>
        
        
        
        
        
    </div>
</div></div><div class="results_wrapper" id="slp_results_wrapper_10452"><div id="slp_results_10452" class="results_entry location_primary ">
    <div class="results_row_left_column" id="slp_left_cell_10452">
        
        <span class="location_name">Mellow Mushroom  </span>
        <span class="location_distance">10.3 miles</span>
        
    </div>
    <div class="results_row_center_column location_secondary" id="slp_center_cell_10452">
        
        <span class="slp_result_address slp_result_street">3110 N Highway 17</span>
        <span class="slp_result_address slp_result_street2" style="display: none;"></span>
        <span class="slp_result_address slp_result_citystatezip">Mount Pleasant, SC 29466</span>
        <span class="slp_result_address slp_result_country">United States</span>
        <div class="contact_info">
            <span class="slp_result_address slp_result_phone" style="display: none;"></span>
            <span class="slp_result_address slp_result_fax" style="display: none;"></span>
        </div>
        
    </div>
    <div class="results_row_right_column location_tertiary" id="slp_right_cell_10452">
        
        <div class="online_info">
        <span class="slp_result_contact slp_result_website"><a href="http://localhost/store-page/mellow-mushroom/" target="_self" class="storelocatorlink">Website</a><br></span>
        <span class="slp_result_contact slp_result_email" style="display: none;"></span>
        <span class="slp_result_contact slp_result_directions"><a href="https://maps.google.com/maps?saddr=Charleston%20SC&amp;daddr=3110%20N%20Highway%2017%2C%20Mount%20Pleasant%2C%20SC%2C%2029466%2C%20United%20States" target="_blank" class="storelocatorlink">Directions</a></span>
        </div>
        <span class="slp_result_contact slp_result_hours textblock">11 AM - 10 PM</span>
        
        
        
        
        
    </div>
</div></div></div></div>

Additional Info

For this task only the local files in the style-gallery-service plugin will be updated. A system administrator will put the changes into production following the process in “How Locator Styles Work” noted in the linked article below.

0 comments on “How Locator Styles Work”

How Locator Styles Work

The following information explains how the Locator Style server works and the process used to change the styles.

Locator Styles Server

Locator Styles provides a way for users of the Store Locator Plus® app to load a style definition from the Store Locator Plus® style server.

The Style Server URL is: https://storelocatorplus.com/wp-json/wp/v2/slp_style_gallery
This is a standard WordPress site with a custom plugin named style-gallery-service that provides REST endpoints for processing queries about Locator Styles.

Locator Styles are a custom post type with an key set to ‘slp_style_gallery’.

slp_style_gallery attributes include:

  • post content : the HTML-like description of the style that is rendered in the Style selector in the Store Locator Plus® plugin on the Style page.
  • custom fields : this include a set of Store Locator Plus® settings (csl-slplus-options and csl-slplus-options_nojs WordPress option JSON object keys) as the name and the value is the value of the option that will be set when the style is selected.
    • css : the option key that is provided on ALL Locator Styles which is the CSS that is used when the Store Locator Plus map or directory display is rendered on the users website
    • layout : an HTML + WordPress shortcode string that is processed to generate the overall wireframe of the Store Locator Plus display with a user site.
      • Default: [slp_search][slp_map][slp_results]
    • searchlayout : an HTML + WordPress shortcode string that is processed to generate the HTML output for the [slp_search] shortcode
    • resultslayout : an HTML + WordPress shortcode string that is processed to generate the HTML output for the [slp_results] shortcode
    • maplayout : an HTML + WordPress shortcode string that is processed to generate the HTML output for the [slp_map] shortcode
    • bubblelayout: an HTML + WordPress shortcode string that is processed to generate the HTML output for the Google Maps info bubble that appears when a user clicks on a map icon
    • google_map_style : Google Maps specific JSON map styling for embedded styles.

Fetching Style Data

\SLP_Service::get_styles – fetches styles from the style server.

  • via $this->get_and_validate_json_response( $this->slplus->url_main_slp_site . ‘/’ . SLP_Style_Manager::REST_ENDPOINT . $style_selector . $request_params );
  • $this->slplus->url_main_slp_site = https://storelocatorplus.com
  • SLP_Style_Manager::REST_ENDPOINT = ‘wp-json/wp/v2/slp_style_gallery’

Building A Locator Style

Crafting The Initial CSS and settings.json

To help keep track of the settings and the more complex CSS construction, files are stored in the style-gallery-service plugin.

The wp-content/plugins/style-gallery-service/assets/styles directory contains a subdirectory for each Locator Style.
The subdirectories correspond to Locator Styles (slp_style_gallery) posts on the main Store Locator Plus® website.
Each subdirectory has content that includes:

settings.json : a JSON file the represents all the settings this Locator Style will change when activated on a user’s Store Locator Plus® plugin or SaaS account.

An example settings.json for the Default Locator Style follows:

{
  "CustomFields": {
    "bubblelayout": "<div id=\"slp_info_bubble_[slp_location id]\" class=\"slp_info_bubble [slp_location featured]\">\n    <span id=\"slp_bubble_name\"><strong>[slp_location name  suffix  br]</strong></span>\n    <span id=\"slp_bubble_address\">[slp_location address       suffix  br]</span>\n    <span id=\"slp_bubble_address2\">[slp_location address2      suffix  br]</span>\n    <span id=\"slp_bubble_city\">[slp_location city          suffix  comma]</span>\n    <span id=\"slp_bubble_state\">[slp_location state suffix    space]</span>\n    <span id=\"slp_bubble_zip\">[slp_location zip suffix  br]</span>\n    <span id=\"slp_bubble_country\"><span id=\"slp_bubble_country\">[slp_location country       suffix  br]</span></span>\n    <span id=\"slp_bubble_directions\">[html br ifset directions]\n    [slp_option label_directions wrap directions]</span>\n    <span id=\"slp_bubble_website\">[html br ifset url][slp_location web_link][html br ifset url]</span>\n    <span id=\"slp_bubble_email\">[slp_location email         wrap    mailto ][slp_option label_email ifset email][html closing_anchor ifset email][html br ifset email]</span>\n    <span id=\"slp_bubble_phone\">[html br ifset phone]\n    <span class=\"location_detail_label\">[slp_option   label_phone   ifset   phone]</span>[slp_location phone         suffix    br]</span>\n    <span id=\"slp_bubble_fax\"><span class=\"location_detail_label\">[slp_option   label_fax     ifset   fax  ]</span>[slp_location fax           suffix    br]<span>\n    <span id=\"slp_bubble_description\"><span id=\"slp_bubble_description\">[html br ifset description]\n    [slp_location description raw]</span>[html br ifset description]</span>\n    <span id=\"slp_bubble_hours\">[html br ifset hours]\n    <span class=\"location_detail_label\">[slp_option   label_hours   ifset   hours]</span>\n    <span class=\"location_detail_hours\">[slp_location hours         suffix    br]</span></span>\n    <span id=\"slp_bubble_img\">[html br ifset img]\n    [slp_location image         wrap    img]</span>\n    <span id=\"slp_tags\">[slp_location tags]</span>\n</div>",
    "dropdown_style": "none",
    "google_map_style": "[]",
    "label_phone": "Phone",
    "layout": "<div id=\"sl_div\">[slp_search][slp_map][slp_results]</div>",
    "loading_indicator": "",
    "map_height": "480",
    "map_height_units": "px",
    "map_width": "100",
    "map_width_units": "%",
    "maplayout": "[slp_mapcontent][slp_maptagline]",
    "no_homeicon_at_start": "1",
    "pagination_enabled": "0",
    "results_header": "",
    "results_no_wrapper": "0",
    "resultslayout": "<div id=\"slp_results_[slp_location id]\" class=\"results_entry location_primary [slp_location featured]\">\n    <div class=\"results_row_left_column\"   id=\"slp_left_cell_[slp_location id]\"   >\n        [slp_addon section=primary position=first]\n        <span class=\"location_name\">[slp_location name] [slp_location uml_buttons] [slp_location gfi_buttons]</span>\n        <span class=\"location_distance\">[slp_location distance_1] [slp_location distance_unit]</span>\n        [slp_addon section=primary position=last]\n    </div>\n    <div class=\"results_row_center_column location_secondary\" id=\"slp_center_cell_[slp_location id]\" >\n        [slp_addon section=secondary position=first]\n        <span class=\"slp_result_address slp_result_street\">[slp_location address]</span>\n        <span class=\"slp_result_address slp_result_street2\">[slp_location address2]</span>\n        <span class=\"slp_result_address slp_result_citystatezip\">[slp_location city_state_zip]</span>\n        <span class=\"slp_result_address slp_result_country\">[slp_location country]</span>\n        <div class=\"contact_info\">\n            <span class=\"slp_result_address slp_result_phone\">[slp_location phone_with_label]</span>\n            <span class=\"slp_result_address slp_result_fax\">[slp_location fax]</span>\n        </div>\n        [slp_addon section=secondary position=last]\n    </div>\n    <div class=\"results_row_right_column location_tertiary\"  id=\"slp_right_cell_[slp_location id]\"  >\n        [slp_addon section=tertiary position=first]\n        <div class=\"online_info\">\n        <span class=\"slp_result_contact slp_result_website\">[slp_location web_link]</span>\n        <span class=\"slp_result_contact slp_result_email\">[slp_location email_link]</span>\n        <span class=\"slp_result_contact slp_result_directions\"><a href=\"https://[slp_option map_domain]/maps?saddr=[slp_location search_address]&daddr=[slp_location location_address]\" target=\"_blank\" class=\"storelocatorlink\">[slp_location directions_text]</a></span>\n        </div>\n        <span class=\"slp_result_contact slp_result_hours textblock\">[slp_location hours]</span>\n        [slp_location pro_tags]\n        [slp_location iconarray wrap=\"fullspan\"]\n        [slp_location eventiconarray wrap=\"fullspan\"]\n        [slp_location socialiconarray wrap=\"fullspan\"]\n        [slp_addon section=tertiary position=last]\n    </div>\n</div>",
    "search_by_name": "0",
    "searchlayout": "<div id=\"address_search\" class=\"slp search_box\">\n    [slp_addon location=\"very_top\"]\n    [slp_search_element input_with_label=\"name\"]\n    [slp_search_element input_with_label=\"address\"]\n    [slp_search_element dropdown_with_label=\"city\"]\n    [slp_search_element dropdown_with_label=\"state\"]\n    [slp_search_element dropdown_with_label=\"country\"]\n    [slp_search_element selector_with_label=\"tag\"]\n    [slp_search_element dropdown_with_label=\"category\"]\n    [slp_search_element dropdown_with_label=\"gfl_form_id\"]\n    [slp_addon location=\"before_radius_submit\"]\n    <div class=\"search_item\">\n        [slp_search_element dropdown_with_label=\"radius\"]\n        [slp_search_element button=\"submit\"]\n    </div>\n    [slp_addon location=\"after_radius_submit\"]\n    [slp_addon location=\"very_bottom\"]\n</div>\n",
    "show_country": "1",
    "show_hours": "1",
    "show_icon_array": "0",
    "tag_output_processing": "as_entered"
  }
}

stylesheet.scss : the SCSS (Sass CSS compiler) file that compiles into stylesheet.min.css.
It is a separate file so we can use SCSS to build more sophisticated stylesheets in a managed fashion as well as to share CSS constructs between different locator styles if desired.

An example stylesheet.scss for the Default Locator Style follows:

.store_locator_plus {
  // -- Meta
  #style_name {
    content: "Default"
  }
  #style_version {
    content: "2502.21.01"
  }

  .container {
    &.fluid {
      max-width: 100%;
    }

    .grid-list-lg {
      padding: 16px;
    }
  }

  .card {
    display: block;
    border-radius: 2px;
    min-width: 0;
    position: relative;
    text-decoration: none;

    -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2),
    0 2px 2px rgba(0, 0, 0, 0.14),
    0 3px 1px -2px rgba(0, 0, 0, 0.12);
    box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2),
    0 2px 2px rgba(0, 0, 0, 0.14),
    0 3px 1px -2px rgba(0, 0, 0, 0.12);

    &__title {
      -webkit-box-align: center;
      -ms-flex-align: center;
      align-items: center;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -ms-flex-wrap: wrap;
      flex-wrap: wrap;
      padding: 16px;

      &--primary {
        padding-top: 24px;
      }
    }
  }

  .headline {
    font-size: 24px !important;
    font-weight: 400;
    line-height: 32px !important;
    letter-spacing: normal !important;
  }

  &.tagline {
    font-size: 0.75em;
    text-align: right;
  }

  // Search forms
  .slp_search_form {
    .search_box {
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      align-items: flex-start;
      align-content: stretch;

      .search_item {
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-start;
        flex: 1 0 auto;
        min-width: 1em;
        margin-bottom: 0.25em;
        width: 100%;

        label {
          text-align: right;
          margin-right: 0.25em;
          flex-basis: 20%;
        }

        input[type="text"] {
          min-width: 1em;
          flex-basis: 80%;

          &.label_empty {
            flex-basis: 100%;
          }
        }

        div {
          flex: 1 0 50%;
          display: flex;
          flex-direction: row;
          flex-wrap: nowrap;
          justify-content: flex-start;
        }

        #addy_in_radius {
          label {
            flex-basis: 40%;
          }

          select,
          span.ui-widget {
            flex-basis: 60%;
            display: flex;
            flex-direction: row;
            align-items: center;
            padding: 0.25em;

            span {
              display: inline-block;
            }
          }
        }

        #radius_in_submit {
          display: flex;
          flex-direction: row-reverse;
        }

        .slp_ui_button {
          margin: 0.25em 0;
          padding: 0.25em;
        }
      }
    }
  }

  // -- Results
  .slp_results_container {
    .results_wrapper {
      margin: 0.5em 0;
      padding: 0.5em;
      border: solid 1px lightgrey;
      border-radius: 0.5em;

      &:hover {
        background-color: lightgrey;
        border: solid 1px lightgrey;
        cursor: pointer;
      }

      .location_name {
        font-size: 1.15em;
      }

      .location_distance {
        float: right;
        vertical-align: text-top;
        color: grey;
      }

      .contact_info,
      .online_info {
        display: flex;
      }
    }
  }

  //-- Map
  div#map {
    img {
      background-color: transparent;
      box-shadow: none;
      border: none;
      max-width: none;
      opacity: 1.0;

      &[src='http://maps.gstatic.com/mapfiles/iws3.png'] {
        display: none;
      }
    }

    div {
      overflow: visible;
    }

    .gm-style-cc > div {
      word-wrap: normal;
    }
  }
  // Widgets and form elements
  #slp_widget\[city\],
  #map_box_map {
    display: none;
  }

  #map_box_image {
    display: block;
  }

  // -- Map | Bubble | Outermost Wrapper
  .slp_bubble_level_6 {
    .slp_bubble_level_1 {
      color: black;
    }
  }

  // -- Directory
  .slp_directory {
    &.landing_page {
      .results_entry {
        margin-bottom: 1.5em;
      }
    }
  }
}

Note the starting CSS rules:

.store_locator_plus {
  // -- Meta
  #style_name {
    content: "Default"
  }
  #style_version {
    content: "2502.21.01"
  }

The #style_name should always match the name of the Locator Style (the post name).
When the file is changed the #style_version should be updated to match the SLP standard version semver-like system of YYMM.DD.## for the date and iteration number of the latest change to the file.

stylesheet.min.css : the resulting CSS code that ends up in the Locator Style custom meta field named “css”.
This is kept separate from settings.json to keep settings.json from being bloated with the CSS code.

Putting The Style Into Production

Once the settings have been defined and the new CSS style is ready, it is time to put the updates in production.

  • Login to the main Store Locator Plus® website.
  • Go to Locator Styles on the sidebar
  • To create a new style:
    • Add Post
      • Enter a reasonable, but short, description.
      • Add a screen shot.
    • Add custom meta fields
      • The css file should contain the contents of the stylesheet.min.css that was generated.
      • All other settings name in the settings.json should be added as individual Custom Meta fields. With the example above:
        • dropdown_style set to “none”
        • google_map_style set to “[]”
        • label_phone set to “Phone”
        • etc.
  • To update an existing style:
    • Select the style to be changed and edit it.
    • If the CSS changed , replace the existing screenshot.
    • Compare the settings.json CustomFields and update fields that changed. Add any new custom fields.

0 comments on “August 2026 : What’s New In SLP”

August 2026 : What’s New In SLP

Locations Management – The Location Details Page

The update from the legacy and very outdated PHP-based WordPress table to modern React based interface design has happened.
This is the first iteration with other changes planned in the coming months.
Here are some of the updates including some changes from the July release that are already online.

Retooled Quick Search

The revised quick search feature.
Searching across all fields for the 2059 text (found it in the latitude field in this example).

We’ve completely retooled the quick search feature.

It still searches across multiple fields, but it now searches across all text fields in the location set not only the name and primary address fields. And it is fast. Much faster than past iterations.

Filter Locations

Complex location filters coming in the August 2026 release of SLP.

Complex filters can be built on locations. All of the filters we had with the previous filters drop down menu are still available, plus dozens of additional options.

The filters apply across the entire data set with response times that are vastly improved over the prior versions. Large sets of locations can now be filtered with ease.

Built a wide variety of logic combinations for any location data field.

Data matching options include:

  • contains | does not contain
  • equals | does not equal
  • starts with
  • ends with
  • is empty | is not empty
  • is any of

All fields can be combined with AND or OR logic to display specific locations.

Change The Column Layout

A menu of new column layouts.
The name column pinned to the left, the other data scrolls under it.

A myriad of options are now available for how you see your data on the locations list.

  • Sort columns in any combination.
  • Drag columns to reorder them.
  • Pin columns to the left or right of the table.
  • Hide columns.

The best part is Store Locator Plus® remembers your customization between sessions. No more re-sorting or changing column layouts every time you log back in or visit a different page. We’ve added a notification with an easy reset button in case you ever need to quickly get back to the default layout; Something we’ve found useful when we can’t remember which columns we’ve hidden.

Change The Row Density

Row density options.

While more row management options (like grouping, ordering, etc.) are coming – for now we’ve given the basic option to set the height of the display with several row density options available: Compact, Standard, and Comfortable.

0 comments on “Locations Table : React Conversion”

Locations Table : React Conversion

Goal: replace the legacy locations management table written in PHP and jQuery with a modern React component preferably MUI DataGridPro.

Legacy Locations Management Table

Rendering The UI

Rendering of the PHP page in WordPress is routed via this path:
– WordPress admin menu “Locations” (WordPress plugin) or “Location Details” (SaaS) for menu_items[‘slp_manage_locations’]
– Admin Menu calls \SLP_Admin_UI::renderLocationsPage to render the page.
– Calls \SLP_Admin_Locations::display

This renders the location manage page which has several tab panels.
Each tab panel is added or augmented with the slp_build_locations_panels custom WordPress hook.
The Locations Management Table is added with a hook priority of 10 that calls \SLP_Admin_Locations::addListLocationsSetting

When the page renders it goes inside an HTML div (tab panel) that is exposed when a user clicks on the List menu item in the horizontal tab menu that is currently rendered as a React component on the same page.

The List Locations Tab Panel Content

This page is comprised of HTML from the following methods:

  • \SLP_Admin_Locations::create_string_location_table_start –
    starting HTML wrappers for the locations table
  • \SLP_Notifications_Manager::get_html –
    renders a notification or “SnackBar” style notices manager if any notification messages are on the notifications array.
  • The ‘manage_locations_table’ \SLP_Setting object rendered by \SLP_Settings_manage_locations_table –
    Draws the main locations data grid / table.
  • \SLP_Admin_Locations::create_string_location_table_end –
    ending HTML wrappers for the locations table

\SLP_Admin_Locations::create_string_location_table_start calls the following methods:

  • \SLP_Admin_Locations::set_location_query –
    Manages the SLP database queries.
    • Adds location query modifiers for the where clause via the custom hook slp_manage_location_where
      • Used by the Power plugin via \SLP_Power_Admin_Locations_Actions::process when action =
        • filter_by_category – to filter locations by category
        • show_uncoded – filter locations to those that are not geocoded (empty latitude or longitude fields)
        • filter_by_property – filter locations to match properties like name, zip code, country, state
    • Adds location query modifiers via \SLP_Admin_Locations::set_location_filter
    • Adds a sort order to the location results via \SLP_Admin_Locations::set_location_order
  • Executes the location query via \SLP_Data::get_SQL
  • Gets a total location count and stores it in \SLP_Admin_Locations::$total_locations_shown
  • Adjust the pagination starting page number if necessary storing the value in \SLP_Admin_Locations::$start


  • If no locations, adds a WordPress nonce with wp_nonce_field( ‘screen-options-nonce’, ‘screenoptionnonce’, false ) and shows the no locations message and returns.
  • If there are locations:
    • Outputs a hidden input field name=’start’ with the starting offset for pagination
    • If the page is rendered after a form post (processing the apply to all button) outputs a hidden input name=”apply_to_all” with a value=”1″
    • Outputs a div for the simulated pagination navigation block via \SLP_Admin_Locations::createstring_PanelManageTablePagination

\SLP_Settings_manage_locations_table main locations data grid rendering calls the following methods:

  • \SLP_Settings_manage_locations_table::display handles the main rendering which calls…
    • \SLP_Admin_Locations::display_manage_locations_table
      This is where the main HTML table is rendered that will be the primary object replaced by the MUI DataGridPro component.
      • Add the HTML input checkbox for each row, wired to a jQuery call to help managed checked/unchecked state.
      • Calls \SLP_Admin_Locations::display_column_headers to put field labels on top of the table columns.
      • Uses the custom filter slp_locations_manage_cssclass to apply custom CSS styling on rows for
        • invalid location entries via \SLP_Admin_Locations::filter_InvalidHighlight
        • locations with the private field set to true via \SLP_Admin_Locations::add_private_location_css
        • adds custom data specific styling via \SLP_Admin_Locations::customize_location_list_displayed_data
      • Managed the location data query, preparing the database layer for where clauses, sorting, etc.
      • Adds action buttons for edit, delete, etc to an Actions column which presents icons to modify data in each row
      • Loops through he list of returned locations records and displays rows of locations
        • Column data HTML output can be modified via the WordPress hook slp_column_data. This is used by these plugins:
          • Experience:
            • add_filter( ‘slp_column_data’, array( $this, ‘filter_FieldDataToManageLocations’ ), 90, 3 );
          • Power:
            • add_filter( ‘slp_column_data’, array( $this, ‘customize_location_list_displayed_data’ ), 20, 3 );
            • add_filter( ‘slp_column_data’, array( $this, ‘extend_location_columns’ ), 90, 3 );
          • Premier:
            • add_filter( ‘slp_column_data’, array( $this, ‘checkmark_territory_bounds’ ), 20, 3 );
          • Store-Locator-Plus:
            • add_filter( ‘slp_column_data’, array( $this, ‘customize_location_list_displayed_data’ ), 10, 3 );

Task : Replace The Manage Locations PHP and jQuery managed table with MUI DataGrid Pro

Licensing MUI DataGrid Pro

There is a license for MUI DataGrid Pro.
You can find an example in the HistoryTable React component in MySLP Dashboard (wp-content/plugins/myslp-dashboard/src/settings_history/HistoryTable.tsx).
The MySLP Dashboard plugin invokes the license in that component via import “@licensing/MuiLicense.js”;
This methodology can be copied for SLP.

Guidelines

  • Use the built-in DataGrid features for sorting, filtering, checkboxes to select row, pagination, and other extended features of the MUI component.
  • Extract the data manipulation elements from the legacy Store Locator Plus location management PHP code and integrate them into a location REST endpoint in the Store Locator Plus plugin.
    • The Store Locator Plus plugin already has REST endpoints for fetching location data
    • These existing endpoints may need to be augmented to accommodate all features of the manage locations table
    • Be sure to follow any custom WordPress hooks and filters employed to manipulate data
      • Pay special attention to hook and filters in the Experience, Power, and Premier plugins
  • Connect the interactions of the React LocationsTable component that was started in wp-content/plugins/store-locator-plus/src/LocationsTable/LocationsTable.tsx to the data display of the new MUI DataGrid Pro table for locations.
    • The LocationsTableHeader React component has been designed to interact with this data display table.
      • This component currently interacts with the legacy PHP and backend data processing interfaces.
      • Update the interactions as appropriate to take advantage of the new MUI Data Grid Pro features.
  • Locate the local AI knowledge and context files related to prior work on the location management interface, especially task summaries related to the LocationsTableHeader components.
    • Find $HOME/PhpstormProjects/workspace-sprocket/knowledge/ai-summaries/locations
  • Ask clarification questions before starting.
  • If unsure of any step in the process, pause and ask for guidance.
  • If any step of the process is not resolving in several turns, pause to explain the issue and proposed path forward and ask for guidance or assistance if needed.

Feedback Turn 1 : Store Locator Plus plugin version 2607.22.02

Tasks

  • ✅ Revert the action bar styling , see details below.
  • The per-row checkbox does not work, clicking the checkbox does not change the state of the checkbox UI on the row.
  • Pagination does not work. Reproduction:
    • Set page length to 10. Page 1-20 of 21 shown.
    • Click the > to move to the next page. Page redraws showing 1-10 again.
  • ✅ Fix Bulk Actions Categorize Slide Out Styling , see details below. Style is not correct.
  • ✅ The edit button on each row (in LocationsDataGrid) does not invoke an action.
  • ✅ Fix the add tags modal styling, see details below.
  • ✅ Drop the With These Properties option from the filter drop down (LocationsFilter)
    • Remove associated React code to show the slide out drawer and render the selectors.
  • ✅ Remove the LocationsSearch component from the LocationsTableHeader action bar.
    • Remove associated React code for display as well as related processing that is not in use by the DataGrid Pro implementation.

Revert The Action Bar Styling

The Manage Locations action bar (LocationsTableHeader component) style was changed.
The image below was what it looked like before the Codex GPT-5.6-Sol agent created the React version of the manage locations table.
This styling should have not been changed.

original action bar
Version 2607.22.01 – original manage locations action bar styling.

The revised action bar is shown here:

revised action bar
Version 2607.22.02 buttons colors changed.
  • Color scheme of apply, apply to all, and search buttons have changed.

Bulk Actions Categorize Slide Out Styling

  • The apply and apply to all are buttons not the top right as icons next to the close button.
  • The categories are following the WordPress hierarchy display
Version 2607.22.01 – original categorize panel styling
Version 2607.22.02 – Categories not hierarchical , button colors changed

Fix the add tags modal styling

v26072.22.01 – original styling
v2607.22.02 styling

For Review

With These Properties Filter Not Rendering

THIS IS NOT AN ACTIONABLE ITEM. This is a record of the changes made by the AI agent that produced a subpar result.

The “With These Properties” filter can be removed as MUI DataGrid Prod provides more advanced per-column filtering.

The drop down filter menu (rendered via the LocationsFilter component) no longer shows the slide out filter properties selector.

  • Select “With These Properties”
  • This should show a slide out drawer where a user can pick the properties to filter on (reference first image below), the drawer is not rendering on the visible UI surface (reference second image below).
v26072.22.01 – The With The Properties slide out UI is rendering.
Version 2607.22.02 – With These Properties slide out component is not rendering

Feedback Turn 2 : Store Locator Plus plugin version 2607.22.03

Tasks (Issues)

  • Click the per-row checkbox does not check the box.
    • Cannot select single rows in the DataGrid.
  • ✅ Pagination does not work.
    • Reproduction:
      • There are 25 locations
      • Set page length to 10. Page 1-20 of 21 shown.
      • Click the > to move to the next page. Page redraws showing 1-10 again.

Tasks (Improvements)

  • ✅ Separate the latitude and longitude after the business name into two new separate columns on the data grid.
    • Keep the name column pure with only the name rendered.
    • Add the latitude and longitude as separate columns as they are in the database.
    • This may require a back end change depending on how the REST data is procured.
  • ✅ Remember the state of the DataGrid columns.
    • The following properties of the DataGridPro should be remembered across page loads or table interactions:
      • Column Order
      • Hidden Columns
      • Filters
      • Sort Order
    • The state should be stored in the browser React state between page refreshes.
    • The state should make a REST call to store this state in the WordPress user meta as well.
      • This will likely require a new REST endpoint.
      • The meta key should start with the SLPLUS_PREFIX plus a name you deem appropriate (maybe csl-slplus-LocationsGridState)?
      • Use that user meta to remember the table state if the user moves off the page to another interface in WordPress and comes back.
      • This will also allow the table to remember the state if a user logs off and comes back the next day.
  • ✅ With DataGridPro there is an option to lock the table header (column names) and footer (pagination) and vertically scroll rows in between.
    • The display mode also appears to be able to match the height and width of the DataGridPro to the bounding box.
    • See the demo under the “Pro Version” header at https://mui.com/x/react-data-grid/

Feedback Turn 3 : Store Locator Plus plugin version 2607.23.01

Tasks (Issues)

  • ✅ Click the per-row checkbox does not check the box.
    • This issue has been a problem since Turn 1 and is going to need human intervention.
    • Cannot select single rows in the DataGrid.
    • The check/uncheck a single location does not work.

Tasks (Improvements)

  • ✅ Remove the LocationsFilter component from the LocationsTableHeader component.
    • The last remaining filter “Show Uncoded” is no longer needed now that latitude and longitude are on the column list.
  • Move the latitude and longitude column to be directly after the distance column on initial startup state.
  • ✅ When the DataGridPro meta data about column order, hide/show, or filters are in place add notification box above the table to let the user know “Custom table settings are in place. Some columns may be hidden or reordered.”

Feedback Turn 4 : Store Locator Plus plugin version 2607.23.02

Current (left) and preferred (right) notification box location.

Tasks (Improvements)

  • ✅ Move the notification box about custom columns to the top right.
  • ✅ Introduce a “Reset” button in the “Custom table settings” notification.
    • When the reset button is clicked, reset the DataGrid state back to the original defaults updating the stored state and related user meta in the process.
  • ✅ Add the built-in GridToolbarFilterButton and GridToolbarDensitySelector to the DataGridPro component in LocationsDataGrid.
  • Add the MUI Quick filter multi-field search to the DataGridPro by implementing the showToolbar property (see https://mui.com/x/react-data-grid/filtering/quick-filter/#system-QuickFilteringGrid.tsx)
  • ✅ Add an alternating row background to the data rows in the DataGridPro rendering.
  • ✅ The initial height for the DataGridPro component appears to be set according to the size of the slp-locations-grid or .react-wrapper div.
    • This element includes the LocationsTableHeader component and LocationsDataGrid component.
    • The height should be set by the available space in the outermost bounding layout element in LocationsDataGrid.

Observations

Actions to not need to be taken here. These are findings while reviewing the AI agent work.

  • To deal with styling issues with the React components, the AI Agent (Codex 5.6-Sol) added <div className=”react-wrapper”> to the LocationsTable component.
    • This would be more efficient by adding class=”react-wrapper” to the \SLP_Settings_manage_locations_table::display method that builds the div this React component attaches to.
      • Why? It creates one less HTML element the DOM processors need to navigate during processing.
  • Imports for React components are using “barrel imports” versus names imports.

Feedback Turn 5 : Store Locator Plus plugin version 2607.23.02

Tasks (Issues)

Tasks (Improvements)

  • ✅ Add the pin column setting to the state we remember about the data grid display. Store in local state and persistent user meta.
  • ✅ Move the Filters (GridToolbarFilterButton) and Density (GridToolbarDensitySelector) buttons after the Quick Filter search icon in the header.

Review

Task Summary

0 comments on “Locations Table : Convert Filter Interface To React Component”

Locations Table : Convert Filter Interface To React Component

Goal: Conversion the filter interface on the Locations | List page to a React component similar to the Bulk Actions and Search Box updates.


Research

Existing \SLP_Admin_Locations::createstring_FiltersBlock Method

\SLP_Admin_Locations::createstring_FiltersBlock creates the HTML string to render on the locationForm.
This fires the custom WordPress filter slp_locations_manage_filters to build an object array of properties for the drop down menu.
It builds up the $baExtras string if any object in the array has an ‘extras’ as a property.
It uses the $baExtras to build a dialog box modal attached to the #locationForm HTML Form on the page to add extra properties to form submissions.
This dialog is shown when specific drop down elements are selected.

\SLP_Admin_Locations::createstring_FiltersBlock calls \SLP_Admin_Helper::createstring_DropDownMenuWithButton to help build the dropdown HTML.
Creates the dropdown HTML via \SLP_Admin_Helper::createstring_DropDownMenu and adds a div wrapper and an <input…> HTML element masquerading as an icon button to trigger the drop down processing.


The bulk of the dropdown HTML is created with \SLP_Admin_Helper::createstring_DropDownMenu.
This builds the basic <select> and inner <option…> HTML elements into a string.

The slp_locations_manage_filters Filter

This filter is only used by the Power add on to extend the filter array of objects noted above.
The method that extends the array is \SLP_Power_Admin::filter_LocationsFilters.

Two filter drop down entries create extended modal dialog box interfaces:

\SLP_Power_Admin::createstring_FilterByPropertiesDiv

Add an iframe with a misnomer id ‘power_csv_download’ (this has nothing to do with csv downloads here).
Inside the HTML for the various location properties is created inside of \SLP_Power_Admin_Location_Filters::createstring_LocationFilterForm

\SLP_Power_Admin_Location_Filters::createstring_LocationFilterForm uses various methods to build up HTML input selectors including:

The modal dialog content when “With These Properties” (filter_by_property) is picked on the filter drop down.

Development

Follow the same design principles behind the Bulk Actions rewrite to make a React-based component for the location filters interface.

Create a new LocationsFilter component that is a sibling to the LocationsSearch and LocationsBulkActions (wp-content/plugins/store-locator-plus/src/components/locations/LocationsBulkActions.tsx) components.
Use a style similar to that for bulk actions.
Do not add an apply and apply to all button, instead use a filter icon button to submit the drop down selection.

Instead of a dialog box, use the same style slide out drawer used for Bulk Actions “categorize”.
Slide out from the right side, attached to the same parent div as the Drawer for the categoryDrawer.
Create the input elements in the same slide drawer as the categories filter following the order:

  • Name : input box
  • Zip: input box
  • State : make this an accordion that is collapsed by default
    • Inside the accordion use a checkbox list for all the states, built form the database of locations
  • Country : make this an accordion that is collapsed by default
    • Inside the accordion use a checkbox list for all the countries, built form the database of locations
  • Category : make this an accordion that is collapsed by default
    • Use a checklist of categories similar to that created for the BulkActions categorize interface

Retain the legacy jQuery driven form submission process to submit and process these filters.
Use styling similar to the Bulk Actions categorize drawer.
Create new REST endpoints only if necessary to fetch a list of states or countries from the list of locations.

Remove any legacy code that has been replaced by the new React interface after validating functionality.

0 comments on “Locations Table : Convert Search Box To React Component”

Locations Table : Convert Search Box To React Component

Goal: At the top of the Locations | List interface there is a search box for locations. This is currently rendered and managed with PHP+HTML+jQuery. Add this to the new React LocationsTableHeader component and deprecate the legacy code.


Research

Current UI/UX

This image shows the new Bulk Actions React component with the legacy filter and search PHP+HTML+jQuery UI below.

Existing LocationsTableHeader React Component

Typescript File: wp-content/plugins/store-locator-plus/src/components/locations/LocationsTableHeader.tsx

Legacy PHP+HTML Search Interface

HTML output string is generated in \SLP_Admin_Locations::createstring_SearchBlock.
This uses HTML based onkeypress and onClick attributes to trigger JavaScript actions.
Pressing enter in the search box or clicking on the search icon runs the jQuery-driven AdminUI.doAction(‘search’)


Development

Create A New LocationsSearch React Component

Create a new LocationsSearch React component that is a sibling of the LocationsBulkActions React component.
Create a search input box with a search icon button after that triggers the search.

UI/UX Updates

  • In LocationsTableHeader use MUI components to wrap all children that will allow for horizontal stacking of children.
    • LocationsTableHeader should take 100% of the width of parent .react-wrapper div.
    • If the children don’t fit
      • wrap the entire child component to the next line
      • do not use a horizontal scroll bar
  • Place the new LocationsSearch React component to the right of the LocationsBulkActions component.
  • All of for a future LocationsFilter component to be placed between the LocationsBulkActions and LocationsSearch components.
0 comments on “Locations Table (List Locations) : Bulk Actions Rewrite In React”

Locations Table (List Locations) : Bulk Actions Rewrite In React

Goal: Convert the Bulk Actions drop down menu and the associated apply and apply to all buttons into a React component.


Research

SLP_Admin_Locations PHP Class

This class manages the locations table interface.

\SLP_Admin_Locations::createstring_BulkActionsBlock

This method does most of the heavy lifting for the bulk actions drop down.

The bulk actions menu items are built from an array stored in $dropdownItems.

Extending The List Of Dropdown Options

The WordPress filter slp_locations_manage_bulkactions allows external modules to extend the $dropdownItems array.

The slp_locations_manage_bulkactions filter is called by these external modules:

Generating The Drop Down List HTML String

This is handled PHP generating an HTML string via \SLP_Admin_Helper::createstring_DropDownMenu.

Invoking The Bulk Actions

The selection on the bulk actions menu is executed via a jQuery on ‘click’ action that is attached to two divs posing as buttons.

The button interactions are driven via jQuery hooks that live in wp-content/plugins/store-locator-plus/js/admin-locations-tab.js
The invocation hooks via jQuery on ‘click’ and the methods that are invoked are in the SLP_Locations_table_header “class” in admin-locations-tab.js.

Apply
  • Intended to run the action against the locations that have been checked off using the locations table checkboxes which is rendered with PHP and HTML.
  • DIV ID #do_action_apply
Apply To All
  • Intended to run against ALL locations in the database.
  • DIV ID #do_action_apply_to_all
Render Additional Metadata User Interfaces

Some of the items on the drop down menu allow for extra meta data to be set by the user.
This meta data is sent along with the other form data for the locations table to the backend when the Apply or Apply To All buttons are processed via jQuery.

The only two use cases are for:

  • User category selection
    • attached to the ‘categorize’ dropdown item
    • shows the div with a checkbox list of categories available to locations when the users selects this dropdown item
    • the categories come from the WordPress taxonomy system using the SLPlus::locationTaxonomy (set to ‘stores’) property to determine the taxonomy label
  • User tag input
    • attached to the ‘add_tag’ dropdown item
    • shows a div with an input text box where the user can enter a string of comma separated values

\SLP_Admin_Locations::$settings

The SLP_Admin_Locations class leverages multiple methods from the SLP_Settings class via \SLP_Admin_Locations::$settings to manage the current PHP/HTML/JavaScript heavy implementation. The $settings property and thus SLP_Settings class manages much of the PHP-to-React interfaces.

A primary method of “feeding” variables from WordPress, PHP, and the underlying SQL data is managed via the \SLP_Settings::get_vars_for_react method


Development

Pre-Existing Issue

  • With the Export, Hosted CSV bulk action and checking the first 5 items, the export worked but the “Location Processing Info” box with the download link cannot be closed from the UI.
    • This should close when clicking outside the box.
    • Consider changing the header in the confirmation modal to the action name, in this case “Export, Hosted CSV”.

Second Turn Review

UI/UX Issues

  • LocationsTableHeader component needs some left margin/padding to align with the legacy PHP-derived table output below.
    It should not be flush against the left sidebar menu interface.
  • The Apply / Apply To All / Close buttons on the revised Category slide out drawer look awful and needs to follow modern design best practices.
  • Redesign the header of the slide out to follow a design like this:
  • A clear header box (white on white) with the text “Categorize Locations” instead of “Categories” in place of Settings in this example.
  • Use simple icons from MUI Icons with highlighted tool tips on hover (immediate, no wait)
    • CloseOutlinedIcon for close
    • ChecklistOutlinedIcon for Apply
    • FactCheckOutlinedIcon for Apply To All
  • In addition, I see the LocationsBulkActions component is using a deprecated property in the Drawer component.
    • PaperProps is deprecated for MUI <Drawer…>
  • On the Tag, Add modal add the Apply and Apply To All buttons
    • Change “done” to cancel.
    • Follow the same implementation as the category slide out, fire the underlying “apply” and “apply to all” functions from the main bulk actions form.
    • Apply , Apply To All, and Cancel should all be action buttons on the bottom of the modal.
    • When this modal exits, reset the Bulk Actions drop down back to the default no action “Bulk Actions” selection (first selection) same as when the categorize slide out closes.


Initial Turn Review

UI/UX Issues

  • Do not need “Bulk Actions” label around the drop down selector AND the word “Bulk Actions” as the first entry in the drop-down menu.
    • If the Bulk Actions in the border around the selector is considered best practices for a Material UI interface, leave that one remove the “Bulk Actions” from the first entry in the drop down menu, otherwise remove the border and “Bulk Actions” label entirely.
  • The box containing the <LocationsBulkActions/> component needs some padding above it to provide visual separation from the AdminHeader page title and tab bar (horizontal menu).
  • Sort the drop down list of bulk actions alphabetically.
  • Change the text from “Stop Featuring Location” to “Feature Location, Stop”
  • Change the text from “Feature Location” to “Feature Location, Start”
  • Change the text from “Tag” to “Tag, Add”
  • When choosing the Categorize bulk action, the side drawer does not render in the div#wpbody HTML element, causing the top portion to be obscured by the div#wpadminbar generated by WordPress.
  • When closing the Categorize slide-out the drop down menu should re-select the first entry
    • The issue is after closing categorize the user will need to select a different drop down entry to be able to show categorize again, this creates extra steps to re-draw the categorize slide out.
  • Add another pair of buttons to the top of the categorize slide-out for:
    • apply – does the same thing as the bulk action “apply” button
    • apply to all – does the same thing as the bulk action “apply to all” button
    • close the slide out after either slide out button or the slide out close icon is clicked
  • The extra meta input for the add_tags drop down entry has a label “comma separated tags” that is hard to read due to the border outline.
  • When going to other tabs on the Location page such as Add, Import, or Load, the new LocationsBulkActions component should be hidden, it only applies to the List tab.
    • Eventually the LocationsBulkActions will be within a TabPanel MUI React component driven by the tabs alongside the actual list of locations data table (currently rendered with PHP) and will be managed by the MUI tabs interface.
      • As such it may be prudent to wire this as a standard MUI TabPanel instead of inside a generic Box component and let the AdminHeader sections perform the standard tab-switching built into MUI.

Code Review

\SLP_Settings_manage_locations_table

In \SLP_Settings_manage_locations_table::get_bulk_actions_for_react the filter slp_locations_manage_bulkactions is applied.
One of the filters calls \SLP_Power_Admin_Locations::extend_bulk_actions.
Some of the entries in the returned array from \SLP_Power_Admin_Locations::extend_bulk_actions includes a lot of HTML stored in the ‘extra’ property of some of the array elements (see ‘add_tag’ and ‘categorize’ in \SLP_Power_Admin_Locations::extend_bulk_actions).
The values in the array returned by the filter is then passed through \SLP_Settings_manage_locations_table::normalize_bulk_action_for_react which replaces any ‘extra’ properties with a simple string of ‘tag’ or ‘categories’.
This makes all of the information stored in the ‘extra’ properties defined in \SLP_Power_Admin_Locations::extend_bulk_actions unnecessary.
I have removed the excess overhead from \SLP_Power_Admin_Locations::extend_bulk_actions.
This should have been caught in the code review process.
Creating solutions is great. Leaving behind a mess of unused legacy code that is not longer useful is not great.


Initial Turn

The HTML interface that presents the extra options to the user is part of the \SLP_Admin_Locations::createstring_BulkActionsBlock method.
The additional HTML element is stored in the $baExtras variable in the \SLP_Admin_Locations::createstring_BulkActionsBlock method.

$baExtras is built from The List Of Dropdown Options that was extended via the slp_locations_manage_bulkactions filter.

LocationsTableHeader React Component

TypeScript source: wp-content/plugins/store-locator-plus/src/components/locations/LocationsTableHeader.tsx
Part of the store-locator-plus plugin.
New as of Store Locator Plus v2606.30.01

This is where the Bulk Actions will end up being rendered when this task is finished.
Eventually we will add the location filters and search interfaces to the LocationsTableHeader component.

For this task I suggest creating a new component alongside (in the same directory as) the LocationsTableHeader React component named LocationsBulkActions. Render that in place of the existing “<p>Locations Table Header</p>” placeholder in the LocationsTableHeader component.

Setting Up The Dropdown List

Create a local get_vars_for_react method in SLP_Admin_Locations that extends the \SLP_Settings::get_vars_for_react method attached to the SLP_Admin_Locations\settings property.

It should store the bulk actions dropdown options in an array property that is added to the existing var being managed by the get_vars_for_react parent methods. When it reaches this new method in SLP_Admin_Locations\get_vars_for_react, which should call the $this->settings->get_vars_for_react() method first, the general properties available in the array should be:

SLPReact{… shown below}

  • SLP
    • apikey
  • mainButtons
  • MySLP
  • nonce
  • pageName
  • scriptHandle
  • sections
  • url
    • main_site
    • rest : the base URL for REST requests
    • slp_documentation

I suggest adding $vars[‘SLP’][‘bulkActions’] to store the drop down items, extracting that element from the existing architecture in \SLP_Admin_Locations::createstring_BulkActionsBlock.

Setting Up The Additional Metadata User Interfaces

For this element we are dealing with two fairly static components, a category checklist for the ‘categorize’ dropdown option and a text input for tags for the ‘add_tag’ dropdown option.

add_tag additional metadata interface

Since the underlying location tag data properties are always available, there is no need to only render this interface when the Power plugin is active. As such this can be directly added as a modal interface in LocationsBulkActions. The interface should only be shown when the ‘add_tag’ dropdown option is selected.

categorize additional metadata interface

This component should only be shown when the ‘categorize’ drop down is selected.

The list of category checkboxes may be better served being shown in a slide-out drawer attached to the right side of the page.

The context should be a checklist of the available categories from the WordPress taxonomy system for the \SLPlus::locationTaxonomy (‘stores’) taxonomy.
The checklist should honor the hierarchy system of the category list, rendering children indented one level directly underneath their parent entry.

I suggest Axios and a REST endpoint to fetch the category list the first time the ‘categorize’ drop down option is invoked.
Store the response in a state variable to prevent future REST queries during a single user interaction.
Show a loading indicator while fetching the list of categories.