7

Tôi đang sử dụng phiên bản Google Maps SDK 2013 cho iOS. Tôi muốn tùy chỉnh chấm màu xanh mặc định cho vị trí hiện tại bằng một biểu tượng khác hoặc vòng tròn xung quanh.Tùy chỉnh chấm màu xanh của Google Maps cho vị trí hiện tại

Tôi biết chúng tôi có thể làm điều đó với mapView:viewForAnnotation: trong MKMapView, nhưng tôi không thể tìm ra cách thực hiện việc đó với Google Maps.

Trả lời

11

Không có cách nào để thực hiện việc này với phiên bản SDK hiện tại (1.4.3) và thực tế có sự cố mở với yêu cầu này: Look here.

Là một công trình xung quanh, bạn có thể ẩn các nút mặc định với:

_map.myLocationEnabled = NO; 

Sau đó tạo một phong tục GMSMarker

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

Và thay đổi vị trí của nó sử dụng một CLLocationManager, vì vậy nó luôn hiển thị vị trí hiện tại. Đó là một chút khó khăn nhưng là cách duy nhất, tôi có thể nghĩ rằng, bạn có thể đạt được điều này. Nếu bạn cần một ví dụ hoàn chỉnh hơn, hãy cho tôi biết.

+0

Ya, tôi đã thử nó nhưng nó hiển thị nhiều hơn một điểm đánh dấu xung quanh vị trí hiện tại của người dùng. Vui lòng đưa ra một mã phức tạp hơn. –

+0

Xin lỗi, tôi đã không sử dụng Gmaps trong một thời gian dài bây giờ, tôi không chắc chắn nếu câu trả lời này vẫn còn hợp lệ. Dù sao, nếu bạn có vấn đề, vui lòng đặt câu hỏi mới, tôi không thể giúp bạn giải quyết vấn đề của bạn khi sửa đổi câu trả lời cũ. – Raspu

+0

Cảm ơn câu trả lời của bạn. Nó giúp tôi rất nhiều. –

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) 

    } 


} 

Đây không phải là một lựa chọn rất hấp dẫn đối với tôi bởi vì chuyển động của điểm đánh dấu là giật và cập nhật liên tục vị trí của nó trên bản đồ có thể là một hiệu suất kéo đáng kể. Nhưng đây là cách nó được thực hiện.

Các vấn đề liên quan