Ci sono due modi in cui un utente può posizionare un marcatore sulla mappa all'interno dell'app tramite UISearchBar sopra la mappa (non ancora completato) e premendo a lungo sulla mappa dove desiderano che appaia l'indicatore. Sto usando una variabile globale per il marcatore, perché l'utente è limitato all'impostazione di un solo marker sulla mappa. Ogni volta che il marcatore viene creato, mi piacerebbe disegnare un raggio (cerchio) attorno al marcatore. Ecco il mio codice finora:Come posso disegnare un raggio attorno a un indicatore di mappa utilizzando l'SDK di Google Maps (Swift/iOS)?
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
}
Certamente, questa è la mia prima app iOS/Swift. Ho capito se ho passato le coordinate di didLongPressAtCoordinate alla funzione drawCircle(), ma a quanto pare sto facendo qualcosa di sbagliato. Ho cercato aiuto tutto il giorno, ma ho trovato solo materiale per Android e Google Maps API v3. Grazie!
EDIT Il mio codice funziona, ma il raggio non scala, e l'icona appariva sopra l'icona. Quando ho ingrandito la mappa, sono riuscito a vedere il raggio. Esistono tre problemi:
- L'icona non viene ridimensionata in base al livello di zoom della mappa.
- Il raggio non viene ridimensionato in base al livello di zoom della mappa.
- Se la posizione del marcatore viene aggiornata, il raggio non si sposta con esso. Invece, viene disegnato un nuovo raggio ... quindi ci sono due raggi sulla mappa.
Può descrivere come sta andando male, e/o inviare uno screenshot? –
Ho aggiornato il mio post. Apparentemente il mio codice funziona, ma non esattamente come me lo aspettavo. Ci sono 3 problemi che devo affrontare con questo. – Jared