2012-03-28 10 views
4

Wenn Sie an demselben Geolocation 2 Pins auf "London" haben, gibt es irgendetwas in der API, um sie auseinander zu bewegen, so dass sie beide sichtbar sind?Wie verhindert man überlappende Pins an der gleichen Geolocation mit Bing Maps?

Ich kann nur Dokumentation auf ihrer alten Karte Punkte API finden, die PreventIconCollisions hatte, das ist, was ich will, aber keine Bezugnahme darauf in der neuen API sehen kann.

Ich benutze die JavaScript API.

Antwort

0

Also, wenn ich richtig verstehe, haben Sie ähnliche Informationen an der gleichen Stelle, ist es das richtig?

Um sowohl Informationen angezeigt wird, werden Sie zwei Möglichkeiten:

  1. Merge Informationen in der Textbox eine geeignete Art und Weise mit Hilfe der Informationen in diesem UI-Elemente präsentieren (eigene Tabbed infobox zum Beispiel unter Verwendung)
  2. manuell
  3. Decluster den Punkt, wenn Sie auf einem bestimmten Niveau des Zooms sind

es gibt keine Standardeigenschaft diese Einstellung vornehmen, und es wäre wirklich chaotisch dies auf vielen Stecknadeln zu tun, aber in der Hauptidee, würden Sie muss: viewc erkennen hangeend event, wenn du auf einer bestimmten Zoomstufe (oder höheren Zoomstufe) bist, dann entschärfst du sie (ich nenne sie in der Nähe von Pushpins).

// Bind pushpin mouseover. 
    Microsoft.Maps.Events.addHandler(pin, 'mouseover', function (e) { 
     var currentPin = e.target; 
     currentPin.setOptions({ visible: false }); 
     var currentLocation = currentPin.getLocation().clone(); 

     var currentPoint = bmGlobals.geo.map.tryLocationToPixel(currentLocation); 
     if (currentPin.associatedCluster.length == 2) { 
      // Display the first pushpin 
      var pinA = createPin(currentPin.associatedCluster[0]); 
      var locA = bmGlobals.geo.map.tryPixelToLocation(new Microsoft.Maps.Point(currentPoint.x - pinA.getWidth(), currentPoint.y)); 
      pinA.setLocation(locA); 
      bmGlobals.geo.layerClusteredPin.push(pinA); 

      // Display the second pushpin 
      var pinB = createPin(currentPin.associatedCluster[1]); 
      var locB = bmGlobals.geo.map.tryPixelToLocation(new Microsoft.Maps.Point(currentPoint.x + pinB.getWidth(), currentPoint.y)); 
      pinB.setLocation(locB); 
      bmGlobals.geo.layerClusteredPin.push(pinB); 
     } 
    }); 

Ich werde versuchen, ein Bing Maps Modul darüber zu schreiben, aber in der Tat, werden Sie Ihre gruppierten Stecknadeln (oder Ihre eigene Reißzwecke, die hat zwei zugehörige Datenobjekt), und dann müssen Sie bekommen müssen um ihre Position basierend auf dem Rendering auf der Clientseite festzulegen.