Bridle Path

Walk in historic footsteps – and get fit – on this route constructed in 1850 for Canterbury's first European settlers travelling between Lyttelton and Christchurch.

Start Car park at the foot of the Gondola, Heathcote
Finish Bridle Path Road, Lyttelton
Distance 2.4km
Time 1.5 hours one way
Toilets Lyttelton
Dogs Must be kept on a leash
Description

The trail starts in Heathcote at the car park between the Gondola and the Lyttelton tunnel portal. Be prepared for a good workout as it is a steep walk but the views from the summit are well worth the effort.

As you walk up you will see what remains of Castle Rock to the west and the massive boulders strewn down the hillside in the Christchurch earthquakes. There are a number of memorial seats on the way up and a stone shelter at the top to commemorate the pioneer women of Canterbury.

Pause at the Summit Road to enjoy the panoramic view over Lyttelton Harbour with Banks Peninsula's highest peak, Mt Herbert (Te Ahu Pataki) rising above the small settlement of Diamond Harbour.

From here you can head back the same way, pick up the Crater Rim Walkway in either direction or continue on to Lyttelton. The track to Lyttelton descends steeply before joining up with Bridle Path Road.

On Saturdays, you can visit the popular Lyttelton Farmers Market. Catch the 28 Bus back through the tunnel to Heathcote near the Bridle Path car park.

An alternative walk is to catch the Gondola up to Mt Cavendish and walk down.

Get ready for this track using Plan My Walk(external link) by the NZ Mountain Safety Council. You can find track alerts, weather forecasts, trip reviews and a packing list, so you are set for your adventure. 

Esri Logo

ArcGIS Web Adaptor

Could not access any server machines. Please contact your system administrator.

; combinedData.features = $.merge( $.merge( [], combinedData.features ), datasets['dataset_165'].features); layerGroup['Walking tracks'] = L.featureGroup(); //Loop all datasets in layer //First dataset creates var layerData = datasets['dataset_165']; // Layer title, using all combined data included in layer var showProp = function (properties, name) { return (properties.hasOwnProperty(name)) ? properties[name] : '[' + name + ']'; } layerData.features.forEach(element => { jQuery.each(element.properties, function(i, val) { if(val && (typeof val) == 'string'){ element.properties[i] = val.toString().replace(/'/g, "'"); } }); }); walking_tracks_complete_api = L.geoJson(layerData, { onEachFeature: function(feature, layer){ // Shorten locale.feature.properties to just `prop` so we're not // writing this long form over and over again. var prop = layer.feature.properties; feature.layer = layer; //required for search indexing // with var popup = ''; var medPopup = ''; var lgePopup = ''; var lgeContent = false; // Set popups for markers if (prop.routename) { popup += ''+prop.routename+''; } if (prop.routename) { medPopup = ''; //Max width for popup size maxWidth = popupConfig.maxWidth; //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setContent(popup) } else { popupWrapper = new L.popup({offset: [0, 0], maxWidth: popupConfig.maxWidth}) .setContent(popup) } layer.bindPopup(popupWrapper); var popupWrapper; // Marker interaction layer.off('click').on('click', function(e) { //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); //Hack to stop popup redrawing and resizing on second click if ( $(layer.getPopup()._wrapper).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); layer.on('mouseover', function(e) { if ($('.popupClicked').length == 0) { //open popup if no expanded popups are open; //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); }; //make popup interactive $(layer.getPopup()._wrapper).off('click.layerClick').on('click.layerClick', function(e) { //Hack to stop popup redrawing and resizing on second click if ( $(this).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); }); layer.bindPopup(popupWrapper); }, // with // LOOP pointToLayer: function (feature, latlng) { //Create IF statement to use as a filter for each marker if ( feature.properties.routeshareduse != 'Yes' && feature.properties.routeservicestatus == 'Open' ){ return L.marker(latlng, { icon: L.icon({ iconUrl: '', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }; //Create IF statement to use as a filter for each marker if ( feature.properties.routeservicestatus != 'Open' ){ return L.marker(latlng, { icon: L.icon({ iconUrl: '', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }; //Create IF statement to use as a filter for each marker if ( feature.properties.routeservicestatus == 'Open' && feature.properties.routeshareduse == 'Yes' ){ return L.marker(latlng, { icon: L.icon({ iconUrl: '', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }; }, // set style style: function(feature) { if ( feature.properties.routeshareduse != 'Yes' && feature.properties.routeservicestatus == 'Open' ){ return { color: '#9b0090', fillColor: '#9b0090', weight: 7, opacity: 0.8, fillOpacity: 0.6, dashArray: 0, smoothFactor: 1, } }; if ( feature.properties.routeservicestatus != 'Open' ){ return { color: '#000000', fillColor: '#000000', weight: 7, opacity: 0.8, fillOpacity: 0.6, dashArray: [1,8], smoothFactor: 1, } }; if ( feature.properties.routeservicestatus == 'Open' && feature.properties.routeshareduse == 'Yes' ){ return { color: '#f58026', fillColor: '#f58026', weight: 7, opacity: 0.8, fillOpacity: 0.6, dashArray: [1,8], smoothFactor: 1, } }; }, //with Filters //LOOP filter: function(feature){ if ( feature.properties.routehierarchy == 'Primary' && feature.properties.routetraffic == 'Walk' ){ return true } else { return false } }, //END WITH //With attribution (layer) attribution: 'Data: Christchurch City Council' //end WITH }); layerGroup['Walking tracks'].addLayer(walking_tracks_complete_api); //Loop all datasets in layer //First dataset creates var layerData = datasets['dataset_165']; // Layer title, using all combined data included in layer var showProp = function (properties, name) { return (properties.hasOwnProperty(name)) ? properties[name] : '[' + name + ']'; } layerData.features.forEach(element => { jQuery.each(element.properties, function(i, val) { if(val && (typeof val) == 'string'){ element.properties[i] = val.toString().replace(/'/g, "'"); } }); }); connecting_track_api = L.geoJson(layerData, { onEachFeature: function(feature, layer){ // Shorten locale.feature.properties to just `prop` so we're not // writing this long form over and over again. var prop = layer.feature.properties; feature.layer = layer; //required for search indexing // with var popup = ''; var medPopup = ''; var lgePopup = ''; var lgeContent = false; // Set popups for markers if (prop.routehierarchy) { popup += ''+prop.routehierarchy+''; } if (prop.routehierarchy) { medPopup = ''; //Max width for popup size maxWidth = popupConfig.maxWidth; //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setContent(popup) } else { popupWrapper = new L.popup({offset: [0, 0], maxWidth: popupConfig.maxWidth}) .setContent(popup) } layer.bindPopup(popupWrapper); var popupWrapper; // Marker interaction layer.off('click').on('click', function(e) { //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); //Hack to stop popup redrawing and resizing on second click if ( $(layer.getPopup()._wrapper).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); layer.on('mouseover', function(e) { if ($('.popupClicked').length == 0) { //open popup if no expanded popups are open; //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); }; //make popup interactive $(layer.getPopup()._wrapper).off('click.layerClick').on('click.layerClick', function(e) { //Hack to stop popup redrawing and resizing on second click if ( $(this).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); }); layer.bindPopup(popupWrapper); }, // with // LOOP pointToLayer: function (feature, latlng) { //Create IF statement to use as a filter for each marker if ( feature.properties.routeservicestatus == 'Open' ){ return L.marker(latlng, { icon: L.icon({ iconUrl: '', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }; //Create IF statement to use as a filter for each marker if ( feature.properties.routeservicestatus != 'Open' ){ return L.marker(latlng, { icon: L.icon({ iconUrl: '', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }; }, // set style style: function(feature) { if ( feature.properties.routeservicestatus == 'Open' ){ return { color: '#007dba', fillColor: '#007dba', weight: 7, opacity: .8, fillOpacity: .8, dashArray: [1,8], smoothFactor: 1, } }; if ( feature.properties.routeservicestatus != 'Open' ){ return { color: '#e42020', fillColor: '#e42020', weight: 7, opacity: .8, fillOpacity: .8, dashArray: 0, smoothFactor: 1, } }; }, //with Filters //LOOP filter: function(feature){ if ( feature.properties.routehierarchy == 'Connector' || feature.properties.routehierarchy == 'Secondary' ){ return true } else { return false } }, //END WITH //With attribution (layer) attribution: 'Data: Christchurch City Council' //end WITH }); layerGroup['Walking tracks'].addLayer(connecting_track_api); boundsSet = true; boundsFromLayer = layerGroup['Walking tracks'].getBounds(); map.fitBounds(layerGroup['Walking tracks'].getBounds()); layerGroup['Accessible walking tracks'] = L.featureGroup(); //Loop all datasets in layer //First dataset creates var layerData = datasets['dataset_199']; // Layer title, using all combined data included in layer var showProp = function (properties, name) { return (properties.hasOwnProperty(name)) ? properties[name] : '[' + name + ']'; } layerData.features.forEach(element => { jQuery.each(element.properties, function(i, val) { if(val && (typeof val) == 'string'){ element.properties[i] = val.toString().replace(/'/g, "'"); } }); }); walking_tracks_accessible_tracks = L.geoJson(layerData, { onEachFeature: function(feature, layer){ // Shorten locale.feature.properties to just `prop` so we're not // writing this long form over and over again. var prop = layer.feature.properties; feature.layer = layer; //required for search indexing // with var popup = ''; var medPopup = ''; var lgePopup = ''; var lgeContent = false; // Set popups for markers if (prop.title) { popup += ''+prop.title+''; } if (prop.title) { medPopup = ''; //Max width for popup size maxWidth = popupConfig.maxWidth; //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setContent(popup) } else { popupWrapper = new L.popup({offset: [0, 0], maxWidth: popupConfig.maxWidth}) .setContent(popup) } layer.bindPopup(popupWrapper); var popupWrapper; // Marker interaction layer.off('click').on('click', function(e) { //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); //Hack to stop popup redrawing and resizing on second click if ( $(layer.getPopup()._wrapper).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); layer.on('mouseover', function(e) { if ($('.popupClicked').length == 0) { //open popup if no expanded popups are open; //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); }; //make popup interactive $(layer.getPopup()._wrapper).off('click.layerClick').on('click.layerClick', function(e) { //Hack to stop popup redrawing and resizing on second click if ( $(this).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); }); layer.bindPopup(popupWrapper); }, // with // LOOP pointToLayer: function (feature, latlng) { return L.marker(latlng, { icon: L.icon({ iconUrl: '', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }, // set style style: function(feature) { return { color: '#9b0090', fillColor: '#9b0090', weight: 5, opacity: 1, fillOpacity: 1, smoothFactor: 1, } }, //with Filters //LOOP filter: function(feature){ //CTOC FUNCTIONALITY if (typeof generateLayers != 'undefined' && typeof generateLayers == 'function') { if (feature.geometry.type == "Point" ){ if (closeEnoughToShow([feature.geometry.coordinates[1], feature.geometry.coordinates[0]], route) === true){ return true; }; }; return false; }; return true }, //END WITH //With attribution (layer) //end WITH }); layerGroup['Accessible walking tracks'].addLayer(walking_tracks_accessible_tracks); //Loop all datasets in layer //First dataset creates var layerData = datasets['dataset_200']; // Layer title, using all combined data included in layer var showProp = function (properties, name) { return (properties.hasOwnProperty(name)) ? properties[name] : '[' + name + ']'; } layerData.features.forEach(element => { jQuery.each(element.properties, function(i, val) { if(val && (typeof val) == 'string'){ element.properties[i] = val.toString().replace(/'/g, "'"); } }); }); walking_tracks_accessible_tracks_points_of_interest = L.geoJson(layerData, { onEachFeature: function(feature, layer){ // Shorten locale.feature.properties to just `prop` so we're not // writing this long form over and over again. var prop = layer.feature.properties; feature.layer = layer; //required for search indexing // with var popup = ''; var medPopup = ''; var lgePopup = ''; var lgeContent = false; // Set popups for markers if (prop.pointcateg) { popup += ''+prop.pointcateg+''; } if (prop.pointcateg) { medPopup = ''; //Max width for popup size maxWidth = popupConfig.maxWidth; //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setContent(popup) } else { popupWrapper = new L.popup({offset: [0, 0], maxWidth: popupConfig.maxWidth}) .setContent(popup) } layer.bindPopup(popupWrapper); var popupWrapper; // Marker interaction layer.off('click').on('click', function(e) { //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); //Hack to stop popup redrawing and resizing on second click if ( $(layer.getPopup()._wrapper).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); layer.on('mouseover', function(e) { if ($('.popupClicked').length == 0) { //open popup if no expanded popups are open; //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); }; //make popup interactive $(layer.getPopup()._wrapper).off('click.layerClick').on('click.layerClick', function(e) { //Hack to stop popup redrawing and resizing on second click if ( $(this).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); }); layer.bindPopup(popupWrapper); }, // with // LOOP pointToLayer: function (feature, latlng) { //Create IF statement to use as a filter for each marker if ( feature.properties.posneg == 'good' && feature.properties.pointcateg != 'Parking' && feature.properties.pointcateg != 'Entry/Exit' ){ return L.marker(latlng, { icon: L.icon({ iconUrl: '/assets/maps/markers/Newbrand-pointer-85x130.png', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }; //Create IF statement to use as a filter for each marker if ( feature.properties.posneg == 'bad' && feature.properties.pointcateg != 'Entry/Exit' && feature.properties.pointcateg != 'Parking' ){ return L.marker(latlng, { icon: L.icon({ iconUrl: '/assets/maps/markers/New-brand-colours/Punt-Tahi-pointer-85x125.png', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }; //Create IF statement to use as a filter for each marker if ( feature.properties.pointcateg == 'Parking' ){ return L.marker(latlng, { icon: L.icon({ iconUrl: '/assets/maps/markers/Parking-blue-pointer-85x125.png', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }; //Create IF statement to use as a filter for each marker if ( feature.properties.pointcateg == 'Entry/Exit' ){ return L.marker(latlng, { icon: L.icon({ iconUrl: '/assets/maps/markers/New-brand-colours/Pukeko-Tahi-pointer-85x125.png', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }; }, // set style style: function(feature) { if ( feature.properties.posneg == 'good' && feature.properties.pointcateg != 'Parking' && feature.properties.pointcateg != 'Entry/Exit' ){ return { smoothFactor: 1, } }; if ( feature.properties.posneg == 'bad' && feature.properties.pointcateg != 'Entry/Exit' && feature.properties.pointcateg != 'Parking' ){ return { smoothFactor: 1, } }; if ( feature.properties.pointcateg == 'Parking' ){ return { smoothFactor: 1, } }; if ( feature.properties.pointcateg == 'Entry/Exit' ){ return { smoothFactor: 1, } }; }, //with Filters //LOOP filter: function(feature){ if ( feature.properties.pointcateg != 'Crossroads' && feature.properties.pointcateg != 'Signage' ){ return true } else { return false } }, //END WITH //With attribution (layer) //end WITH }); layerGroup['Accessible walking tracks'].addLayer(walking_tracks_accessible_tracks_points_of_interest); layerGroup['Parking'] = L.featureGroup(); //Loop all datasets in layer //First dataset creates var layerData = datasets['dataset_26']; // Layer title, using all combined data included in layer var showProp = function (properties, name) { return (properties.hasOwnProperty(name)) ? properties[name] : '[' + name + ']'; } layerData.features.forEach(element => { jQuery.each(element.properties, function(i, val) { if(val && (typeof val) == 'string'){ element.properties[i] = val.toString().replace(/'/g, "'"); } }); }); recreationalparking = L.geoJson(layerData, { onEachFeature: function(feature, layer){ // Shorten locale.feature.properties to just `prop` so we're not // writing this long form over and over again. var prop = layer.feature.properties; feature.layer = layer; //required for search indexing // with var popup = ''; var medPopup = ''; var lgePopup = ''; var lgeContent = false; // Set popups for markers if (prop.rpt_RecreationalParkingClassification) { popup += ''+prop.rpt_RecreationalParkingClassification+''; } if (prop.rpt_RecreationalParkingClassification) { medPopup = ''; //Max width for popup size maxWidth = popupConfig.maxWidth; //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setContent(popup) } else { popupWrapper = new L.popup({offset: [0, 0], maxWidth: popupConfig.maxWidth}) .setContent(popup) } layer.bindPopup(popupWrapper); var popupWrapper; // Marker interaction layer.off('click').on('click', function(e) { //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); //Hack to stop popup redrawing and resizing on second click if ( $(layer.getPopup()._wrapper).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); layer.on('mouseover', function(e) { if ($('.popupClicked').length == 0) { //open popup if no expanded popups are open; //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); }; //make popup interactive $(layer.getPopup()._wrapper).off('click.layerClick').on('click.layerClick', function(e) { //Hack to stop popup redrawing and resizing on second click if ( $(this).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); }); layer.bindPopup(popupWrapper); }, // with // LOOP pointToLayer: function (feature, latlng) { return L.marker(latlng, { icon: L.icon({ iconUrl: '/assets/maps/markers/Parking-blue-pointer-85x125.png', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }, // set style style: function(feature) { return { smoothFactor: 1, } }, //with Filters //LOOP filter: function(feature){ if ( feature.properties.rpt_RecreationalParkingServiceStatus == 'Open' ){ return true } else { return false } }, //END WITH //With attribution (layer) attribution: 'Data: Christchurch City Council' //end WITH }); layerGroup['Parking'].addLayer(recreationalparking); layerGroup['Bus stops'] = L.featureGroup(); //Loop all datasets in layer //First dataset creates var layerData = datasets['dataset_96']; // Layer title, using all combined data included in layer var showProp = function (properties, name) { return (properties.hasOwnProperty(name)) ? properties[name] : '[' + name + ']'; } layerData.features.forEach(element => { jQuery.each(element.properties, function(i, val) { if(val && (typeof val) == 'string'){ element.properties[i] = val.toString().replace(/'/g, "'"); } }); }); walking_tracks_closest_bus_stop = L.geoJson(layerData, { onEachFeature: function(feature, layer){ // Shorten locale.feature.properties to just `prop` so we're not // writing this long form over and over again. var prop = layer.feature.properties; feature.layer = layer; //required for search indexing // with var popup = ''; var medPopup = ''; var lgePopup = ''; var lgeContent = false; // Set popups for markers if (prop.Address) { popup += ''+prop.Address+''; } if (prop.Address) { medPopup = ''; //Max width for popup size maxWidth = popupConfig.maxWidth; //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setContent(popup) } else { popupWrapper = new L.popup({offset: [0, 0], maxWidth: popupConfig.maxWidth}) .setContent(popup) } layer.bindPopup(popupWrapper); var popupWrapper; // Marker interaction layer.off('click').on('click', function(e) { //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); //Hack to stop popup redrawing and resizing on second click if ( $(layer.getPopup()._wrapper).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); layer.on('mouseover', function(e) { if ($('.popupClicked').length == 0) { //open popup if no expanded popups are open; //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); }; //make popup interactive $(layer.getPopup()._wrapper).off('click.layerClick').on('click.layerClick', function(e) { //Hack to stop popup redrawing and resizing on second click if ( $(this).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); }); layer.bindPopup(popupWrapper); }, // with // LOOP pointToLayer: function (feature, latlng) { return L.marker(latlng, { icon: L.icon({ iconUrl: '/assets/maps/markers/bus-pointer3.fw.png', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }, // set style style: function(feature) { return { color: '#555555', fillColor: '#555555', weight: .7, opacity: .7, fillOpacity: .7, smoothFactor: 1, } }, //with Filters //LOOP filter: function(feature){ //CTOC FUNCTIONALITY if (typeof generateLayers != 'undefined' && typeof generateLayers == 'function') { if (feature.geometry.type == "Point" ){ if (closeEnoughToShow([feature.geometry.coordinates[1], feature.geometry.coordinates[0]], route) === true){ return true; }; }; return false; }; return true }, //END WITH //With attribution (layer) attribution: 'Data: Christchurch City Council' //end WITH }); layerGroup['Bus stops'].addLayer(walking_tracks_closest_bus_stop); layerGroup['Toilets'] = L.featureGroup(); //Loop all datasets in layer //First dataset creates var layerData = datasets['dataset_114']; // Layer title, using all combined data included in layer var showProp = function (properties, name) { return (properties.hasOwnProperty(name)) ? properties[name] : '[' + name + ']'; } layerData.features.forEach(element => { jQuery.each(element.properties, function(i, val) { if(val && (typeof val) == 'string'){ element.properties[i] = val.toString().replace(/'/g, "'"); } }); }); smartcities_public_toilets = L.geoJson(layerData, { onEachFeature: function(feature, layer){ // Shorten locale.feature.properties to just `prop` so we're not // writing this long form over and over again. var prop = layer.feature.properties; feature.layer = layer; //required for search indexing // with var popup = ''; var medPopup = ''; var lgePopup = ''; var lgeContent = false; // Set popups for markers if (prop.Name) { popup += ''+prop.Name+''; } if (prop.Name) { medPopup = ''; //Max width for popup size maxWidth = popupConfig.maxWidth; //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setContent(popup) } else { popupWrapper = new L.popup({offset: [0, 0], maxWidth: popupConfig.maxWidth}) .setContent(popup) } layer.bindPopup(popupWrapper); var popupWrapper; // Marker interaction layer.off('click').on('click', function(e) { //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); //Hack to stop popup redrawing and resizing on second click if ( $(layer.getPopup()._wrapper).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); layer.on('mouseover', function(e) { if ($('.popupClicked').length == 0) { //open popup if no expanded popups are open; //layer.openPopup(); //create custom popup if (layer.feature.geometry.type == "Point") { popupWrapper = new L.popup({offset: [-4, -43], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } else { popupWrapper = new L.popup({offset: [0, 5], maxWidth: popupConfig.maxWidth}) .setLatLng(e.latlng) .setContent(popup) .openOn(map); } layer.bindPopup(popupWrapper); }; //make popup interactive $(layer.getPopup()._wrapper).off('click.layerClick').on('click.layerClick', function(e) { //Hack to stop popup redrawing and resizing on second click if ( $(this).parent().hasClass('popupClicked') == false ) { detailPopup(e, popup, medPopup, lgePopup, lgeContent, layer); //final param is unique property ID } }); }); layer.bindPopup(popupWrapper); }, // with // LOOP pointToLayer: function (feature, latlng) { return L.marker(latlng, { icon: L.icon({ iconUrl: '/assets/maps/markers/Toilet-marker2.png', //Marker filepath iconSize: defaultSize, // size of the icon iconAnchor: defaultIconAnchor, // point of the icon which will correspond to marker's location popupAnchor: defaultPopupAnchor // point from which the popup should open relative to the iconAnchor }), riseOnHover: true }); }, // set style style: function(feature) { return { smoothFactor: 1, } }, //with Filters //LOOP filter: function(feature){ //CTOC FUNCTIONALITY if (typeof generateLayers != 'undefined' && typeof generateLayers == 'function') { if (feature.geometry.type == "Point" ){ if (closeEnoughToShow([feature.geometry.coordinates[1], feature.geometry.coordinates[0]], route) === true){ return true; }; }; return false; }; return true }, //END WITH //With attribution (layer) attribution: 'Data: Christchurch City Council' //end WITH }); layerGroup['Toilets'].addLayer(smartcities_public_toilets);

Walking tracks


Shared use


Connecting tracks


Closed


Parking square 100x100

Parking


bus

Bus stop


Toilets

Toilets


 
Accessible tracks


Punt Tahi pointer 85x125

Challenging feature


Pukeko Tahi pointer 85x125

Entry and exit point


Avon River Rua pointer 85x125

Point of interest