combicart Posted August 8, 2016 Share Posted August 8, 2016 Hello, I'm currently trying to implementing a store locator on my website (https://github.com/bjorn2404/jQuery-Store-Locator-Plugin). To render the stores on the map the stores are being loaded from an XML file. To geocode the locations, i've installed the Maps Marker from Ryan (http://modules.processwire.com/modules/fieldtype-map-marker/). So far so good, however now I'm stuck at generating the actual XML file. Especially in printing the individual stores in a foreach loop. For the XML file, i've take some inspiration from the sitemap.xml file The stores all have a template called 'location'. Can I just load those locations with $pages->find("template=location")? The code that I have so far: <?php function renderLocation(Page $page) { return "\n<marker " . "name=" . $page->title . "/>"; } function renderLocationsXML(array $locations = array()) { $out = '<?xml version="1.0" encoding="utf-8"?>'; $out .= '\n<markers>'; // Foreach loop? $out .= '\n</markers>'; return $out; } header("Content-Type: text/xml"); echo renderLocationXML; The XML file has to be in the following format <?xml version="1.0" encoding="utf-8"?> <markers> <marker name="Chipotle Minneapolis" lat="44.947464" lng="-93.320826" category="Restaurant" address="3040 Excelsior Blvd" address2="" city="Minneapolis" state="MN" postal="55416" country="US" phone="612-922-6662" email="info@chipotle.com" web="http://www.chipotle.com" hours1="Mon-Sun 11am-10pm" hours2="" hours3="" featured="" features="" /> <marker name="Chipotle St. Louis Park" lat="44.930810" lng="-93.347877" category="Restaurant" address="5480 Excelsior Blvd." address2="" city="St. Louis Park" state="MN" postal="55416" country="US" phone="952-922-1970" email="info@chipotle.com" web="http://www.chipotle.com" hours1="Mon-Sun 11am-10pm" hours2="" hours3="" featured="" features="Online Ordering " /> </markers> Could someone point in the right direction in how to create the function / foreach loop to generate the marker data / locations inside the XML file? Link to comment Share on other sites More sharing options...
Robin S Posted August 8, 2016 Share Posted August 8, 2016 For a Map Marker field named 'map'... function renderLocationsXML($locations) { $out = '<?xml version="1.0" encoding="utf-8"?>'; $out .= '\n<markers>'; foreach ($locations as $location) { // use any fields of $location $out .= "<marker name='{$location->title}' lat='{$location->map->lat}' lng='{$location->map->lng}' />"; } $out .= '\n</markers>'; return $out; } $locations = $pages->find("template=location"); header("Content-Type: text/xml"); echo renderLocationXML($locations); 2 Link to comment Share on other sites More sharing options...
combicart Posted August 9, 2016 Author Share Posted August 9, 2016 Thanks Robin, that worked perfectly! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now