Shapes
A shape is a geometrical figure that can be displayed on the map. The NAVER Maps SDK provides three types of shape overlays: polygons, polylines and circles.
Polyline overlays
NMFPolylineOverlay is an overlay that draws a line. It allows you to specify the stroke width, color, stroke pattern, line cap type and joint type of a line. A polyline overlay is proper for a line as a figure. If you need to express an element such as a path, use NMFPath.
Add and remove polyline overlays
A polyline overlay can be created just like a general class object. Create an object, set a list of coordinates in the points property and then set a map object in the mapView property to add a polyline overlay. Note that you should set the points property before setting the mapView property; otherwise a marker is not added to the map.
The following code example creates a polyline overlay object and adds it to the map.
let poly = NMFPolylineOverlay(points: [
NMGLatLng(lat: 37.57152, lng: 126.97714),
NMGLatLng(lat: 37.56607, lng: 126.98268),
NMGLatLng(lat: 37.56445, lng: 126.97707),
NMGLatLng(lat: 37.55855, lng: 126.97822)])
polyline.mapView = mapView
Swift
let poly = NMFPolylineOverlay(points: [
NMGLatLng(lat: 37.57152, lng: 126.97714),
NMGLatLng(lat: 37.56607, lng: 126.98268),
NMGLatLng(lat: 37.56445, lng: 126.97707),
NMGLatLng(lat: 37.55855, lng: 126.97822)])
polyline.mapView = mapView
Objective-C
NMFPolylineOverlay *polyline = [NMFPolylineOverlay polylineOverlayWithPoints:@[
NMGLatLngMake(37.57152, 126.97714),
NMGLatLngMake(37.56607, 126.98268),
NMGLatLngMake(37.56445, 126.97707),
NMGLatLngMake(37.55855, 126.97822)
]];
polyline.mapView = self.mapView;
The following figure shows a polyline overlay added to the map.

Set the mapView property to nil, and the polyline overlay disappears from the map.
The following code example removes a polyline overlay from the map.
polyline.mapView = nil
Swift
polyline.mapView = nil
Objective-C
polyline.mapView = nil;
List of coordinates
The points property specifies a list of coordinates. This property is required; a polyline overlay with no coordinates specified is not added to the map. Also, if the list of coordinates is less than 2 in size or has nil, the polyline overlay is not added to the map.
The following code example specifies a list of coordinates for a polyline overlay.
polyline.points = [
NMGLatLng(lat: 37.57152, lng: 126.97714),
NMGLatLng(lat: 37.56607, lng: 126.98268),
NMGLatLng(lat: 37.56445, lng: 126.97707),
NMGLatLng(lat: 37.55855, lng: 126.97822)
]
Swift
polyline.points = [
NMGLatLng(lat: 37.57152, lng: 126.97714),
NMGLatLng(lat: 37.56607, lng: 126.98268),
NMGLatLng(lat: 37.56445, lng: 126.97707),
NMGLatLng(lat: 37.55855, lng: 126.97822)
]
Objective-C
polyline.points = @[
NMGLatLngMake(37.57152, 126.97714),
NMGLatLngMake(37.56607, 126.98268),
NMGLatLngMake(37.56445, 126.97707),
NMGLatLngMake(37.55855, 126.97822)
];
Even if you change the coordinates object obtained with the points property, the changes are not applied. To apply the changes, the changed coordinates object should be set in the points property again.
The following code example changes part of the list of coordinates of a polyline overlay.
var points = polyline.points
points?.insert(NMGLatLng(lat: 37.5734571, lng: 126.975335), at: 0) // Not yet applied.
polyline.points = points // Applied.
Swift
var points = polyline.points
points?.insert(NMGLatLng(lat: 37.5734571, lng: 126.975335), at: 0) // Not yet applied.
polyline.points = points // Applied.
Objective-C
NSMutableArray<NMGLatLng *> *points = [NSMutableArray arrayWithArray:polyline.points];
[points insertObject:NMGLatLngMake(37.5734571, 126.975335) atIndex:0]; // Not yet applied.
polyline.points = points; // Applied.
Width
The width property specifies the width of a polyline overlay.
The following code example sets the width of a polyline overlay to 5 pt.
polyline.width = 5
Swift
polyline.width = 5
Objective-C
polyline.width = 5;
The following figure shows a polyline overlay with the width specified as 5 pt.

Fill color
The color property specifies the color of a polyline overlay.
The following code example sets the color of a polyline overlay to green.
polyline.color = UIColor.green
Swift
polyline.color = UIColor.green
Objective-C
polyline.color = UIColor.greenColor;
The following figure shows a polyline overlay with the color specified as green.

Stroke pattern
The pattern property specifies the stroke pattern of a polyline overlay. The stroke pattern is expressed as an array of integers in pt, where the elements with even indexes are the length of a dash, and those with odd indexes are the length of a gap. For example, an array of [5, 10, 3, 7] repeats the pattern that includes a dash of 5 pt, a gap of 10 pt, a dash of 3 pt and a gap of 7 pt.
The following code example sets the stroke pattern of a polyline overlay to a dash of 6 pt and a gap of 3 pt.
polyline.pattern = [6, 3]
Swift
polyline.pattern = [6, 3]
Objective-C
polyline.pattern = @[6, 3];
The following figure shows a polyline overlay with the stroke pattern specified above.

Line cap type
The capType property specifies the cap type of a polyline overlay. The available line cap types are defined in the LineCap enum. The following three types are available:
Round: Adds a semicircle with diameter equal to the stroke width at the end of the line.Butt: This cap is squared off exactly at the end of the line, at the specified coordinates.Square: This cap is squared off after extending half the stroke width at the end of the line.
The following figure shows the line cap types, Round, Butt, and Square from the top to the bottom.

The following code example sets the cap type of a polyline overlay to Round.
polyline.capType = .round
Swift
polyline.capType = .round
Objective-C
polyline.capType = NMFOverlayLineCapRound;
Joint type
The joinType property specifies the joint type of a polyline overlay. The available joint types are defined in the LineJoin enum. The following three types are available:
Bevel: Flat bevel on the outside of the joint.Miter: Mitered joint with fixed pointed extrusion on the outside of the joint.Round: Rounded on the outside of the joint.
The following figure shows the joint types, Bevel, Miter, and Round from the left to the right.

The following code example sets the joint type of a polyline overlay to Round.
polyline.joinType = .round
Swift
polyline.joinType = .round
Objective-C
polyline.joinType = NMFOverlayLineJoinRound;
Polygon overlays
NMFPolygonOverlay is an overlay that draws a polygon. A polygon overlay consists of an exterior ring and an interior ring, expressing various types of figures, including simple triangles, rectangles and polygons with holes. You can specify the fill color, stroke width and stroke color of a polygon overlay.
Add and remove polygon overlays
A polygon overlay can be created just like a general class object. Create an object, set NMGPolygon in the polygon property, and then set a map object in the mapView property to add a polygon overlay. Note that you should set the polygon property before setting the mapView property; otherwise a polygon is not added to the map.
The following code example creates a polygon overlay object and adds it to the map.
let polygon = NMGPolygon(ring: NMGLineString(points: [
NMGLatLng(lat: 37.5640984, lng: 126.9712268),
NMGLatLng(lat: 37.5625365, lng: 126.9832241),
NMGLatLng(lat: 37.5585305, lng: 126.9809297),
NMGLatLng(lat: 37.5590777, lng: 126.974617)]))
let polygonOverlay = NMFPolygonOverlay(polygon as! NMGPolygon<AnyObject>)
polygonOverlay.mapView = mapView
Swift
let polygon = NMGPolygon(ring: NMGLineString(points: [
NMGLatLng(lat: 37.5640984, lng: 126.9712268),
NMGLatLng(lat: 37.5625365, lng: 126.9832241),
NMGLatLng(lat: 37.5585305, lng: 126.9809297),
NMGLatLng(lat: 37.5590777, lng: 126.974617)]))
let polygonOverlay = NMFPolygonOverlay(polygon as! NMGPolygon<AnyObject>)
polygonOverlay.mapView = mapView
Objective-C
NMGPolygon *polygon = [NMGPolygon polygonWithRing:[NMGLineString lineStringWithPoints:@[
NMGLatLngMake(37.5640984, 126.9712268),
NMGLatLngMake(37.5651279, 126.9767904),
NMGLatLngMake(37.5625365, 126.9832241),
NMGLatLngMake(37.5585305, 126.9809297),
NMGLatLngMake(37.5590777, 126.974617)
]]];
NMFPolygonOverlay *polygonOverlay = [NMFPolygonOverlay polygonOverlay:polygon];
polygonOverlay.mapView = self.mapView;
The following figure shows a polygon overlay added to the map.

Set the mapView property to nil, and the polygon overlay disappears from the map.
The following code example removes a polygon overlay from the map.
polygonOverlay.mapView = nil
Swift
polygonOverlay.mapView = nil
Objective-C
polygonOverlay.mapView = nil;
Polygon
The -updatePolygon: property specifies NMGPolygon. This property is required and the exteriorRing of a polygon should be in clockwise order; otherwise the polygon is not properly drawn or cannot receive an event. A polygon overlay with the polygon not specified is not added to the map. Also, if the size of exteriorRing of a polygon is less than 3 in size or has nil, the polygon overlay is not added to the map.
Inner hole
The interiorRings property of polygon creates a hole in a polygon overlay. A polygon can have multiple inner holes, which can neither be colored nor receive events. The list of coordinates to specify each hole should be in counterclockwise order; otherwise it is not properly drawn or the polygon cannot receive an event. Also, if the list of coordinates of each hole is less than 3 in size or has nil, the hole is not added.
The following code example specifies a hole in a polygon overlay.
let polygon = NMGPolygon(ring: NMGLineString(points: points), interiorRings: [NMGLineString(points: [
NMGLatLng(lat: 37.5612243, lng: 126.9768938),
NMGLatLng(lat: 37.5627692, lng: 126.9795502),
NMGLatLng(lat: 37.5628377, lng: 126.976066)])])
let polygonWithHole = NMFPolygonOverlay(polygon as! NMGPolygon<AnyObject>)
Swift
let polygon = NMGPolygon(ring: NMGLineString(points: points), interiorRings: [NMGLineString(points: [
NMGLatLng(lat: 37.5612243, lng: 126.9768938),
NMGLatLng(lat: 37.5627692, lng: 126.9795502),
NMGLatLng(lat: 37.5628377, lng: 126.976066)])])
let polygonWithHole = NMFPolygonOverlay(polygon as! NMGPolygon<AnyObject>)
Objective-C
NMGPolygon *polygon = [NMGPolygon polygonWithRing:[NMGLineString lineStringWithPoints:points]
interiorRings:@[
[NMGLineString lineStringWithPoints:@[
NMGLatLngMake(37.5612243, 126.9768938),
NMGLatLngMake(37.5627692, 126.9795502),
NMGLatLngMake(37.5628377, 126.976066)]]]];
NMFPolygonOverlay *polygonWithHole = [NMFPolygonOverlay polygonOverlay:polygon];

Fill color
The fillColor property specifies the fill color of a polygon overlay.
The following code example sets the color of a polygon overlay to green.
polygon.fillColor = UIColor.green
Swift
polygon.fillColor = UIColor.green
Objective-C
polygon.fillColor = UIColor.greenColor;
The following figure shows a polygon overlay with the fill color set to green.

Stroke width
The outlineWidth property specifies the stroke width of a polygon overlay. Set the property to 0 to draw no outline.
The following code example sets the stroke width of a polygon overlay to 3 pt.
polygon.outlineWidth = 3
Swift
polygon.outlineWidth = 3
Objective-C
polygon.outlineWidth = 3;
The following figure shows a polyline overlay with the stroke width set to 3 pt.

Stroke color
The outlineColor property specifies the stroke color of a polygon overlay.
The following code example sets the stroke color of a polygon overlay to green.
polygon.outlineColor = UIColor.green
Swift
polygon.outlineColor = UIColor.green
Objective-C
polygon.outlineColor = UIColor.greenColor;
The following figure shows a polygon overlay with the stroke color set to green.

Circle overlays
NMFCircleOverlay is an overlay that draws a circle with the specified center and radius. You can specify the fill color, stroke width and stroke color of a circle overlay.
Add and remove circle overlays
A circle overlay can be created just like a general class object. Create an object, set a center in the center property and a radius in the radius property, and then set a map object in the mapView property to draw a circle overlay. Note that you should set the center property before setting the mapView property; otherwise a circle overlay is not added to the map.
The following code example creates a circle overlay object and adds it to the map.
let circle = NMFCircleOverlay()
circle.center = NMGLatLng(lat: 37.5666102, lng: 126.9783881)
circle.radius = 500
circle.mapView = mapView
Swift
let circle = NMFCircleOverlay()
circle.center = NMGLatLng(lat: 37.5666102, lng: 126.9783881)
circle.radius = 500
circle.mapView = mapView
Objective-C
NMFCircleOverlay *circle = [NMFCircleOverlay new];
circle.center = NMGLatLngMake(37.5666102, 126.9783881);
circle.radius = 500;
circle.mapView = self.mapView;
The following figure shows a circle overlay added to the map.

Set the mapView property to nil, and the circle overlay disappears from the map.
The following code example removes a circle overlay from the map.
circle.mapView = nil
Swift
circle.mapView = nil
Objective-C
circle.mapView = nil;
Center
The center property specifies the center of a circle overlay. This property is required; a circle overlay with no center specified is not added to the map. If you change the coordinates of the circle overlay that is already added to the map, it moves to the changed coordinates.
The following code example specifies the center of a circle overlay.
circle.center = NMGLatLng(lat: 37.5666102, lng: 126.9783881)
Swift
circle.center = NMGLatLng(lat: 37.5666102, lng: 126.9783881)
Objective-C
circle.center = NMGLatLngMake(37.5666102, 126.9783881);
Radius
The radius property specifies the radius of a circle overlay.
The following code example sets the radius of a circle overlay to 500 meters.
circle.radius = 500
Swift
circle.radius = 500
Objective-C
circle.radius = 500;
Fill color
The fillColor property specifies the fill color of a polygon overlay.
The following code example sets the fill color of a circle overlay to green.
circle.fillColor = UIColor.green
Swift
circle.fillColor = UIColor.green
Objective-C
circle.fillColor = UIColor.greenColor;
The following figure shows a circle overlay with the fill color set to green.

Stroke width
The outlineWidth property specifies the stroke width of a circle overlay.
The following code example sets the stroke width of a circle overlay to 5 pt.
circle.outlineWidth = 5
Swift
circle.outlineWidth = 5
Objective-C
circle.outlineWidth = 5;
The following figure shows a circle overlay with the stroke width set to 5 pt.

Stroke color
The outlineColor property specifies the stroke color of a circle overlay.
The following code example sets the stroke color of a circle overlay to green.
circle.outlineColor = UIColor.green
Swift
circle.outlineColor = UIColor.green
Objective-C
circle.outlineColor = UIColor.greenColor;
The following figure shows a circle overlay with the stroke color specified as green.
