TLDR : у меня есть карта Openlayers со слоем под названием «дорожка». Я хочу удалить дорожку и добавить дорожку обратно. Или выяснить, как построить треугольник на основе одного набора координат и заголовок (см. ниже).
У меня есть изображение 'imageFeature' на слое, который вращается при нагрузке в заданном направлении. Я хочу обновить это вращение, установленное в 'styleMap' на слое под названием 'tracking' .
- Я установил переменную 'stylemap' для применения внешнего изображения и поворота.
- 'imageFeature' добавляется к слою в указанных координатах.
- 'imageFeature' удалено.
- 'imageFeature' снова добавлено в новом месте. Вращение не применяется ..
Поскольку 'styleMap' применяется к слою, я думаю, что мне нужно удалить слой и добавить его снова, а не просто 'imageFeature'
Уровень
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,
});
Теперь обернут в синхронизированную функцию imageFeature :
map.layers[3].addFeatures(new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(longitude, latitude), {rotation: heading, type: parseInt(Math.random() * 3)}
));
Тип относится к поиску 1 из 3 изображений. :
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}
}
Я попробовал функцию 'redraw ()': , но она возвращает «отслеживание не определено» или «map.layers [2]» не определено.
tracking.redraw(true);
map.layers[2].redraw(true);
Заголовок является переменной: из ленты JSON.
var heading = 13.542;
Но пока что ничего не получится, он только повернет изображение при загрузке. Изображение будет двигаться в координатах, как и должно быть.
Так что же я делаю не так с функцией перерисовки или как мне заставить это изображение вращаться в реальном времени?
Заранее спасибо
-Ozaki
Добавить: Мне удалось получить
map.layers[2].redraw(true);
, чтобы успешно перерисовать слой 2. Но он все равно не обновляет вращение. Я думаю, потому что карта стилей обновляется. Но он пробегает карту стилей каждую n сек, но обновлений вращения нет, и переменная для заголовка корректно обновляется, если я помещаю часы в firebug.
Если бы я нарисовал треугольник с массивом точек и линий.
Как бы я пошел лицом к треугольнику в направлении заголовка.
У меня есть Lon / lat одной точки и заголовок.
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);
В поисках любого способа решения этой проблемы Изображение или строка, кто-нибудь знает, как сделать это, либо добавили награду 100rep Я действительно застрял с этим.
//From getJSON request//
var heading = data.RawHeading;
Добавление и удаление изображенияFeature
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});