GMSMarker icon from center (iOS)

前端 未结 3 1047
不思量自难忘°
不思量自难忘° 2020-12-29 02:35

I just switched from Apple Maps to Google Maps. An issue that I can\'t seem to find an answer to is how do you make the icon for a GMSMarker to start from the center rather

相关标签:
3条回答
  • 2020-12-29 03:10

    I figured out how to do it after reading Google Maps Documentation very closely. I believe this is how it was intended to be done.

    UIImage *markerIcon = [UIImage imageNamed:@"markericon.png"];
    markerIcon = [markerIcon imageWithAlignmentRectInsets:UIEdgeInsetsMake(0, 0, (markerIcon.size.height/2), 0)];
    self.marker.icon = markerIcon;
    
    0 讨论(0)
  • 2020-12-29 03:12

    You can change the start position of your marker icon with the property groundAnchor.

    Google Maps SDK for iOS documentation:

    The ground anchor specifies the point in the icon image that is anchored to the marker's position on the Earth's surface. This point is specified within the continuous space [0.0, 1.0] x [0.0, 1.0], where (0,0) is the top-left corner of the image, and (1,1) is the bottom-right corner.

    Example:

    The below example rotates the marker 90°. Setting the groundAnchor property to 0.5,0.5 causes the marker to be rotated around its center, instead of its base.

    CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127);
    CLLocationDegrees degrees = 90;
    GMSMarker *london = [GMSMarker markerWithPosition:position];
    london.groundAnchor = CGPointMake(0.5, 0.5);
    london.rotation = degrees;
    london.map = mapView_;
    
    0 讨论(0)
  • 2020-12-29 03:21

    In Swift 5

        let marker: GMSMarker = GMSMarker() // Allocating Marker
        marker.title = "Your location" // Setting title
        marker.snippet = "Sub title" // Setting sub title
        marker.icon = UIImage(named: "radio") // Marker icon
        marker.appearAnimation = .pop // Appearing animation. default
        marker.position = CLLocationCoordinate2D.init(latitude: 26.8289443, longitude: 75.8056178)
        
        marker.groundAnchor = CGPoint(x: 0.5, y: 0.5)  // this is the answer of this question
                
        DispatchQueue.main.async { // Setting marker on mapview in main thread.
            marker.map = self.googleMapView // Setting marker on Mapview
        }
    
    0 讨论(0)
提交回复
热议问题