根据缩放级别Google地图缩放自定义标记

时间:2017-05-15 22:32:23

标签: ios swift google-maps google-maps-markers

我希望能够根据缩放级别相应地缩放我的标记。我发现这段代码可以调整图像大小,但它会使图标保持静态。

 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中看不到相同的文档。

1 个答案:

答案 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))
}

希望这有帮助!