M22 (Northern Ireland)

The M22 is a direct continuation west from the end of the Northern Ireland M2's southern half. It's a decidedly confusing road, and you could be forgiven for thinking you were on the M2. Its number and route make sense in the context of Northern Ireland's original motorway proposals, but make no sense whatsoever in the context of the motorways that were actually built.

It serves as a bypass of Randalstown before returning traffic to the A6 towards Derry/Londonderry, and peters out in a slightly underwhelming fashion, finishing with a flat T-junction.

Its interface with the M2 might be the most interesting feature about it - it's certainly the most bewildering. The M22 doesn't take over where you'd expect, which is the A26 junction where traffic wishing to continue following the M2 would turn off towards Ballymena. That point is actually M22 junction 1, and the M22 has already begun. In fact, the junction between the two motorways is at a point where no junction exists - a place about half a mile east of M22 junction 1, where there is, even now, a gap between the carriageways, leaving room for the interchange where the M2 would have branched off northwards to Ballymena.

There have been suggestions that it would now make more sense to renumber the M22 as the main M2, and call the orphaned Ballymena Bypass M26 instead, but so far the Northern Ireland Roads Service has not showed any inclination to change the longstanding, but undoubtedly confusing, status quo.

Start
Antrim
End
Randalstown
Passes
None
Connects to
Length
5 miles
Open Junctions Section
1971 J1-2 Dunsilly → Ballygrooby
1973 J2-3 Ballygrooby → Artresnahan

Exit list

Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(233) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(780) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'image_formatter' -->
    <!-- BEGIN OUTPUT from 'core/modules/image/templates/image-formatter.html.twig' -->
      
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'image' -->
    <!-- BEGIN OUTPUT from 'themes/bootstrap/templates/system/image.html.twig' -->
    <img src="/sites/default/files/motorway/m/rbpr-ap-sc.gif" width="50" height="50" typeof="foaf:Image" />
    
    <!-- END OUTPUT from 'themes/bootstrap/templates/system/image.html.twig' -->
    
    
    
    <!-- END OUTPUT from 'core/modules/image/templates/image-formatter.html.twig' -->
    
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(780) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'image_formatter' -->
    <!-- BEGIN OUTPUT from 'core/modules/image/templates/image-formatter.html.twig' -->
      
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'image' -->
    <!-- BEGIN OUTPUT from 'themes/bootstrap/templates/system/image.html.twig' -->
    <img src="/sites/default/files/motorway/m/rbpr-ap-dc.gif" width="50" height="50" typeof="foaf:Image" />
    
    <!-- END OUTPUT from 'themes/bootstrap/templates/system/image.html.twig' -->
    
    
    
    <!-- END OUTPUT from 'core/modules/image/templates/image-formatter.html.twig' -->
    
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Junction   Westbound               Eastbound  
3
Londonderry
Magherafelt (A31)
Cookstown (A29)
A6
Randalstown
A6





A6
N/A
LanesLanesLanesLanes Signs LanesLanesLanesLanes Signs
0 miles, 2 lanes 0 miles, 2 lanes
2
Randalstown
A6
Portglenone (B52)
A6 A6
(B52)
Randalstown
A6
LanesLanesLanesLanes LanesLanesLanesLanes
0 miles, 2 lanes 0 miles, 2 lanes
1
N/A A26






A26
(M2)






Ballymena
Antrim
International Airport
A26
Belfast
Newtownabbey
M2 Link
LanesLanesLanesLanes LanesLanesLanesLanes
0 miles, lanes 0 miles, lanes
Routes

Picture credits

With thanks to Jonny and Wesley Johnston for information on this page.