 			let newLabel = UILabel()
 			newLabel.tag = 0
 			newLabel.isHidden = true
-			newLabel.frame = CGRect(x: 0.0, y: 0.0, width: 100.0, height: 30.0)
-			newLabel.font = UIFont.systemFont(ofSize: 14.0)
+			newLabel.frame = CGRect(x: 0.0, y: 0.0, width: 200.0, height: 30.0)
+			newLabel.preferredMaxLayoutWidth = 200.0
+			newLabel.lineBreakMode = .byWordWrapping
+			newLabel.numberOfLines = 2
+			newLabel.adjustsFontSizeToFitWidth = true
 			
 			poiLabels.append(newLabel)
 			addSubview(newLabel)

		label.tag = marker.ownerHash
		label.isHidden = false
		
		let strokeAttribs: [NSAttributedString.Key: Any] =
			[.strokeColor: UIColor.black,
			 .foregroundColor: UIColor.white,
			 .strokeWidth: -3.0]
		label.attributedText = NSAttributedString(string: marker.name, attributes: strokeAttribs)
	}
	

			guard let marker = poiPrimitives.values.first(where: { $0.ownerHash == label.tag }) else {
				continue
			}
			
			// Layout labels (region labels hang under the center, POI labels hang from their top-left)
			let screenPos = project(marker.worldPos)
			switch marker.kind {
			case .Region: label.center = screenPos
			default: label.frame.origin = screenPos
			}
		}
	}
	
