3

あるポイントから別のポイントへのマーカーの動きをアニメーション化する小さなアルゴリズムを作成しました。アルゴリズムは擬似コードで次のようになります。

lat_delta = new_lat - old_lat;
lng_delta = new_lng - old_lng;

for(alpha=0; alpha < 1; alpha += 0.1) {
  lat = old_lat + (alpha * lat_delta);
  lng = old_lng + (alpha * lng_delta);
  update_marker(lat, lng);
}

完全なコードはhttp://dev.syskall.com/map/および http://dev.syskall.com/map/commute.jsで入手できます。

私が遭遇した問題は、マップをズームアウトすると、アニメーションが「ジグザグ」に見えることです。そうは言っても、ズームインすると、アニメーションははるかにスムーズになります。

私のアニメーションが緯度経度座標に基づいており、画面上のピクセルではないという事実が原因である可能性があります。ズームアウトすると、Google マップはそれほど正確ではなく、何らかの方法で緯度位置を丸める必要があります。

もちろん、現在の実装は、マップがズームインされているときは問題ありませんが、ズームアウトされているときはあまり良くありません。

この問題を回避する方法はありますか?

4

1 に答える 1

0

はい... APIは、マップ上のすべてのマーカーのピクセル座標を取得するメソッドを提供します。私は次のことをします:

マーカーのピクセル座標を取得します

その場所にダミー マーカーをレンダリングする

元のマーカーを削除します

ピクセル値を使用して、ダミーを新しいスポットにアニメーション化します

その場に新しい地図マーカーを配置する

ダミーを外す

最初と最後に、API を使用してピクセルから緯度経度を取得したり、その逆を行ったりできます。

于 2010-10-02T09:15:04.113 に答える