使用Swift更改GoogleMap中标记的大小

hus*_*ain 4 google-maps swift swift2

我已经放置了一个GoogleMap包含的标记Image.但是图像的大小要大得多.那么我怎样才能减小标记的大小.我试过这个:

marker.icon = self.image(marker.icon, scaledToSize: CGSize(width: 3.0, height: 3.0))
Run Code Online (Sandbox Code Playgroud)

PGD*_*Dev 12

要调整图像大小,请参阅:调整UIImage大小的最简单方法?

现在将调整大小的图像设置为标记图标,即

marker.icon = self.imageWithImage(image: UIImage(named: "imageName")!, scaledToSize: CGSize(width: 3.0, height: 3.0))
Run Code Online (Sandbox Code Playgroud)

编辑:

func imageWithImage(image:UIImage, scaledToSize newSize:CGSize) -> UIImage{
    UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0);
    image.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height))
    let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return newImage
}
Run Code Online (Sandbox Code Playgroud)

编辑(快速4)

func imageWithImage(image:UIImage, scaledToSize newSize:CGSize) -> UIImage{
    UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
    image.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
    let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    return newImage
}
Run Code Online (Sandbox Code Playgroud)


Moh*_*ari 6

如果要使用扩展,可以这样实现:

斯威夫特4.2

extension GMSMarker {
    func setIconSize(scaledToSize newSize: CGSize) {
        UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
        icon?.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
        let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        icon = newImage
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用如下扩展名:

let position = CLLocationCoordinate2D(latitude: yourLatitude,longitude: yourLongitude)
let marker = GMSMarker(position: position)
marker.title = "Receiver"
marker.icon = UIImage(named: "receiver_set")
marker.setImageSize(scaledToSize: .init(width: 40, height: 40))
marker.map = self.mapView
Run Code Online (Sandbox Code Playgroud)


MrM*_*ins 5

基于@PGDev的回答

我对Swift 3 的实现是:

func imageWithImage(image:UIImage, scaledToSize newSize:CGSize) -> UIImage{
        UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0);
        //image.draw(in: CGRectMake(0, 0, newSize.width, newSize.height))
        image.draw(in: CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: newSize.width, height: newSize.height))  )
        let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return newImage
    }
Run Code Online (Sandbox Code Playgroud)

并以这种方式使用:

marker.icon = self.imageWithImage(image: UIImage(named: place.icon)!, scaledToSize: CGSize(width: 100.0, height: 100.0))
Run Code Online (Sandbox Code Playgroud)