2010-11-23 3 views
4

Je suis en train de gérer l'événement onchangeview pour bing mapspoignée onchangeview événement pour les cartes Bing

Dans la méthode intialize js Je le code suivant:

map = new Microsoft.Maps.Map(document.getElementById("mapviewer"), { 
    credentials: bingMapsKey, 
    center : new Microsoft.Maps.Location(42.3508, -71.0717), 
    zoom: 12 
    }); 
//Microsoft.Maps.Events.addHandler(map, "onchangeview", handleChangeView); 
Microsoft.Maps.Events.addHandler(map, "onclick", handleChangeView); 
mapviewer.attachEvent("onchangeview", handleChangeView); 

J'ai aussi cette fonction

{

} handleChangeView (e) fonction

cette fonction n'est jamais appelée, et je ne sais pas pourquoi le gestionnaire est correctement configuré.

Je ne comprends pas la différence entre les 2 lignes et quand je joindre un événement d'une manière ou l'autre

Microsoft.Maps.Events.addHandler(map, "onclick", handleChangeView); 
mapviewer.attachEvent("onchangeview", handleChangeView); 

Toutes les idées suivantes?

Répondre

6

De nombreux événements ont été rebaptisés à 7, je pense que vous voulez utiliser "cliquez" au lieu de "onclick " et "viewchangeend" au lieu de "onchangeview".

Selon ce que vous avez besoin pour, vous pouvez préférer des événements "viewchangestart", "ViewChange" ou "targetviewchanged" cependant.


En outre, vous devriez certainement utiliser « Microsoft.Maps.Events.addHandler » pour configurer les auditeurs avec 7, tous les événements utiliser les événements objet maintenant.


Exemple:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <script src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0" type="text/javascript" charset="UTF-8"></script> 
</head> 
<body onload="init()"> 

<div id="map" style="position: relative; width: 800px; height: 350px;"></div> 


<script type="text/javascript"> 

/** 
* Map click event handler. 
*/ 
function onclick(e){ 
    var map = this.target; //reference to the Map object from which it came 
    //... 
    var x = e.getX(); // horizontal position of the click 
    var y = e.getY(); // vertical position of the click 
    //... 
    console.log('The map has been clicked'); 
} 

/** 
* View change event handler. 
*/ 
function onview(){ 
    var map = this.target; //reference to the Map object from which it came 
    //... 
    console.log('The view has changed'); 
} 

/** 
* Load the map and setup event listeners 
*/ 
function init(){ 
    var map = new Microsoft.Maps.Map(
     document.getElementById("map"), 
     { 
      credentials: "YOUR-BING-KEY", 
      mapTypeId: Microsoft.Maps.MapTypeId.road 
     } 
    ); 
    Microsoft.Maps.Events.addHandler(map, "click", onclick); 
    Microsoft.Maps.Events.addHandler(map, "viewchangeend", onview); 
} 

</script> 


</body> 
</html> 

Liste des événements (en bas de la page): http://msdn.microsoft.com/en-us/library/gg427609.aspx

0

Vous pouvez également définir le nouvel événement en même temps que vous ajoutez il:

Microsoft.Maps.Events.addHandler(map, "click", function(args) { 
    ... 
}); 

La valeur de args dépend de l'objet et de l'événement que vous utilisez. Dans ce cas, il s'agit d'un objet MouseEventArgs (http://msdn.microsoft.com/en-us/library/gg406731.aspx).

Questions connexes