2016-07-26 1 views
0

Ich versuche, einen kreisähnlichen Radiusbereich zu erstellen, den der Benutzer ändern kann, und ich kann die Radiusnummer meines aktuellen Standorts ermitteln.Hinzufügen von veränderbarem Radius auf der GoogleMaps-API für iOS

================

tl; dr Herausgegeben

Ich möchte this als iOS-App mit schnellen machen.

=================

Gerade jetzt, ich Karte bereits erstellt, dass den aktuellen Standort zu hören. Unter Verwendung CLLocationManager beobachte ich seinen Update-Standort und die Karte zeigt meinen Standort.

import UIKit 
import GoogleMaps 

class ViewController: UIViewController, CLLocationManagerDelegate { 
    @IBOutlet var mapView: GMSMapView! 

    // Current Location Components 
    var locationManager = CLLocationManager() 
    var didFindMyLocation = false 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Current Location Delegate 
     locationManager.delegate = self 
     locationManager.requestWhenInUseAuthorization() 

     // Observer for update location (Moving) 
     mapView.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.New, context: nil) 
    } 

    // Core Location Location Manager Delegate 
    func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { 
     if status == CLAuthorizationStatus.AuthorizedWhenInUse { 
      mapView.myLocationEnabled = true 
     } 
    } 

    override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) { 
     if !didFindMyLocation { 
      let myLocation: CLLocation = change![NSKeyValueChangeNewKey] as! CLLocation 
      mapView.camera = GMSCameraPosition.cameraWithTarget(myLocation.coordinate, zoom: 18.0) 
      mapView.settings.myLocationButton = true 

      didFindMyLocation = true 
     } 
    } 

Gerade jetzt möchte ich einen Kreis, der veränderbar ist. Jemand hat das bereits in android here erstellt. Der Kreis/Radius kann durch Gesten verkleinert oder vergrößert werden, und ich kann den Radius dieses Kreises von seinem Mittelpunkt aus wie dieser question erhalten. Das ist, was ich für meine App will.

Also, was sollte ich für diesen Radius-Kreis-resizable verwenden? Ich schätze wirklich alle Antworten und Ideen. Vielen Dank!

Antwort

1

Ich würde ein Polygon/Kreis als Overlay erstellen.

https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_circle

Zum Beispiel:

let circle = GMSCircle() 
circle.radius = 130 // Meters 
circle.fillColor = UIColor.redColor() 
circle.position = CLLOCATION.coordinate // Your CLLocationCoordinate2D position 
circle.strokeWidth = 5; 
circle.strokeColor = UIColor.blackColor() 
circle.map = mapView; // Add it to the map 

es Sie die Größe, würde ich den ganzen Bildschirm mit einem UIView überlagern, und ermöglichen eine UIPanGestureRecognizer

hier das Beispiel Check out: Resizable Centered Circular UIView

+0

Konnte dieser Kreis mit dem verbunden werden Karte? Weil ich auch seinen Radius bekommen möchte, genau wie die Antwort auf diese Frage http://stackoverflow.com/questions/32722122/get-radius-where-resizing-circle?rq=1. Vielen Dank! –

+0

Natürlich - der GMSCircle ist ein echtes Overlay für Google Maps - aber Sie können Ihren UIPanGestureRecognizer nicht (soweit ich weiß). Sie können also ein "verstecktes" Kreis-Overlay erstellen, um Pan-Gesten zu erhalten, und es auf den "echten" Kreis zeichnen. – derdida

+0

Ok, ich kann circe drauf zeichnen. Aber wie erstellt man ein "verstecktes" Kreis-Overlay, um die Pan-Geste zu erhalten und dann auf den "echten" Kreis zu zeichnen? Vielen Dank trotzdem. –