0

Je travaille actuellement sur OpenLayers 3.Superpositions personnalisés dans OpenLayers 3

je superpositions personnalisées dans Google maps Javascript api v3 pour ajouter des marqueurs personnalisés comme div html sur la carte. Et ces marqueurs sont regroupés et tracés dans différents superpositions personnalisées.

Maintenant j'essaye d'implémenter la même chose dans OpenLayers 3, mais je n'ai pas trouvé de solution car les superpositions dans OpenLayers 3 prennent un marqueur dans une superposition. Puis-je grouper des superpositions dans OpenLayers 3 afin de regrouper les marqueurs? Ou y a-t-il d'autres options disponibles?

+0

Moi aussi, je fais face au même problème. Vous pouvez essayer leaflet.js ainsi –

+0

Mais j'ai besoin de la solution dans OpenLayers 3. – SHK

Répondre

0

Vous avez plusieurs options possibles.

A) Si vous avez seulement un jeu de données , alors vous pouvez utiliser un StyleFunction. Voir cette ol3 vector example, plus précisément cette section de code:

var vectorLayer = new ol.layer.Vector({ 
    source: new ol.source.Vector({ 
     url: 'https://openlayers.org/en/v3.20.1/examples/data/geojson/countries.geojson', 
     format: new ol.format.GeoJSON() 
    }), 
    style: function(feature, resolution) { 
     style.getText().setText(resolution < 5000 ? feature.get('name') : ''); 
     return style; 
    } 
    }); 

Voir la propriété style? Ce peut être un ol.style.Style ou une fonction de style, comme démontré ci-dessus. La fonction reçoit la fonction et la résolution actuelle de la vue en tant qu'argument et est appelée chaque fois que la fonction est rendue (ou rendue). Renvoyer un ol.style.Style ou un tableau d'objets de style rendra la fonction en utilisant le/ces styles.

La caractéristique peut avoir des propriétés uniques, c'est-à-dire feature.getProperties(). En utilisant autant de propriétés dans les entités, vous pouvez renvoyer un tableau unique d'objets de style uniques.

Voici un complex ol3 example featuring style functions plus que vous pouvez regarder et avoir un exemple de style dynamique en fonction de la résolution. Cela pourrait vous donner une meilleure idée de ce que vous pourriez faire avec les propriétés de la fonctionnalité.

B) Si vous avez plusieurs ensembles de données, vous pouvez créer une couche de vecteur par ensemble de données et définir un objet de style unique sur la couche, ce qui rendrait les caractéristiques tout de même.

+0

Merci pour votre réponse, mais j'ai besoin d'utiliser un div html pour chaque marqueur pour stocker des informations sur le marqueur. Je ne sais pas comment le style des superpositions peut aider avec ça. – SHK

+0

Si vous regardez l'exemple de vecteur ol3 (le même dans la réponse), vous verrez que lorsque vous passez la souris sur les pays, vous voyez les informations affichées. Ceux-ci sont rendus en utilisant ol.Feature, pas ol.Overlay. Je pense que cela pourrait être une bonne approche pour vous. –