Maison  >  Article  >  interface Web  >  Afficher les marqueurs et les polylignes sur la carte Baidu

Afficher les marqueurs et les polylignes sur la carte Baidu

php中世界最好的语言
php中世界最好的语言original
2018-03-23 11:02:173161parcourir

Cette fois, je vais vous apporter les précautions pour afficher les marqueurs et les polylignes dans les cartes Baidu. Jetons-les un coup d'œil ensemble une fois.

Récemment, je travaillais sur un projet utilisant l'API Baidu Map. J'avais besoin d'afficher des marqueurs et des polylignes sur la carte en même temps, et les polylignes devaient être affichées ou effacées en fonction des clics, j'ai donc rencontré. le problème de l'effacement de la couverture désignée . Je n'ai pas trouvé de solution parfaite après recherche Grâce à ma propre réflexion, j'ai trouvé un moyen de résoudre ce problème et je l'ai publié pour le partager. tout le monde. Bon, venons-en au fait :

Il existe deux façons d'effacer les superpositions : map.removeOverlay() ou map.clearOverlays() Le clearOverlays(). La méthode déplace les superpositions à la fois. En plus de toutes les superpositions, removeOverlay() supprime une superposition spécifiée à la fois. Évidemment, je souhaite supprimer un type de superposition de polylignes à la fois, et aucune des deux méthodes n'est applicable.

La démo Baidu (http://developer.baidu.com/map/jsdemo.htm#c1_17) contient un exemple de removeOverlay(), comme suit :

function deletePoint(){
    var allOverlay = map.getOverlays();
    for (var i = 0; i < allOverlay.length -1; i++){
      if(allOverlay[i].getLabel().content == "我是id=1"){
        map.removeOverlay(allOverlay[i]);
        return false;
      }
    }
  }

s'effectue en traversant toutes les superpositions Pour filtrer la couverture à supprimer ;

Pour un type de couverture à supprimer ; vous pouvez définir des restrictions lors de l'ajout de couverture

Étape 1 : Lors de l'ajout ; une superposition, définissez DisableMassClear() pour les superpositions qui n'ont pas besoin d'être supprimées ; le document du site officiel explique comme suit

disableMassClear()

aucun n'interdit de supprimer les superpositions dans la map.clearOverlays méthode Effacer. (Nouvellement ajouté depuis la version 1.1)

Je n'ai pas besoin de supprimer les marqueurs ici, donc les paramètres sont les suivants :

marker.disableMassClear();

Deuxième étape : effacez le revêtement à effacer. Ici, vous devez effacer toute la polyligne sans effacer le marqueur. Vous pouvez maintenant utiliser directement

map.clearOverlays();

. toute la polyligne et conservez-la.

Étape 3 : Lorsque le marqueur doit être supprimé ultérieurement, vous pouvez utiliser la méthode activateMassClear() pour annuler l'interdiction d'effacement

enableMassClear()
none permet d'effacer les superpositions dans la méthode map.clearOverlays. (Nouveau depuis la 1.1)

Cependant, chaque marqueur doit être restauré, il doit donc être parcouru :

var allOverlay = map.getOverlays();
      for (var i = 0; i < allOverlay.length; i++) {
        allOverlay[i].enableMassClear();
      }
Cela restaure les opérations effaçables de toutes les superpositions.

Une simple configuration en trois étapes peut faire fonctionner efficacement le type de revêtement spécifié.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

vue.js implémente une boîte contextuelle unique

Explication détaillée de l'utilisation du trie javascript arbre de préfixes

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn