2

mapTypeControlユーザーが を介して設定されている場合とは異なる方法で をクリックした場合を処理する必要がありますmap.setMapTypeId()。マップ タイプ コントロールのクリックをリッスンするにはどうすればよいですか?

4

2 に答える 2

2

デフォルトの UI コントロール セットでイベントをリッスンすることはできません。mapTypeControlしかし、とのクリックを区別することに厳密に集中している場合は、状態管理コードを呼び出して追加するmap.setMapTypeId()可能性のあるコードを制御するという事実を利用できます。setMapTypeId()

// First, add a new state var:
var typeIdChangedInCode = false;

// Then, anywhere in your code where you call setMapTypeId(), add this:
typeIdChangedInCode = true;
map.setMapTypeId( newTypeId ); 

// Finally, include state checking code in the map event listener:
google.maps.event.addListener( map, "maptypeid_changed", function( evnt ) {
    if ( typeIdChangedInCode ) {
        //handle the scenario in the non-click way, but REMEMBER TO:
        typeIdChangedInCode = false;
    }
    else {
        //handle the scenario in the map click way
    }
});

これにより、必要な方法で 2 つの異なるオカレンスを処理できるようになります。

于 2012-04-30T18:02:16.313 に答える
0
 google.maps.event.addListener(map, 'maptypeid_changed', function(e){
           alert(map.getMapTypeId());
   });
于 2012-04-30T14:51:59.493 に答える