TLDR: J'ai une carte Openlayers avec une couche appelée 'track' Je veux enlever la trace et y ajouter une trace. Ou trouver comment tracer un triangle basé d'un ensemble de coordonnées & un en-tête (voir ci-dessous).Openlayers - LayerRedraw()/Rotation de traits/Linestring coords
I ont une image 'imageFeature' sur une couche qui tourne sur la charge à la direction étant fixée. Je veux mettre à jour cette rotation qui est définie dans 'styleMap' sur une couche appelée 'suivi'.
- Je mis le var 'StyleMap' pour appliquer la rotation de l'image externe &.
- 'imageFeature' est ajouté à la couche au niveau des coordonnées spécifiées.
- 'imageFeature' est supprimé. 'ImageFeature' est ajouté à nouveau dans son nouvel emplacement
- La rotation est pas appliquée ..
Comme le « styleMap » applique à la couche, je pense que je dois enlever la couche et l'ajouter à nouveau plutôt que le « imageFeature »
couche:
var tracking = new OpenLayers.Layer.GML("Tracking", "coordinates.json",
{ format: OpenLayers.Format.GeoJSON,
styleMap: styleMap
});
styleMap:
var styleMap = new OpenLayers.StyleMap({
fillOpacity: 1,
pointRadius: 10,
rotation: heading,
});
Maintenant Enveloppé dans une fonction chronométré le imageFeature:
map.layers[3].addFeatures(new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(longitude, latitude), {rotation: heading, type: parseInt(Math.random() * 3)}
));
type fait référence à une recherche de 1 de 3 images.:
styleMap.addUniqueValueRules("default", "type", lookup);
var lookup = {
0: {externalGraphic: "Image1.png", rotation: heading},
1: {externalGraphic: "Image2.png", rotation: heading},
2: {externalGraphic: "Image3.png", rotation: heading}
}
J'ai essayé la fonction 'redessiner()': mais il retourne "le suivi est indéfini" ou "map.layers [2]" est non défini.
tracking.redraw(true);
map.layers[2].redraw(true);
-tête est une variable: partir d'une charge de JSON.
var heading = 13.542;
Mais jusqu'à présent, rien ne fonctionne, cela ne fait que tourner l'image en charge. L'image se déplacera dans les coordonnées comme il se doit.
Alors qu'est-ce que je fais de mal avec la fonction de redessiner ou comment faire tourner cette image en direct?
Merci à l'avance
-Ozaki
Ajouter: Je réussi à obtenir
map.layers[2].redraw(true);
pour redessiner la couche 2. Mais sucessfully cela ne fonctionne toujours pas mis à jour la rotation. Je pense parce que le stylemap est en train de se mettre à jour. Mais il parcourt la carte de style toutes les secondes, mais aucune mise à jour de la rotation et la variable pour l'en-tête ne se met à jour correctement si je mets une montre dessus dans firebug.
Si je devais dessiner un triangle avec un tableau de points & linestring. Comment pourrais-je faire face au triangle vers le cap. J'ai le Lon/lat d'un point et le titre.
var points = new Array(
new OpenLayers.Geometry.Point(lon1, lat1),
new OpenLayers.Geometry.Point(lon2, lat2),
new OpenLayers.Geometry.Point(lon3, lat3)
);
var line = new OpenLayers.Geometry.LineString(points);
Vous cherchez un moyen de résoudre ce problème Image ou toute ligne savoir comment faire soit ajouté un 100rep bounty Je suis vraiment coincé avec cela.
//From getJSON request//
var heading = data.RawHeading;
Ajout et suppression de la imageFeature
map.layers[3].destroyFeatures();
map.layers[3].addFeatures(new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(longitude, latitude), {rotation: heading, type: parseInt(Math.random() * 3)}
), {rotation: heading});
Si je devais dessiner un triangle par programme. Comment ferais-je cela? J'ai une coordonnée Lat/Lon et le titre. Comment pourrais-je programmer le triangle pour faire face à la rubrique? – Sphvn
Voir ci-dessus: Même en rajoutant la fonction au lieu de la définir comme imageFeature, j'ai même essayé de redéfinir l'ensemble de la fonction qui l'ajoute et la déplace parfaitement. Mais PAS de rotation ... J'ai essayé de définir dans le Featre.Vector et le Geometry.point .. Toujours pas de chance. – Sphvn