-2

私はしばらくの間、GoogleマップAPI 10を使用しています.99.9%がGoogleライブラリ内にあると確信しているため、修正できないバグがあります。

私は.toPixels()ものを描くために多くのプロジェクションを行い、すべてうまくいきます。カスタムズーム方法mapController.setZoom(getZoom() +1)でズームしますが、ピンチズーム(2本指ズーム)を使用するまではすべて機能します。その後、投影は特定のズーム レベル内で動かなくなったようです。

ズームを 12 から 11 にピンチすると、マップに 11 が表示されますgetZoomLevel()(常に適切なレベルが報告されます)。ここで、zoomOut メソッドを使用するとレベル 13 になり、投影はレベル 13 で問題なく計算されますが、その後の zoomOut はすべて、マップのズーム レベルを変更するだけです (内部的には、デバイスにはインターネットがないため、マップ データがないことに注意してください)。投影は、ズームレベル 13 のままであるかのようにすべてを計算し続けます!
ズームインすると、マップの実際のレベルに関係なく、投影が突然レベル 11 にジャンプします。したがって、12 にピンチ ズームすると、投影は 11/13 でスタックし、ズーム アウト/インした場合にのみ、これら 2 つの間でジャンプします。
もう一度ピンチズームすると、投影は更新されますが、ピンチズームした新しいレベルで再びスタックします。

したがって、インターネットなしでピンチ ズームすると、投影が完全に無効になり、マップ全体が役に立たなくなります (私の場合、視覚的なマップは必要ありません。geoPoint の変換が必要なだけです。これが最も重要な部分です)。


オンタッチで複数のポインターを無効にする以外に、ホットフィックス/回避策または何かを知っている人はいますか?

私のcustomMapViewのコンストラクターにあるものをマップする

    setVisibility(View.VISIBLE);

    mapController = getController();

    mapController.setZoom(17);

    setBuiltInZoomControls(false);
    getZoomButtonsController().setVisible(false);

    setSatellite(false);
    setTraffic(false);
    setClickable(true);
    preLoad();


それがカスタムボタンでズームする方法です

mapController.setZoom(getZoomLevel() + 1); // zoom in
mapController.setZoom(getZoomLevel() - 1); // zoom out


1) ズーム ボタンが機能する
2) ピンチ ズーム アウト
3) これで、ボタン/ボタンによるズームが上記の動作を示します


追加情報:
アプリ「myTracks」と「Torque」を使用しました。
どちらもグーグルマップを使用しています。
両方で私はトラックを録音しました。
ここで、インターネットを無効にして 2 本指ズームを使用し、その後通常のボタンでズームイン/ズームアウトすると、トラックが完全に中央に配置されていても、ある時点でトラックが特定の方向にずれてしまいます。何度もズームアウト/ズームインした後、トラックがなくなるポイントまで。
2番目にインターネットを再アクティブ化し、マップはいくつかのタイルをロードできます。次のズームは機能しており、すべて問題ありません...マップは投影内で何かを計算するためにインターネットからのデータを必要とするようで、この何かが提供されているようです2本指ズームで・・・そう見えます。

3 つのアプリ、すべて同じ問題...

4

1 に答える 1

0

あなたの質問はかなり紛らわしいので、言い直すべきです。

しかし、少なくともMapView、インターネットに接続されていないデバイスで を使用していること、および投影をマップのズーム レベルと同期させる際に問題があることは理解しました。

まず最も重要なことは、問題は Google マップにはないため、コード内の問題を探す必要があるということです。

getZoomLevel()との間の同期を達成する最も一般的なエラーProjectionは、最初の値が整数値 (1 の倍数の離散ステップで増加/減少する) であることをしばしば忘れていることです。よりスムーズなズームイン/アウト。

たとえば、ピンチしてズームする場合、画面に指を置いたまま地図のサイズ (および投影法) を変更している間、このメソッドgetZoomLevel()はピンチしてズームを開始したときの地図のズーム レベルを常に返します。ピンチしてズームを停止した後 (画面から指を離した後) にのみ、メソッドgetZoomLevel()は最終的に選択されたズーム レベルを返します。ただし、ここで終了しないと、アニメーションがマップ イメージの拡大/縮小を最も近い整数のズーム レベル (getZoomLevel()ピンチを停止してズームした後に返されたもの) に継続するためです。

ご理解いただけましたら幸いです。問題を例示するコードの例を投稿しない場合は、それを修正するためのヘルプが表示されます。

よろしく。

于 2012-11-27T22:17:20.767 に答える