【问题标题】:scale custom marker according to zoom level Google Maps根据缩放级别谷歌地图缩放自定义标记
【发布时间】:2017-10-14 20:20:08
【问题描述】:

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

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

【问题讨论】:

  • 嘿,你找到解决办法了吗?

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


【解决方案1】:

如果我正确理解您的问题,您希望在用户放大/缩小时触发图标缩放。

首先,确保您的地图视图控制器实现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))
}

希望这会有所帮助!

【讨论】:

  • 这有点帮助。我一直在寻找更多像 javascript 那样的灵丹妙药。这听起来像是很多实验。另一个问题是,如果你缩小,基础会发生变化,因为尺寸更大。
猜你喜欢
  • 1970-01-01
  • 2018-10-07
  • 1970-01-01
  • 2017-02-23
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多