3

他の誰かがグーグルマップ(現在)があなたが極を越えてパンすることを可能にすることは問題があると感じましたか?かつてはポール​​で止まっていたんですよね?

私が取り組んでいるサイトは、ユーザーが地図をパ​​ンまたはズームするたびに、サーバー上で位置ベースのクエリを実行します。これは、ユーザーがマップの端をパンすることによってトリガーされるクエリが無意味であるため、エラーを引き起こしています。

今のところ、私はサーバー側でいわばエッジケースを扱っていますが、クライアント側ではあまり良いユーザーエクスペリエンスではありません。オーバーパンを防ぐための解決策はありますか?

ありがとう

スクリーンショット: 地球の端っこ!

4

2 に答える 2

2

灰色の領域を回避する1つの方法は、この例「範囲制限」に従って、ユーザーのパンを制限することです。ただし、バージョン2用に作成されています。

http://econym.org.uk/gmap/range.htm

バージョン3、http://jsfiddle.net/44e6y/9/で動作させるのは簡単ですが、欠点があります。

  • ボックス内にあるマップの中心に依存しているため、
  • ズームインすると、表示可能領域がさらに制限されます(極に関心がない場合は関係ありませんが、さまざまなズーム用にLatLngBoundsの配列を使用できます。これは、グリーンランドを表示するために必要になります)
  • 最後のポイントの結果として、JSFiddleiframeサイズの最小ズームを2に強制します。マップが画面全体を占める場合は、灰色の領域が表示されないように、最小ズームを高くすることができます。一般的に、最小値が高くなります。ズームすると、動作がより予測可能になります。
于 2012-05-14T19:31:11.163 に答える
0

同じ問題が発生し、レベル2のターゲットズームのみが受け入れられたため(この例では他のズームレベルは失敗します)、数式を見つけようとしましたが、成功しなかったため、最初の8ズームでハードコーディングしました。値のあるレベル。明らかに、これは完全に機能する例に拡張できますが、99%のケースではこれで十分だと思います。

JSFiddleはこちら

また、動作を改善するために別のリスナーを追加しました。

google.maps.event.addListener(map, 'zoom_changed', function() {
      checkBounds();});
于 2014-01-11T17:28:11.983 に答える