2

我需要处理当用户点击的情况与mapTypeControl设置时不同的情况map.setMapTypeId()。如何收听地图类型控件的点击?

4

2 回答 2

2

您无法侦听默认 UI 控件集上的事件。但是,如果您严格专注于区分mapTypeControland的点击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
    }
});

这应该使您能够以您需要的方式处理两种不同的事件。

于 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 回答