問題タブ [mkoverlaypathrenderer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 半径がメートル単位のカスタム MKOverlay
MKOverlay プロトコルに準拠する NSObject サブクラスと MKOverlayPathRenderer のサブクラスを作成して、カスタム オーバーレイを作成しました。私の目標は、MKMapView のユーザーの場所に固定された円形のオーバーレイを作成することでした。それはうまく機能しています。オーバーレイの座標が設定されるたびに、レンダラーはキー値の監視を使用して、描画したパスを無効にしてから再描画します。
私が抱えている問題は、円の半径をメートル単位にしたいということですが、数学を正しく行っているとは思わないか、何かが欠けていると思います。オーバーレイ オブジェクトとレンダラーのソース コードを以下に投稿しました (レンダラーへのインターフェイスには何も含まれていません)。例を挙げると、半径を 200 メートルに設定していますが、マップ ビューでは約 10 メートルしか表示されません。誰でもそれを修正する方法を知っていますか?
ios - MKMapView へのオーバーレイとして MKOverlayPathRenderer を追加すると、例外が発生します
すべてがトピックで述べられているので、ここにコードがあります
最後の行で、例外を除いてドロップします:
MKOverlayを実装していない間違ったクラスを使用していることを意味しますが、MKOverlayPathRendererのリファレンスで述べたように、そうです。だから私はこの問題に少し立ち往生しています。
ios - アニメーション マップ オーバーレイ: MKCircle が追加されたときに 0 からフル サイズに拡張するにはどうすればよいですか?
マップに追加されるたびに、MKCircle を 0 から指定された半径サイズに拡張したいと考えています。MKOverlayRenderer は良い結果をもたらしてくれますが、あまりにも自然に円を追加してしまいます。アニメーション化して入り口をより滑らかにしたいのですが、アニメーションレイヤーなしでそれを行う方法がわかりません。
拡大する UIView を CABasicAnimation で追加し、完了時にオーバーレイに置き換えようとしましたが、コードが見苦しく、オーバーレイが追加されるとちらつきが目立ちます。
アニメーション オーバーレイがあると主張する他の 2 つのプロジェクトを見てきましたが、どちらも私が探している特効薬ではありません。
- http://yickhong-ios.blogspot.com/2012/04/animated-circle-on-mkmapview.html 2012 年に、この男は MKCircleView をサブクラス化しましたが、これは非推奨/強く推奨されていないようです。
- https://github.com/jhurray/iOS7AnimatedMapOverlayこの男は、UIImageView をサブクラス化し、円の png を追加し、いくつかの CABasicAnimations を追加して展開およびフェードさせます。次に、注釈が選択されるたびに、この画像ビューをマップに追加します。アニメーションは正常に動作しますが、領域が変更されるたびにアニメーションが削除され、領域の変更が完了したときにのみ再び追加されます。リージョンの変更時に再描画される機能的なオーバーレイではありません。彼が持っているのは、オーバーレイが必要な場合は「変更してください」というコメントが付いた nil に設定された MKCircle だけです。UIImageView の展開が完了したときにオーバーレイを追加するように「変更」することもできますが、UIView の回避策と同じちらつきの結果が生じることがわかります。
私がよくわからないと考えている別のアプローチがあります (Core Graphics だけからアニメーション効果を生成しようとしたことがないため) MKOverlayRenderer
。- (void)drawMapRect:
高さ x = 0 で、an を使用しNSTimer
て x をインクリメントしsetNeedsDisplayInMapRect
、円が最大サイズに達するまで呼び出します。それは私には遠回りのように思えますが、もっと簡単な方法があるかもしれません。
これについて正しい方向に向けてくれる人が必要です。
mkmapview - MKMapView を円の下にスクロールします。
アップデート
MKMapView
円の半径と中心座標を取得できる に円を描く必要があります。ただし、円を のサブビューにしMKMapView
て、マップ ビューを円の下にスクロールし、マップの移動に合わせて中心座標を更新し、マップのズームインとズームアウトに合わせて半径を更新できるようにしたいと考えています。
どうすればこれを達成できるか知っている人はいますか?
これは質問の元の文言です
MKMapView
以下のコードを使用して、上に円を描きました。
これが機能し、マップ ビューに円が生成されます。ただし、マップ ビューをスクロールすると、円が一緒に移動します。円を固定したままにして、マップ ビューを円の下にスクロールさせたいと思います。
regionを作成するには、円の中心座標と半径を取得する必要があることに注意してください。そのため、UIView の半径をメートル単位で取得する方法がないため、MKMapView の上に UIView を単純に描画することはできません。
ios - MapKit で目に見えるオーバーレイを取得する方法は? (つまり、Mapkit Ivew からの MKOverlay/MKOverlayRender)
MapkitView から現在表示されているオーバーレイのリスト (配列) を取得するにはどうすればよいですか?
背景 - たとえば、マップキット ビューで特定のオーバーレイ タイプの中心に方向矢印を表示したいのですが、表示されるものを取得するにはどうすればよいですか? これを行う方法はないようです。私は見ることができますか?では、すべてのオーバーレイ (実際には ~8000) を通過し、画面に何が表示されるかを独自に確認する必要がありますか? 特定の時間にどのオーバーレイを表示する必要があるかを決定する一環として、MapKit がすでにこれを効果的に行っているとしたら、無駄に思えます。