7

Sto utilizzando una versione 2013 di Google Maps SDK per iOS. Vorrei personalizzare il punto blu predefinito per la posizione corrente con un'altra icona o cerchi pulsanti intorno.Personalizza Google Maps punto blu per la posizione corrente

So che possiamo farlo con mapView:viewForAnnotation: in MKMapView, ma non riesco a scoprire come farlo con Google Maps.

risposta

11

Non c'è modo di farlo con la versione attuale dell'SDK (1.4.3), e in realtà c'è un problema aperto con questa richiesta: Look here.

Come un lavoro in giro, si può nascondere il pulsante di default con:

_map.myLocationEnabled = NO; 

Quindi creare un personalizzato GMSMarker

GMSMarker *pointMarker = [GMSMarker markerWithPosition:currentPosition]; 
pointMarker.icon = [UIImage imageNamed:@"YourImage"]; 
pointMarker.map = _map; 

e cambiare la posizione di esso utilizzando un CLLocationManager, quindi mostrare sempre la posizione corrente. È un po 'complicato ma è l'unico modo, potrei pensare, che tu possa ottenere questo. Se hai bisogno di un esempio più completo fammi sapere.

+0

Ya, l'ho provato ma sta visualizzando più di un marcatore intorno agli utenti nella posizione corrente. Si prega di fornire un codice più elaborato. –

+0

Spiacente, non ho usato Gmaps da molto tempo, non sono sicuro che questa risposta sia ancora valida. Ad ogni modo, se hai un problema, ti preghiamo di fare una nuova domanda, non posso aiutarti con il tuo problema modificando una vecchia risposta. – Raspu

+0

Grazie per la risposta. Mi aiuta molto. –

0

Swift 4

class MasterMapViewController: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate { 


    let currentLocationMarker = GMSMarker() 


    override func loadView() { 

     addCurrentLocationMarker() 

    } 


    func addCurrentLocationMarker() { 

     let currentLocationMarkerView = UIView() 
     currentLocationMarkerView.frame.size = CGSize(width: 40, height: 40) 
     currentLocationMarkerView.layer.cornerRadius = 40/4 
     currentLocationMarkerView.clipsToBounds = true 
     let currentLocationMarkerImageView = UIImageView(frame: currentLocationMarkerView.bounds) 
     currentLocationMarkerImageView.contentMode = .scaleAspectFill 
     currentLocationMarkerImageView.image = UIImage(named: "masterAvatar") 
     currentLocationMarkerView.addSubview(currentLocationMarkerImageView) 
     currentLocationMarker.iconView = currentLocationMarkerView 
     currentLocationMarker.isTappable = false 
     currentLocationMarker.map = mapView 

    } 


    // location manager delegate 
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 

     let lastLocation = locations.last! 
     currentLocationMarker.position = CLLocationCoordinate2D(latitude: lastLocation.coordinate.latitude, longitude: lastLocation.coordinate.longitude) 

    } 


} 

Questo non è un'alternativa molto attraente per me, perché il movimento del marcatore è a scatti e il continuo aggiornamento della propria posizione sulla mappa può essere una sostanziale resistenza prestazioni. Ma è così che è fatto.