現在、Goole Maps APIをv2からv3にアップグレードするプロジェクトを進めています。問題が発生し、複数のリスナーを同じマーカーに登録できるかどうかの確認が必要です。 Goole Maps API v3がAPI v2のような同じマーカーで複数のリスナーをサポートするかどうかは誰でも確認できますか?GoogleマップApi V3 - 複数のリスナーを同じマーカーオブジェクトに割り当てる
サンプルコード:私はマーカーの上に置くと
var mapObject = document.getElementById('map_canvas');
var points = new Array();
var markers = new Array();
var mapOptions = {
zoom: 16,
center: new google.maps.LatLng(33.260081, -117.279369),
mapTypeId: google.maps.MapTypeId.ROADMAP,
streetViewControl: false,
draggable: true,
scaleControl: false,
zoomControl: true,
panControl: true,
scrollwheel: false,
disableDoubleClickZoom: false,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.ZOOM_PAN
}
map = new google.maps.Map(mapObject, mapOptions);
points.push(lat:'33.260081', lng:'-117.279369');
points.push(lat:'33.260079', lng:'-117.279371');
points.push(lat:'33.260083', lng:'-117.279373');
for (var i in points) {
var point = points[i];
var marker = initMarker(point);
markers.push(marker);
google.maps.event.addListener(marker, 'mouseover', function() {
alert('mouseover');
});
google.maps.event.addListener(marker, 'click', function() {
alert('click');
});
google.maps.event.addListener(marker, 'mouseout', function() {
alert('mouseout');
});
bounds.extend(new google.maps.LatLng(point.lat, point.lng));
}
、それは二回、次に「マウスオーバー」、「マウスアウト」で警告します。私は一度 'mouseover'と警告するだけです。
マーカーをクリックすると、「クリック」、「マウス出力」、「クリック」、「マウスオーバー」という警告が表示されます。私はそれがちょうど「クリック」を警告することを期待するでしょう。
「mouseover」と「mouseout」を無効にすると、「click」は期待どおりに機能します。そして、私は 'クリック'と 'mouseout'を無効にすると、 'mouseover'は期待どおりに動作します。
これらのイベントが互いに関連しているような理由はありますか? API v2では、この機能を問題なくサポートできました。
ありがとうございます。
- 編集 -
これが唯一のFirefoxとIEで何が起こっているように見える予想通り、Chromeはイベントを処理します。
- 編集 -
私は先に行っているとセットアップ2マップのデモは、サイド・バイ・サイドの比較 を行うことができます。
バージョン2 URL:http://map.ownij.com/index2.php
バージョン3 URL:http://map.ownij.com/
バージョン2のFirefox、IE、クロームでも、リスナーの行動:
- マウスオーバー:マウスオーバー
- クリック:クリック
- マウスアウト:マウスアウト
バージョン3イベントリスナーの動作がでのFirefox、IE:
- マウスオーバー:マウスアウト、マウスオーバー、マウスオーバーは
- クリック:クリック、マウスアウトは、クリック
- マウスアウト:マウスアウト、マウスアウト
バージョンクロームで3でもリスナーの行動:
- マウスオーバー:マウスオーバー
- クリック:
- マウスアウトをクリックしてください:あなたが見ることができるよう
をマウスアウト、v3のイベントの振る舞いとして働きますクロームに期待されるが、 FFとIEで、各イベントは 異常な動作につながる複数のリスナーをトリガします。
私たちは、マウスオーバーは マウスアウトイベントを発生ときに、泡がマーカーオフマウスを移動 ユーザーまで、無期限に再描画し、ユーザーがマーカーの上に置いたときに を表示されるようにマップのバブルを許可するように弊社の地図を建て。これが解決されるまで
我々は、現在の機能の そうでない場合は、私たちを奪うお客様に当社v3のアップグレードをリリースすることはできません。
- 編集 -
更新されたコードは、()の呼び出しをCONSOLE.LOGするアラートを変更することで、イベントは予想通り火。非インフォ画面コール(アラート、ebubbleなど)に関しては、異常なイベント処理があるようです。
イベントモデルはブラウザによって若干異なります。私はこれを修正する方法を思い出していませんが、イベントをバブルアップする方法を一度読んでおいてください。 –
@YzmirRamirez:残念ながら、これはイベントのバブルとは関係なく、ブラウザでは、無関係な誤解を取り除くためにアラートを出すことにしました。 –
「アラート」の使用は避けてください。ポップアップは、マウスオーバー、マウスアウトなどの追加のイベントを引き起こす可能性があります - 'console.log'を使用してください。 –