2017-05-15 217 views
0

我希望能夠根據縮放級別相應地縮放我的標記。我發現這個代碼調整圖像的大小,但它保持圖標靜態。根據縮放級別縮放自定義標記Google地圖

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

如果我正確理解您的問題,您希望在用戶放大/縮小時觸發圖標縮放。

首先,確保您的地圖視圖控制器實現了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)) 
} 

希望這有助於!

+0

它有點幫助。我正在尋找更多像JavaScript一樣的魔術子彈。這聽起來像很多實驗。另一個問題是,如果縮小,基於更改的尺寸會更大。 –

相關問題