2011-05-11 5 views
6

私はクリック可能なポリゴンを作成し、マップにアタッチしました。私は地図のために設定された十字線draggableCursorを持っています。ポリゴンにも同じカーソルを持たせるといいでしょう。しかし、ポリゴンにカーソルを合わせると、カーソルが手に変わります。GoogleマップV3でクリック可能なポリゴン以上のカスタムカーソル

同じカーソルを維持する唯一の方法は、クリック可能に設定することです:多角形の場合はfalse、それはポリゴンinoperateのすべてのイベントリスナーを駆動します。

私は半分を費やして、ウェブ上で解決策を見つけようとしましたが、失敗しました。誰もそのような知識の宝石を持っていますか?

+0

カーソルが変更されていない場合、ポリゴンがクリック可能であることをマップのユーザーはどのように認識しますか? – plexer

+1

それはUIとUXの問題です。ほとんどのポリゴンはデフォルトでクリック可能ですが、クリックする理由は地図上の正確な位置を示すことです。ハイライトのサポートがあるので、ここで手のカーソルは悪です。 – savenkov

+0

この質問はかなり古くなっていますが、私は同じ問題を抱えており、ソリューションの方法をほとんど見つけていません。プロダクションフレンドリーなものを見つけましたか?私が考えることができる最良の解決策は、カーソルとそれ以外の場合はクリック可能なものを変更する必要があるときに、クリックできないポリゴンを描画することです。不必要に複雑ですが、私のシナリオではうまくいくと思います。 –

答えて

2

少し考えた後、私は非常にハッキーこれを行うための戦略を考え出した。私は学問的な好奇心のためにこれを含めますが、私はそれを実稼働現場で実装することをお勧めしません。擬似コードで

onPolygonMouseover: 
    setTimeout(0 ms) 

onTimeout: 
    Find all elements in the dom with cursor == pointer 
    Set pointer to crosshair 

のjQueryは==ポインタをカーソルですべての要素を見つけるために有用であるかもしれません。あるいは、DOM全体を反復処理するだけでも構いません。

なぜタイムアウト?

タイムアウトは、APIがイベントを公開する順序が不明なためです。イベントが内部APIイベントの前に処理されると、カーソルが内部コードによって上書きされる可能性があります。

なぜ0のタイムアウト?

0のタイムアウトは、JS実行スタック上のコードを押します。次回は、コード実行中に「中断」して実行されます。これは、すべてのイベント処理コードが終了した後でなければなりません。

+0

ありがとう!私は働いている解決策を見つけようとするつもりですが、私は生産上の適用性に関して合意しています:-) – savenkov

関連する問題