我希望能够根据缩放级别相应地缩放我的标记。我发现这段代码可以调整图像大小,但它会使图标保持静态。
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
}
我实现它,
marker.icon = self.imageWithImage(image: #imageLiteral(resourceName: "icnMapmarker"), scaledToSize: CGSize(width: 60.0, height: 60.0))
我似乎无法找到基于IOS缩放调整自定义标记大小的方法。在javascript中,它与scaledToSize函数有关,但我在IOS中看不到相同的文档。
答案 0 :(得分:0)
如果我正确理解您的问题,您希望在用户放大/缩小时触发图标缩放。
首先,请确保您的地图视图控制器实现GMSMapViewDelegate
。
然后您可以实现以下委托方法:
func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) {
// ...
}
只要地图移动或缩放级别更改,就会调用此方法。在此功能中,您可以获得当前缩放并将图标大小基于此。
此外,您可能需要按如下方式运行图像大小调整功能:
DispatchQueue.main.async {
marker.icon = self.imageWithImage(image: #imageLiteral(resourceName: "icnMapmarker"), scaledToSize: CGSize(width: 60.0, height: 60.0))
}
希望这有帮助!