There are two ways a user can place a marker on the map within the app- via the UISearchBar above the map (not completed yet), and by long pressing on the map where they'd like the marker to appear. I am using a global variable for the marker, because the user is restricted to setting only one marker on the map. Whenever the marker is created, I would like to draw a radius (circle) around the marker. Here is my code so far:
var mapMarker = GMSMarker()
...
//This function dectects a long press on the map and places a marker at the coordinates of the long press.
func mapView(mapView: GMSMapView!, didLongPressAtCoordinate coordinate: CLLocationCoordinate2D) {
//Set variable to latitude of didLongPressAtCoordinate
var latitude = coordinate.latitude
//Set variable to longitude of didLongPressAtCoordinate
var longitude = coordinate.longitude
//Feed position to mapMarker
mapMarker.position = CLLocationCoordinate2DMake(latitude, longitude)
//Define attributes of the mapMarker.
mapMarker.icon = UIImage(named: "mapmarkericon")
//Set icon anchor point
mapMarker.groundAnchor = CGPoint(x: 0.5, y: 0.5)
//Enable animation on mapMarker
mapMarker.appearAnimation = kGMSMarkerAnimationPop
//Display the mapMarker on the mapView.
mapMarker.map = mapView
drawCircle(coordinate)
}
func drawCircle(position: CLLocationCoordinate2D) {
//var latitude = position.latitude
//var longitude = position.longitude
//var circleCenter = CLLocationCoordinate2DMake(latitude, longitude)
var circle = GMSCircle(position: position, radius: 3000)
circle.strokeColor = UIColor.blueColor()
circle.fillColor = UIColor(red: 0, green: 0, blue: 0.35, alpha: 0.05)
circle.map = mapView
}
Admittedly, this is my first iOS/Swift app. I figured if I passed the coordinates from didLongPressAtCoordinate to the drawCircle() function, but apparently I'm doing something wrong. I've been searching all day for help, but have only turned up stuff for Android and Google Maps API v3. Thanks!
EDIT My code does work, but the radius doesn't scale, and the icon was appearing over the icon. When I zoomed in on the map, I was able to see the radius. There are three issues:
- The icon doesn't scale based on the map's zoom level.
- The radius doesn't scale based on the map's zoom level.
- If the marker position is updated, the radius doesn't move with it. Instead, a new radius is drawn...so there are two radii on the map.