0

Google マップの上に新しいマッシュアップを作成しています。より長い寿命を提供するために V3 を使用することを選択したのは十分に単純です。

ただし、Google マップの infoWindow では提供されない特別なニーズがいくつかあります。

カスタム infoWindow を marker.projectionContainer.pixelPosition で配置しました。ズーム後に正しい位置が得られますが、ドラッグしてもマーカー pixelPosition が更新されません。ドラッグ後にマーカーの古い位置と新しい位置の違いを取得するにはどうすればよいですか?

また

DOM から位置をハックしようとする代わりに、OverlayViewを使用する必要がありますか? マップ独自の情報ウィンドウは、パネル上で自動的に更新/駐車されると思います。

4

1 に答える 1

1

この回答では、ドラッグとは、マップをドラッグするのではなく、マーカーをドラッグすることを意味すると想定しています。そうでない場合はお知らせください

OverlayView を使用する必要があります。その後、MVC 手法を使用してマーカーの位置プロパティにバインドできます。

function MyOverlay(marker) {
  this.bindTo('position', marker);
}
MyOverlay.prototype = new google.maps.OverlayView();

MyOverlay.prototype.position_changed = function() {
  this.draw();
};

MyOverLay.prototype.draw = function() {
  // This is where you recalculate the latLngToPixel stuff where latLng
  // is this.get('position');
};

また、OverlayView インターフェイスの残りの onAdd と onRemove も実装する必要があります。

于 2010-08-06T01:01:09.977 に答える