2017-06-26 1 views
0

Il y a quelque temps, la méthode map.layers.clear() ne supprimait pas la polyligne de la carte, mais maintenant, après une mise à jour Bing, la polyligne est supprimée lorsque map.layers.clear() est appelée. Comment puis-je resoudre ceci?Bing Maps API V8 - La méthode map.layers.clear() supprime la polyligne de la vue cartographique

Carte initialize

var map = new Microsoft.Maps.Map(document.getElementById('myMap'), { 
    credentials: 'Your Bing Maps Key', 
    center: new Microsoft.Maps.Location(47.606209, -122.332071), 
    zoom: 12 
}); 

ajouter ici pushpins

// Add pushpins 
function addPushpins() { 
    // Generate an array of 10 random pushpins within current map bounds 
    var pushpins = Microsoft.Maps.TestDataGenerator.getPushpins(10, map.getBounds()); 
    var layer = new Microsoft.Maps.Layer(); 
    layer.add(pushpins); 
    map.layers.insert(layer); 
} 

Voici direction mise à jour rappel

// On update directions callback 
function onUpdateDirections() { 
    map.layers.clear(); 
} 

appel addPushpins fonction

addPushpins(); 

Voici l'exemple de code Manager Direction Bing Maps

Microsoft.Maps.loadModule('Microsoft.Maps.Directions', function() { 
    var directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map); 

    // Set Route Mode to driving 
    directionsManager.setRequestOptions({ 
     routeMode: Microsoft.Maps.Directions.RouteMode.driving 
    }); 

    // Callback for on update directions 
    Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated', onUpdateDirections); 

    var waypoint1 = new Microsoft.Maps.Directions.Waypoint({ 
     address: 'Redmond', 
     location: new Microsoft.Maps.Location(47.67683029174805, -122.1099624633789) 
    }); 
    var waypoint2 = new Microsoft.Maps.Directions.Waypoint({ 
     address: 'Seattle', 
     location: new Microsoft.Maps.Location(47.59977722167969, -122.33458709716797) 
    }); 

    directionsManager.addWaypoint(waypoint1); 
    directionsManager.addWaypoint(waypoint2); 

    // Set the element in which the itinerary will be rendered 
    directionsManager.setRenderOptions({ 
     itineraryContainer: document.getElementById('printoutPanel') 
    }); 

    directionsManager.calculateDirections(); 
}); 

MISE À JOUR - Enlève partials Punaises

// Map initialize 
var map, pushpins, layer; 

map = new Microsoft.Maps.Map(document.getElementById('myMap'), { 
    credentials: 'Your Bing Maps Key', 
    center: new Microsoft.Maps.Location(47.606209, -122.332071), 
    zoom: 12 
}); 

// Here is the Bing Maps Direction Manager sample code 
Microsoft.Maps.loadModule('Microsoft.Maps.Directions', function() { 
    var directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map); 

    // Set Route Mode to driving 
    directionsManager.setRequestOptions({ 
     routeMode: Microsoft.Maps.Directions.RouteMode.driving 
    }); 

    var waypoint1 = new Microsoft.Maps.Directions.Waypoint({ 
     address: 'Redmond', 
     location: new Microsoft.Maps.Location(47.67683029174805, -122.1099624633789) 
    }); 
    var waypoint2 = new Microsoft.Maps.Directions.Waypoint({ 
     address: 'Seattle', 
     location: new Microsoft.Maps.Location(47.59977722167969, -122.33458709716797) 
    }); 

    directionsManager.addWaypoint(waypoint1); 
    directionsManager.addWaypoint(waypoint2); 

    // Callback for on update directions 
    Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated', onUpdateDirections); 

    directionsManager.calculateDirections(); 
}); 

// On update directions callback 
function onUpdateDirections() { 
    clearLayers(); 

    window.setTimeout(function() { 
     addPushpins(); 
    }, 2000); 
} 

// Add pushpins 
function addPushpins() { 
    // Generate an array of 10 random pushpins within current map bounds 
    pushpins = Microsoft.Maps.TestDataGenerator.getPushpins(10, map.getBounds()); 
    layer = new Microsoft.Maps.Layer(); 
    layer.add(pushpins); 
    map.layers.insert(layer); 
} 

// Clear layers 
function clearLayers() { 
    // map.layers.clear(); 
    if (layer !== undefined) { 
     var currentPrimitives = layer.getPrimitives(); 

     /* remove those that are Pushpins */ 
     for (var i = 0; i < currentPrimitives.length; i++) { 
      var entity = currentPrimitives[i]; 
      if (entity instanceof Microsoft.Maps.Pushpin){ 
       layer.remove(entity); 
      } 
     } 
    } 
} 

Répondre

1

Ceci est à prévoir. Ce n'est pas clair dans le passé aurait été considéré comme un bug. Si vous souhaitez effacer vos calques, mais laissez les instructions, vous avez deux options. Effacez les calques avant de calculer les directions ou effacez le calque individuel plutôt que tous les calques de la carte.

+0

Ok. Merci pour votre réponse. Mais lorsque j'efface le calque lors de la mise à jour de l'itinéraire (glisser-déposer), map.layers.clear() supprime la polyligne. J'essaie d'effacer les punaises de la couche, mais certains punaises restent sur la carte. Voir UPDATE. –

+0

Quel est le problème avec ceci: 'function clearLayers() {layer.clear(); } ' – rbrundritt

+0

Cette fonction ne supprime pas tous les punaises de la carte. S'il vous plaît tester sur Bing Maps Interactive SDK pour voir ce comportement. –

1

Vous pouvez examiner votre couche, récupérer les primitives et retirer uniquement les broches. Quelque chose comme le suivant:

var currentPrimitives = layer.getPrimitives(); 

/* remove those that are Pushpins */ 
for (var i = 0; i < currentPrimitives.length; i++) { 
    var entity = currentPrimitives[i]; 
    if (entity instanceof Microsoft.Maps.Pushpin){ 
     layer.remove(entity); 
    } 
} 
+0

Merci pour votre réponse! Je teste votre solution, mais ne supprime pas tous les punaises. Voir MISE À JOUR. –