7

Я использую версию SDK Google Maps для iOS для 2013 года. Я хотел бы настроить голубую точку по умолчанию для текущего местоположения с помощью другого значка или пульсирующих кругов.Настройте голубую точку Google Maps для текущего местоположения

Я знаю, что мы можем сделать это с mapView:viewForAnnotation: в MKMapView, но я не могу узнать, как это сделать с помощью Google Maps.

ответ

11

Невозможно сделать это с текущей версией SDK (1.4.3), и на самом деле есть открытая проблема с этим запросом: Look here.

Как работа вокруг, вы можете скрыть кнопку по умолчанию с:

_map.myLocationEnabled = NO; 

Затем создайте пользовательский GMSMarker

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

И изменить положение него с помощью CLLocationManager, поэтому он всегда показывать текущее положение. Это немного сложно, но это единственный способ, я мог подумать, что вы можете это достичь. Если вам нужен более полный пример, дайте мне знать.

+0

Ya, я попробовал, но он отображает более одного маркера вокруг текущего местоположения пользователей. Пожалуйста, дайте более подробный код. –

+0

Извините, я давно не использовал Gmaps, я не уверен, что этот ответ по-прежнему действителен. В любом случае, если у вас есть проблема, задайте новый вопрос, я не могу помочь вам решить вашу проблему, изменив старый ответ. – Raspu

+0

Спасибо за ваш ответ. Это мне очень помогает. –

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) 

    } 


} 

Это не очень привлекательная альтернатива для меня, потому что движение маркеров является прерывистым и постоянным обновлением своего положения на карте может быть существенным сопротивлением производительности. Но так оно и делается.

Смежные вопросы