今回は画面外マーカの表示方向についてです。
今のqgmapの画面外マーカの方向は以下の図のようになっています。
今のqgmapの画面外マーカ
今は、マークした位置が画面の上下左右に直線的に移動して表示できる場合は「辺」の部分にマーカを表示し、上下左右移動で表示できない場合は頂点部分に斜め方向向きのマーカを表示しています。
ですので、右辺にあるマーカの y 座標はマーカの y 座標と一致しています。
開発当初は、以下のようなものを考えていました。
開発当初のマーカの方向
画面の中心からマーカまでを直線で結んだとき、画面の端を横切った所にマーカを表示する方法です。
一応、こちらで実装したんですが、当時はまだ中央マーカ表示機能がなかったこともあり、スクロールさせたときのマーカの挙動に何となく違和感があったため、現在の方法に切り替えました。
マーカを表示させた状態でスクロールさせると違和感はないんですが。
個人的な感覚での、それぞれの特徴をまとめると以下のようになります。
- 前者の方法
- 中央マーカなしの時のスクロール時の挙動が自然
- マーカとの距離がある程度離れているとき、必ずしも正確に方向を表示しない
- 後者の方法
- 中央マーかなしの時のスクロール時の挙動がなんとなく不自然
- マーカとの距離が離れていても、正しい方向を指し示す。
一応、後者の方向で実装したパッケージも作成しましたので、どちらがいいかご意見を伺いたいと思います。
パッケージ名や実行ファイルなど名前を変更しているので、オリジナルの qgmap と共存することが可能です。
また、「.」キーでの中央マーカ表示も実装していますので、中央マーカ表示/非表示でスクロールさせてみて、画面外マーカの挙動がしっくりくるかも試していただけると幸いです。
慣れの問題だとはおもうので、どちらでも一緒かもしれませんが・・・。
マーカーの表示方法は今のままが嬉しいのですが…。
実際に試してみましたが、かなりの遠距離にあるのに画面の端をちらちらされると妙に気になります。
とはいえもう一方の方が便利な時もありそうな…うぅむ。
あと中央マーカーの実装、ありがとうございます。
シンプルで見やすくいい感じです。
中央マーカーの表示/非表示時のスクロールの違いは、正直よく分かりませんでした。
仕組み的にも余り関係無さそうな気もしますし、問題ないのでは?
さて、今回まさかの4連続要望を出そうと思ったのですが、それは余りに申し訳なくとりあえずやっつけパッチを書いてみました。
変更点はスクロールの軽量化とマーカー状態の保存です。
解凍はuudecodeです。
一つ、だまされたと思ってお試し下さいませ。
begin 600 qgmap_0.0-alpha6-custom.patch.gz
M’XL("/3[T@“W%G;6%P7S`N,"UA;’!H838M8W5S=&]M+G!A=&-H`+5374_;
M,!1]3G[%’=(D9ZDS)RTM-2KJA#HT;654/$Y391(‘+)(X<U)8A_COLYV0M$.
M7M:’U+X?Q^?>>VXBTA3P2IW"KN<E4L2$,RRHH-`ZG$Y4=C#.*R?.’N/"[&
M^)5D)R+D`(<$DQ%$(=T?T_TH(`_,F8$-?W_=V/=`@A@7!$^P,:CE@3*>`
MPP/2"_O@V_A3*<NW$B1P,F<E93F<E7QN;SALQM>U`@6<V.P%_C`P7/AS@5′
MI$A42,DSD1[=VYV’$69U+HJ%)6,`%K7YHS!HZ/]`%YAZ[O.%7-:A&#B10Z
MCEBC2`$AX?O>^SY,)A!Y^A5M?A.D#8PU/ZY,D#T$,DTK7B,=$_Q&7L@!&OD
M-13:Z*"0*F>9^,-;:LZJ3%C-CZT7??[T[7RF’6!J>SL^W@Z/=Z!CF]!5-GG:
MK-V>>SV%^VX25<PRWLT"3$.1M>&CO)LE][0O>47-.5/7FOM6/6]_U#T)NB)
MIB-*AC0,WZ;I+1BOJ7HPZAV`K[]CJVC’84K)VQ_B9Y!)EJ"2U5=FEJ9GNN/-
M`TM9Z+:F+*OXX<9X(>H’72Y.CF610JP_YOHXR]@"Q5ERNLIG1:W6:&]NW=^+
MO5Z#Z3W*:4!W)IWKI=!IQ%)L4VJ1ZZ]>S(G>66TWS$VE$>GWAN!’9-`;V5I=
MN)`R@P:)TFN^/E.JIJ=U1OE:_;_85V@9]5!DYU*^KX"FFYZ&SD60W%K.*P
MJ"G5^<LY-3U]W(!WW>6PH15&EE;X0*O1J%,RI=_&1XJ73._R9JT<)Q%5V;#^
M4J2R%;;MT:T2-7_9UN[))E_Q>J4*J-6*FS5]1GE!&U[]L>4UB+1`&E[;QO?
9F>X.;<>^T<BVNFP;6U-+]B_T1D20DP8““`
`
end
tera 様
パッチ試しました!すごい速いですね! ちょっと感動してしまいました。
mouseMoveEventを間引いているんですね。
私も、描画している間にイベントが溜まって無駄な描画してそうなことは気づいていたんですが、イベントを破棄する方法が分からずどうしたものかと思っていました。カーソルキーも押しっぱなしにすると、離した後もズリズリ移動しますし。
なるほど、こういう方法もあるんですね。勉強になりました。
あと、マーカ状態保存の方ですが、QGConf(というかConfig)クラスのインスタンスっていっぱい作っても大丈夫なんですね。
なんとなく、複数作るとそれぞれのインスタンスが競合(?)したりしそうで1つだけしか作れないものかと思っていました。
こちらも勉強になりました。
外部マーカの方ですが、画面を地図の一部としてに見ていると今までの方がしっくり来て、GPSを使ったときのように中心点に自分がいるという見方をすると後者の方がしっくりくるのかなと思いました。
好みもありそうですし、sugarwareさんのコメントのように切り替えられるのがベストなのかもしれませんね。
どちらの表示にも一長一短あるようですので、特別な問題が無いのであれば両方を実装し、モード切替方式にしては如何でしょうか?
別件ですが、マーカをもう少し端っこに表示して貰えないでしょうか。マーカをオフればいいのですがマーカを表示しながら使いそうで、その際マーカが地図を隠してしまうのが気になりました。
中央マーカは特に問題ないと思います。
試してみていただきありがとうございます。
マーカー表示はどっちがいいと決められなさそうなので、切り替えられるようにしようかなと思います。
あと、マーカをずらす件了解しました。
確かにちょっと邪魔ですね、特に上側が。
スライダや縮尺表示に被らない程度に、もうちょっと外側にしますね。