2017-05-15 12 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 
} 

、私はIOSのズームに基づいてカスタムマーカーのサイズを変更する方法を見つけるように見えることはできません

marker.icon = self.imageWithImage(image: #imageLiteral(resourceName: "icnMapmarker"), scaledToSize: CGSize(width: 60.0, height: 60.0)) 

。 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のような魔法の弾丸をもっと探していました。それは多くの実験のように聞こえる。別の問題は、ズームアウトするとサイズが大きくなるためベースが変わるということです。 –

関連する問題